Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analysplattformssystem (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Lager i Microsoft Fabric
SQL-databas i Microsoft Fabric
Modifierar sessionens beteende för att åsidosätta standardnullbarhet för nya kolumner när ANSI:s nullinställning för databasen är falsk. För mer information om hur du sätter värdet för ANSI null default, se ALTER DATABASE (Transact-SQL).
Transact-SQL syntaxkonventioner
Syntax
-- Syntax for SQL Server and Azure SQL Database and Microsoft Fabric
SET ANSI_NULL_DFLT_ON {ON | OFF}
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse
SET ANSI_NULL_DFLT_ON ON
Anmärkningar
Denna inställning påverkar endast nullbarheten för nya kolumner när nullbarheten för kolumnen inte specificeras i CREATE TABLE och-satserna ALTER TABLE . När SETSET ANSI_NULL_DFLT_ON är PÅ tillåter nya kolumner skapade med och-satserna ALTER TABLECREATE TABLE nullvärden om kolumnens nullbarhetsstatus inte uttryckligen specificeras. SET ANSI_NULL_DFLT_ON påverkar inte kolumner skapade med en explicit NULL eller NOT NULL.
Båda SETSET ANSI_NULL_DFLT_OFF och SETSET ANSI_NULL_DFLT_ON kan inte ställas PÅ samtidigt. Om ett alternativ är PÅ, är det andra alternativet AV. Därför kan antingen ANSI_NULL_DFLT_OFF eller ANSI_NULL_DFLT_ON sättas PÅ, eller båda kan sättas AV. Om något av alternativen är PÅ, träder den inställningen (SETSET ANSI_NULL_DFLT_OFF eller SETSET ANSI_NULL_DFLT_ON) i kraft. Om båda alternativen är avstängda använder SQL Server värdet i kolumnen is_ansi_null_default_on i sys.databases-katalogvyn .
För en mer tillförlitlig funktion av Transact-SQL skript som används i databaser med olika nullabilitetsinställningar är det bättre att specificera NULL eller NOT NULL i CREATE TABLE och ALTER TABLE satser.
SQL Server Native Client ODBC-drivrutinen och SQL Server Native Client OLE DB-providern för SQL Server anges ANSI_NULL_DFLT_ON automatiskt till PÅ vid anslutning. Standardinställningen för SET ANSI_NULL_DFLT_ON är AV för anslutningar från DB-Library applikationer.
När SETSET ANSI_DEFAULTS är PÅ SETSET ANSI_NULL_DFLT_ON är aktiverat.
Inställningen för SET ANSI_NULL_DFLT_ON anges vid körnings- eller körningstid och inte vid parsningstid.
Inställningen av SET ANSI_NULL_DFLT_ON gäller inte när tabeller skapas med SELECT INTO-satsen.
För att se den aktuella inställningen för denna inställning, kör följande fråga.
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
Kräver medlemskap i offentlig roll.
Examples
Följande exempel visar effekterna av SET ANSI_NULL_DFLT_ON med båda inställningarna för ANSI:s null-standarddatabas .
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;
Se även
ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
SET Instruktioner (Transact-SQL)
SET ANSI_DEFAULTS (Transact-SQL)
SET ANSI_NULL_DFLT_OFF (Transact-SQL)