SQL Server hat einen ANSI_NULLS
Einstellung, die bestimmt, wie NULL
Werte werden beim Vergleich mit einem anderen Wert mit dem Equals (=
) und Ungleich (<>
) Vergleichsoperatoren.
Es stimmt zwar, dass Sie ANSI_NULLS
ändern können Einstellung auf Sitzungsebene (mithilfe von SET ANSI_NULLS
), hat jede Datenbank auch ihren eigenen ANSI_NULLS
Einstellung.
Sie können Ihre Datenbank überprüfen, um zu sehen, ob sie ANSI_NULLS
ist Einstellung ist ON
oder OFF
.
Um dies mit T-SQL zu tun, können Sie entweder die sys.databases
verwenden Katalogansicht oder DATABASEPROPERTYEX()
Funktion.
Die sys.databases
Anzeigen
Die sys.databases
Die Katalogansicht enthält viele Informationen zu jeder Datenbank in Ihrer SQL Server-Instanz.
Die folgende Abfrage gibt ANSI_NULLS
zurück Einstellung für die Music
Datenbank:
SELECT is_ansi_nulls_on
FROM sys.databases
WHERE name = 'Music';
Ergebnis:
+--------------------+ | is_ansi_nulls_on | |--------------------| | 1 | +--------------------+
In diesem Fall ANSI_NULLS
ist ON
für diese Datenbank.
Wir können es OFF
ausschalten so:
ALTER DATABASE Music
SET ANSI_NULLS OFF;
Sie können das WHERE
weglassen -Klausel bei Verwendung von sys.databases
Katalogansicht, um Daten für alle Datenbanken zurückzugeben. So:
SELECT
name,
is_ansi_nulls_on
FROM sys.databases
ORDER BY name ASC;
Diese Ansicht hat auch eine Spalte namens is_ansi_null_default_on
, der ANSI_NULL_DEFAULT
zurückgibt Einstellung für die Datenbank.
Der ANSI_NULL_DEFAULT
Die Einstellung bestimmt den Standardwert, NULL
oder NOT NULL
, eines Spalten- oder CLR-benutzerdefinierten Typs, für den die NULL-Zulässigkeit nicht explizit in CREATE TABLE
definiert ist oder ALTER TABLE
Aussagen.
Wir könnten das vorherige Beispiel so ändern, dass es diese Spalte enthält:
SELECT
name,
is_ansi_nulls_on,
is_ansi_null_default_on
FROM sys.databases
ORDER BY name ASC;
Der DATABASEPROPERTYEX()
Funktion
Eine andere Möglichkeit, diese Einstellungen zu überprüfen, ist mit DATABASEPROPERTYEX()
Funktion.
So prüfen Sie den ANSI_NULLS
Einstellung für die Music
DB:
SELECT DATABASEPROPERTYEX('Music','IsAnsiNullsEnabled');
Ergebnis:
+--------------------+ | (No column name) | |--------------------| | 0 | +--------------------+
Es ist jetzt 0
für OFF
weil ich es auf OFF
gesetzt habe in einem vorherigen Beispiel.
Um den ANSI_NULL_DEFAULT
zu überprüfen tun Sie dies:
SELECT DATABASEPROPERTYEX('Music','IsAnsiNullDefault');
Ergebnis:
+--------------------+ | (No column name) | |--------------------| | 1 | +--------------------+