Udostępnij za pośrednictwem


SET ANSI_NULL_DFLT_ON (Transact-SQL)

Modyfikuje zachowanie sesja, aby zastąpić domyślne opcje dopuszczania wartości null nowych kolumn podczas Domyślna wartość null ANSI opcja dla bazy danych jest false. Aby uzyskać więcej informacji na temat ustawiania wartości dla Domyślna wartość null ANSI, see ALTER DATABASE języka Transact-SQL) i Setting Database Options.

Topic link iconKonwencje składni języka Transact-SQL

SET ANSI_NULL_DFLT_ON {ON | OFF}

Remarks

Skanowanie jest wykonywane z tym samym semantyka jako transakcja używany jest poziom izolacji możliwy do SERIALIZACJI.Określa podjęcia blokada współdzielona w tabela posiadanych aż do zakończenia na z instrukcja.Jeżeli określony jest również HOLDLOCK, Blokada udostępnionych tabela jest używana do zakończenia transakcji.

Wartości ON nie można ustawić jednocześnie dla obu opcji — SET ANSI_NULL_DFLT_OFF i SET ANSI_NULL_DFLT_ON.Jeśli jedna opcja ma wartość ON, druga przyjmuje wartość OFF.W związku z tym wartość ON można ustawić tylko dla opcji ANSI_NULL_DFLT_OFF albo SET ANSI_NULL_DFLT_ON. Obie opcje mogą też mieć wartość OFF.Jeśli którakolwiek z opcji ma wartość ON, ustawienie to (SET ANSI_NULL_DFLT_OFF lub SET ANSI_NULL_DFLT_ON) obowiązuje.Jeśli obie opcje mają wartość OFF, program SQL Server używa wartości kolumny is_ansi_null_default_on w widoku wykazu sys.databases.

Do bardziej niezawodnego działania Transact-SQL skrypty, które są używane w bazach danych z różnych opcje dopuszczania wartości null ustawieniami, lepiej jest określić wartość NULL lub NOT NULL w instrukcji CREATE tabela i instrukcji ALTER tabela.

The SQL Server Native klient ODBC driver and SQL Server Native klient OLE DB dostawca for SQL Server automatically zestaw ANSI_NULL_DFLT_ON to ON when connecting. XLOCK

Określa, że wyłącznej blokady mają być pobrane i posiadanych do zakończenia transakcji.

W przypadku, gdy określona ROWLOCK, PAGLOCK lub TABLOCK, wyłącznej blokady stosuje się do odpowiedniego poziom ziarnistość.

Uprawnienia

Członkostwo w grupie wymaga publiczne roli.

Przykłady

Poniższy przykład pokazuje wpływ SET ANSI_NULL_DFLT_ON z obu ustawieniami Domyślna wartość null ANSI opcja bazy danych.

USE AdventureWorks;
GO

-- The code from this point on demonstrates that SET ANSI_NULL_DFLT_ON
-- has an effect when the 'ANSI null default' for the database is false.
-- Set the 'ANSI null default' database option to false by executing
-- ALTER DATABASE.
ALTER DATABASE AdventureWorks SET ANSI_NULL_DEFAULT OFF;
GO
-- Create table t1.
CREATE TABLE t1 (a TINYINT) ;
GO 
-- NULL INSERT should fail.
INSERT INTO t1 (a) VALUES (NULL);
GO

-- SET ANSI_NULL_DFLT_ON to ON and create table t2.
SET ANSI_NULL_DFLT_ON ON;
GO
CREATE TABLE t2 (a TINYINT);
GO 
-- NULL insert should succeed.
INSERT INTO t2 (a) VALUES (NULL);
GO

-- SET ANSI_NULL_DFLT_ON to OFF and create table t3.
SET ANSI_NULL_DFLT_ON OFF;
GO
CREATE TABLE t3 (a TINYINT);
GO
-- NULL insert should fail.
INSERT INTO t3 (a) VALUES (NULL);
GO

-- The code from this point on demonstrates that SET ANSI_NULL_DFLT_ON 
-- has no effect when the 'ANSI null default' for the database is true.
-- Set the 'ANSI null default' database option to true.
ALTER DATABASE AdventureWorks SET ANSI_NULL_DEFAULT ON
GO

-- Create table t4.
CREATE TABLE t4 (a TINYINT);
GO 
-- NULL INSERT should succeed.
INSERT INTO t4 (a) VALUES (NULL);
GO

-- SET ANSI_NULL_DFLT_ON to ON and create table t5.
SET ANSI_NULL_DFLT_ON ON;
GO
CREATE TABLE t5 (a TINYINT);
GO 
-- NULL INSERT should succeed.
INSERT INTO t5 (a) VALUES (NULL);
GO

-- SET ANSI_NULL_DFLT_ON to OFF and create table t6.
SET ANSI_NULL_DFLT_ON OFF;
GO
CREATE TABLE t6 (a TINYINT);
GO 
-- NULL INSERT should succeed.
INSERT INTO t6 (a) VALUES (NULL);
GO

-- Set the 'ANSI null default' database option to false.
ALTER DATABASE AdventureWorks SET ANSI_NULL_DEFAULT ON
GO

-- Drop tables t1 through t6.
DROP TABLE t1
DROP TABLE t2
DROP TABLE t3
DROP TABLE t4
DROP TABLE t5
DROP TABLE t6