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 | +--------------------+