Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come trovare l'impostazione ANSI_NULLS di un database in SQL Server (T-SQL)

SQL Server ha un ANSI_NULLS impostazione che determina come NULL i valori vengono valutati rispetto a un altro valore con Equals (= ) e diverso da (<> ) operatori di confronto.

Mentre è vero che puoi cambiare il ANSI_NULLS impostazione a livello di sessione (usando SET ANSI_NULLS ), ogni database ha anche il proprio ANSI_NULLS impostazione.

Puoi controllare il tuo database per vedere se è ANSI_NULLS l'impostazione è ON o OFF .

Per farlo con T-SQL, puoi usare il sys.databases vista del catalogo o il DATABASEPROPERTYEX() funzione.

Il sys.databases Visualizza

Il sys.databases la visualizzazione catalogo contiene molte informazioni su ogni database nell'istanza di SQL Server.

La query seguente restituisce ANSI_NULLS impostazione per Music banca dati:

SELECT is_ansi_nulls_on 
FROM sys.databases
WHERE name = 'Music';

Risultato:

+--------------------+
| is_ansi_nulls_on   |
|--------------------|
| 1                  |
+--------------------+

In questo caso, ANSI_NULLS è ON per questo database.

Possiamo disattivarlo OFF così:

ALTER DATABASE Music
SET ANSI_NULLS OFF;

Puoi eliminare il WHERE clausola quando si utilizza sys.databases vista catalogo per restituire i dati per tutti i database. In questo modo:

SELECT 
    name,
    is_ansi_nulls_on 
FROM sys.databases
ORDER BY name ASC;

Questa vista ha anche una colonna chiamata is_ansi_null_default_on , che restituisce il ANSI_NULL_DEFAULT impostazione per il database.

Il ANSI_NULL_DEFAULT l'impostazione determina il valore predefinito, NULL o NOT NULL , di una colonna o di un tipo CLR definito dall'utente per il quale la capacità di valori Null non è definita in modo esplicito in CREATE TABLE o ALTER TABLE dichiarazioni.

Potremmo modificare l'esempio precedente per includere questa colonna:

SELECT
    name,
    is_ansi_nulls_on,
    is_ansi_null_default_on
FROM sys.databases
ORDER BY name ASC;

Il DATABASEPROPERTYEX() Funzione

Un altro modo per controllare queste impostazioni è con il DATABASEPROPERTYEX() funzione.

Ecco come controllare il ANSI_NULLS impostazione per Music DB:

SELECT DATABASEPROPERTYEX('Music','IsAnsiNullsEnabled');

Risultato:

+--------------------+
| (No column name)   |
|--------------------|
| 0                  |
+--------------------+

Ora è 0 per OFF perché l'ho impostato su OFF in un esempio precedente.

Per controllare il ANSI_NULL_DEFAULT impostazione, procedere come segue:

SELECT DATABASEPROPERTYEX('Music','IsAnsiNullDefault');

Risultato:

+--------------------+
| (No column name)   |
|--------------------|
| 1                  |
+--------------------+