Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-adatbázis a Microsoft Fabricben
Módosítja az ülés viselkedését, hogy felülírja az új oszlopok alapértelmezett nullititását, ha az ANSI null alapértelmezett opció az adatbázis esetében hamis. További információért az ANSI null alapértelmezett értékének beállításáról lásd ALTER DATABASE (Transact-SQL)
Transact-SQL szintaxis konvenciók
Szemantika
-- Syntax for SQL Server and Azure SQL Database and Microsoft Fabric
SET ANSI_NULL_DFLT_ON {ON | OFF}
-- Syntax for Azure Synapse Analytics
SET ANSI_NULL_DFLT_ON ON
Megjegyzések
Ez a beállítás csak akkor befolyásolja az új oszlopok nullitását, ha az oszlop nullithatósága nincs megadva az CREATE TABLE and ALTER TABLE utasításokban. Amikor SETSET ANSI_NULL_DFLT_ON ON, az és utasítások használatával létrehozott új oszlopok ALTER TABLECREATE TABLE nullértékeket engedélyeznek, ha az oszlop nullabilitási státusza nincs kifejezetten megadva. SET ANSI_NULL_DFLT_ON nem érinti azokat az oszlopokat, amelyeket explicit NULL vagy NOT NULL jelzéssel hoztak létre.
Mindkettő SETSET ANSI_NULL_DFLT_OFFSETSET ANSI_NULL_DFLT_ON és nem lehet egyszerre bekapcsolni. Ha az egyik opció bekapcsolva van, a másik KIKAPCSOLVA. Ezért bármelyik ANSI_NULL_DFLT_OFF vagy ANSI_NULL_DFLT_ON bekapcsolt vagy BEKAPCSOLHATÓ lehet. Ha bármelyik opció BEKAPCSOLVA, az a beállítás (SETSET ANSI_NULL_DFLT_OFF vagy SETSET ANSI_NULL_DFLT_ON) lép életbe. Ha mindkét opció KI van kapcsolva, az SQL Server a sys.databases katalógusnézetben a is_ansi_null_default_on oszlop értékét használja.
A különböző nullability beállításokkal rendelkező adatbázisokban használt Transact-SQL szkriptek megbízhatóbb működtetéséhez jobb megadni a NULL vagy NOT NULL in CREATE TABLE és ALTER TABLE utasításokat.
Az SQL Server natív ügyfél ODBC-illesztőprogramja és az SQL Server natív ügyféloldali OLE DB-szolgáltatója az SQL Serverhez csatlakozáskor automatikusan BE értékre van állítva ANSI_NULL_DFLT_ON . Az alapértelmezett a SET ANSI_NULL_DFLT_ON KIKAPCSOLT DB-Library alkalmazások kapcsolatainál.
Amikor SETSET ANSI_DEFAULTS BEKAPCSOLT, SETSET ANSI_NULL_DFLT_ON engedélyezve van.
A SET ANSI_NULL_DFLT_ON beállítása végrehajtáskor vagy futtatáskor van beállítva, és nem elemzési időpontban.
A beállítás SET ANSI_NULL_DFLT_ON nem érvényes, ha a táblákat a SELECT INTO utasítással hozzuk létre.
A jelenlegi beállítás megtekintéséhez futtasd le a következő lekérdezést.
DECLARE @ANSI_NULL_DFLT_ON VARCHAR(3) = 'OFF';
IF ( (1024 & @@OPTIONS) = 1024 ) SET @ANSI_NULL_DFLT_ON = 'ON';
SELECT @ANSI_NULL_DFLT_ON AS ANSI_NULL_DFLT_ON;
Permissions
A nyilvános szerepkör tagságát igényli.
Példák
Az alábbi példa bemutatja mindkét SET ANSI_NULL_DFLT_ON beállítás hatásait az ANSI null alapértelmezett adatbázis opció esetén.
USE AdventureWorks2022;
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 AdventureWorks2022 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 AdventureWorks2022 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 AdventureWorks2022 SET ANSI_NULL_DEFAULT ON;
GO
-- Drop tables t1 through t6.
DROP TABLE t1,t2,t3,t4,t5,t6;