sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man hittar en databas ANSI_NULLS-inställning i SQL Server (T-SQL)

SQL Server har en ANSI_NULLS inställning som bestämmer hur NULL värden utvärderas jämfört med ett annat värde med Equals (= ) och Inte lika med (<> ) jämförelseoperatorer.

Även om det är sant att du kan ändra ANSI_NULLS inställning på sessionsnivå (med SET ANSI_NULLS ), har varje databas också sin egen ANSI_NULLS inställning.

Du kan kontrollera din databas för att se om dess ANSI_NULLS inställningen är ON eller AV .

För att göra detta med T-SQL kan du antingen använda sys.databases katalogvy eller DATABASEPROPERTYEX() funktion.

sys.databases Visa

sys.databases katalogvyn innehåller mycket information om varje databas i din SQL Server-instans.

Följande fråga returnerar ANSI_NULLS inställning för Musik databas:

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

Resultat:

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

I det här fallet, ANSI_NULLS är för denna databas.

Vi kan stänga av den AV så här:

ALTER DATABASE Music
SET ANSI_NULLS OFF;

Du kan ta bort WHERE sats när du använder sys.databases katalogvy för att returnera data för alla databaser. Så här:

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

Den här vyn har också en kolumn som heter is_ansi_null_default_on , som returnerar ANSI_NULL_DEFAULT inställning för databasen.

ANSI_NULL_DEFAULT inställningen bestämmer standardvärdet, NULL eller NOT NULL , av en kolumn eller CLR användardefinierad typ för vilken nollbarheten inte är uttryckligen definierad i SKAPA TABELL eller ÄNDRA TABELL uttalanden.

Vi skulle kunna modifiera det föregående exemplet för att inkludera denna kolumn:

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

DATABASEPROPERTYEX() Funktion

Ett annat sätt att kontrollera dessa inställningar är med DATABASEPROPERTYEX() funktion.

Så här kontrollerar du ANSI_NULLS inställning för Musik DB:

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

Resultat:

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

Det är nu 0 för AV eftersom jag ställer in den på OFF i ett tidigare exempel.

För att kontrollera ANSI_NULL_DEFAULT gör så här:

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

Resultat:

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

  1. Kan inte dekryptera med pgcrypto från AES-256-CBC men AES-128-CBC är OK

  2. MySQL i molnet - För- och nackdelar med Amazon RDS

  3. Hur skriver man ett REST API?

  4. Konfigurera en fjärransluten MySQL-databasanslutning