Not
Å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 man 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 kolumnens nullbarhet inte specificeras i CREATE TABLE- och ALTER TABLE-satserna. När SET ANSI_NULL_DFLT_ON är ON tillåter nya kolumner skapade med ALTER TABLE- och CREATE TABLE-satserna 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åde SET ANSI_NULL_DFLT_OFF och SET 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 ställas PÅ, eller båda kan sättas AV. Om något av alternativen är PÅ, träder den inställningen (SET ANSI_NULL_DFLT_OFF eller SET 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 nullbarhetsinställningar är det bättre att ange NULL eller NOT NULL i CREATE TABLE- och ALTER TABLE-satserna.
SQL Server Native Client ODBC-drivrutinen och SQL Server Native Client OLE DB Provider för SQL Server sätter automatiskt ANSI_NULL_DFLT_ON till ON vid anslutning. Standard för SET ANSI_NULL_DFLT_ON är AVSTÄNGT för anslutningar från DB-Library applikationer.
När SET ANSI_DEFAULTS är PÅ, är SET ANSI_NULL_DFLT_ON aktiverat.
Inställningen för SET ANSI_NULL_DFLT_ON är inställd vid exekverings- eller körningstid och inte vid parsetid.
Inställningen 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)
SKAPA TABELL (Transact-SQL)
SET-instruktioner (Transact-SQL)
STÄLL ANSI_DEFAULTS (Transact-SQL)
SET ANSI_NULL_DFLT_OFF (Transact-SQL)