Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Система платформы аналитики (PDW)
Конечная точка SQL аналитики в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Изменяет поведение сеанса, чтобы переопределить допустимость значений NULL по умолчанию в новых столбцах, если параметр ANSI null default базы данных имеет значение true. Для получения дополнительной информации о настановке значения ANSI null по умолчанию см.ALTER DATABASE (Transact-SQL).
Соглашения о синтаксисе Transact-SQL
Синтаксис
-- Syntax for SQL Server and Azure SQL Database and Microsoft Fabric
SET ANSI_NULL_DFLT_OFF { ON | OFF }
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse
SET ANSI_NULL_DFLT_OFF OFF
Замечания
Эта настройка влияет на нулевость новых столбцов только тогда, когда нулевость столбца не указана в CREATE TABLE операторах and ALTER TABLE . По умолчанию, когда SETSET ANSI_NULL_DFLT_OFF ВКЛЮЧЕНО, новые столбцы, созданные с помощью ALTER TABLE операторов and CREATE TABLE , НЕ являются NULL, если статус нуллируемости столбца явно не указан. SET ANSI_NULL_DFLT_OFF не затрагивает столбцы, созданные явным NULL или NOT NULL.
И то, SETSET ANSI_NULL_DFLT_OFFSETSET ANSI_NULL_DFLT_ON и другое нельзя включить одновременно. Если один параметр установлен в ON, то другой установлен в OFF. Таким образом, можно включить или ANSI_NULL_DFLT_OFFSETSET ANSI_NULL_DFLT_ON включить, либо оба могут быть отключены. Если любой из вариантов ВКЛЮЧЕН, эта настройка (SETSET ANSI_NULL_DFLT_OFF или SETSET ANSI_NULL_DFLT_ON) вступает в силу. Если оба параметра заданы OFF, SQL Server использует значение столбца is_ansi_null_default_on в представлении каталога sys.database .
Для более надёжной работы Transact-SQL скриптов, используемых в базах данных с разными настройками нуллируемости, лучше всегда указывать NULL или NOT NULL в CREATE TABLE и ALTER TABLE операторах.
Параметр SET ANSI_NULL_DFLT_OFF устанавливается во время выполнения или выполнения, а не во время синтаксического анализа.
Чтобы просмотреть текущее значение для этого параметра, выполните следующий запрос.
DECLARE @ANSI_NULL_DFLT_OFF VARCHAR(3) = 'OFF';
IF ( (2048 & @@OPTIONS) = 2048 ) SET @ANSI_NULL_DFLT_OFF = 'ON';
SELECT @ANSI_NULL_DFLT_OFF AS ANSI_NULL_DFLT_OFF;
Разрешения
Требуется членство в роли public.
Примеры
Следующий пример демонстрирует действие команды SET ANSI_NULL_DFLT_OFF с обеими настройками для параметра базы данных ANSI null default.
USE AdventureWorks2022;
GO
-- Set the 'ANSI null default' database option to true by executing
-- ALTER DATABASE.
GO
ALTER DATABASE AdventureWorks2022 SET ANSI_NULL_DEFAULT ON;
GO
-- Create table t1.
CREATE TABLE t1 (a TINYINT);
GO
-- NULL INSERT should succeed.
INSERT INTO t1 (a) VALUES (NULL);
GO
-- SET ANSI_NULL_DFLT_OFF to ON and create table t2.
SET ANSI_NULL_DFLT_OFF ON;
GO
CREATE TABLE t2 (a TINYINT);
GO
-- NULL INSERT should fail.
INSERT INTO t2 (a) VALUES (NULL);
GO
-- SET ANSI_NULL_DFLT_OFF to OFF and create table t3.
SET ANSI_NULL_DFLT_OFF OFF;
GO
CREATE TABLE t3 (a TINYINT) ;
GO
-- NULL INSERT should succeed.
INSERT INTO t3 (a) VALUES (NULL);
GO
-- This illustrates the effect of having both the database
-- option and SET option disabled.
-- Set the 'ANSI null default' database option to false.
ALTER DATABASE AdventureWorks2022 SET ANSI_NULL_DEFAULT OFF;
GO
-- Create table t4.
CREATE TABLE t4 (a TINYINT) ;
GO
-- NULL INSERT should fail.
INSERT INTO t4 (a) VALUES (NULL);
GO
-- SET ANSI_NULL_DFLT_OFF to ON and create table t5.
SET ANSI_NULL_DFLT_OFF ON;
GO
CREATE TABLE t5 (a TINYINT);
GO
-- NULL insert should fail.
INSERT INTO t5 (a) VALUES (NULL);
GO
-- SET ANSI_NULL_DFLT_OFF to OFF and create table t6.
SET ANSI_NULL_DFLT_OFF OFF;
GO
CREATE TABLE t6 (a TINYINT);
GO
-- NULL insert should fail.
INSERT INTO t6 (a) VALUES (NULL);
GO
-- Drop tables t1 through t6.
DROP TABLE t1, t2, t3, t4, t5, t6;