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
Ändrar sessionens beteende för att åsidosätta standardnullbarhet för nya kolumner när ANSI:s nullstandardalternativ för databasen är sant. 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_OFF { ON | OFF }
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse
SET ANSI_NULL_DFLT_OFF OFF
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. Som standard, när SET ANSI_NULL_DFLT_OFF är PÅ, är nya kolumner som skapas med ALTER TABLE- och CREATE TABLE-satserna INTE NULL om kolumnens nullbarhetsstatus inte är uttryckligen specificerad. SET ANSI_NULL_DFLT_OFF påverkar inte kolumner som skapas genom att använda 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 SET ANSI_NULL_DFLT_ON ställas in 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 nullabilitetsinställningar är det bättre att alltid ange NULL eller NOT NULL i CREATE TABLE- och ALTER TABLE-satserna.
Inställningen för SET ANSI_NULL_DFLT_OFF är inställd vid exekverings- eller körtid och inte vid parsetid.
För att se den aktuella inställningen för denna inställning, kör följande fråga.
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;
Permissions
Kräver medlemskap i den offentliga rollen.
Examples
Följande exempel visar effekterna av SET ANSI_NULL_DFLT_OFF med båda inställningarna för ANSI:s null-standarddatabas.
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;
Se även
ALTER TABLE (Transact-SQL)
SKAPA TABELL (Transact-SQL)
SET-instruktioner (Transact-SQL)
STÄLL ANSI_NULL_DFLT_ON (Transact-SQL)