SQL Server има ANSI_NULLS настройка, която определя как NULL Стойностите се оценяват, когато се сравняват с друга стойност с Equals (= ) и не е равно на (<> ) оператори за сравнение.
Въпреки че е вярно, че можете да промените ANSI_NULLS настройка на ниво сесия (използвайки SET ANSI_NULLS ), всяка база данни също има свой собствен ANSI_NULLS настройка.
Можете да проверите вашата база данни, за да видите дали е ANSI_NULLS настройката е ON или OFF .
За да направите това с T-SQL, можете да използвате или sys.databases изглед на каталог или DATABASEPROPERTYEX() функция.
sys.databases Преглед
sys.databases изгледът на каталог съдържа много информация за всяка база данни във вашия екземпляр на SQL Server.
Следната заявка връща ANSI_NULLS настройка за Music база данни:
SELECT is_ansi_nulls_on
FROM sys.databases
WHERE name = 'Music'; Резултат:
+--------------------+ | is_ansi_nulls_on | |--------------------| | 1 | +--------------------+
В този случай ANSI_NULLS е ON за тази база данни.
Можем да го изключим OFF така:
ALTER DATABASE Music
SET ANSI_NULLS OFF;
Можете да премахнете WHERE клауза при използване на sys.databases каталожен изглед за връщане на данни за всички бази данни. Като това:
SELECT
name,
is_ansi_nulls_on
FROM sys.databases
ORDER BY name ASC;
Този изглед също има колона, наречена is_ansi_null_default_on , който връща ANSI_NULL_DEFAULT настройка за базата данни.
ANSI_NULL_DEFAULT настройката определя стойността по подразбиране, NULL или NOT NULL , от колона или CLR дефиниран от потребителя тип, за който възможността за нулиране не е изрично дефинирана в CREATE TABLE или ALTER TABLE изявления.
Бихме могли да модифицираме предишния пример, за да включим тази колона:
SELECT
name,
is_ansi_nulls_on,
is_ansi_null_default_on
FROM sys.databases
ORDER BY name ASC; DATABASEPROPERTYEX() Функция
Друг начин да проверите тези настройки е с DATABASEPROPERTYEX() функция.
Ето как да проверите ANSI_NULLS настройка за Music DB:
SELECT DATABASEPROPERTYEX('Music','IsAnsiNullsEnabled'); Резултат:
+--------------------+ | (No column name) | |--------------------| | 0 | +--------------------+
Сега е 0 за OFF защото го настроих на OFF в предишен пример.
За да проверите ANSI_NULL_DEFAULT настройка, направете това:
SELECT DATABASEPROPERTYEX('Music','IsAnsiNullDefault'); Резултат:
+--------------------+ | (No column name) | |--------------------| | 1 | +--------------------+