Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So finden Sie die ANSI_NULLS-Einstellung einer Datenbank in SQL Server (T-SQL)

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