SET-satser (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Microsoft Fabric

Transact-SQL programmeringsspråket tillhandahåller flera SET-satser som ändrar den aktuella sessionens hantering av specifik information. SET-satserna grupperas i kategorierna som visas i följande tabell.

För information om hur man sätter lokala variabler med SET-satsen, se SET @local_variable (Transact-SQL).

Kategori Utdrag
Datum- och tiduppgifter BESTÄMT DATUM FÖRST

BESTÄMT DATUMFORMAT
Låsningssatser STÄLL DEADLOCK_PRIORITY

STÄLL LOCK_TIMEOUT
Diverse instruktioner STÄLL CONCAT_NULL_YIELDS_NULL

STÄLL CURSOR_CLOSE_ON_COMMIT

SÄTT FIPS_FLAGGER

STÄLL IDENTITY_INSERT

SETSPRÅK

SET-KOMPENSATIONER

STÄLL QUOTED_IDENTIFIER
Frågeexekveringssatser SET ARITHABORT

SETARITIGNORER

SET ENDAST PÅ FMT
Obs: Denna funktion kommer att tas bort i en framtida version av SQL Server. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen.

SET NOCOUNT

SET NOEXEC

STÄLL NUMERIC_ROUNDABORT

SET PARSEONLY

STÄLL QUERY_GOVERNOR_COST_LIMIT

SET RESULT SET CACHING (Förhandsvisning)
Obs: Denna funktion gäller endast Azure Synapse Analytics.

SÄTT RADANTAL

ANGE TEXTSTORLEK
ISO-inställningarna STÄLL ANSI_DEFAULTS

STÄLL ANSI_NULL_DFLT_OFF

STÄLL ANSI_NULL_DFLT_ON

STÄLL ANSI_NULLS

STÄLL ANSI_PADDING

STÄLL ANSI_WARNINGS
Statistikuppgifter SÄTT KRAFTPLAN

STÄLL SHOWPLAN_ALL

STÄLL SHOWPLAN_TEXT

STÄLL SHOWPLAN_XML

SETSTATISTIK IO

STÄLL IN STATISTIK XML

ANGE STATISTIKPROFIL

SÄTT STATISTIKTID
Transaktionsrapporter ANGE IMPLICIT_TRANSACTIONS

STÄLL REMOTE_PROC_TRANSACTIONS

ANGE TRANSAKTIONSISOLERINGSNIVÅ

STÄLL XACT_ABORT

Överväganden när du använder SET-satserna

  • Alla SET-satser körs vid exekvering eller körning, utom dessa satser som körs vid parsetid:

    • SÄTT FIPS_FLAGGER
    • SET-KOMPENSATIONER
    • ANGE PARSEONLY
    • och SET QUOTED_IDENTIFIER
  • Om ett SET-kommando körs i en lagrad propud eller trigger återställs värdet på SET-alternativet efter att den lagrade proceduren eller triggern återfått kontrollen. Om du dessutom specificerar en SET-sats i en dynamisk SQL-sträng som körs med antingen sp_executesql eller EXECUTE, återställs värdet av SET-alternativet efter att kontrollen återvänt från den batch du angav i den dynamiska SQL-strängen.

  • Lagrade procedurer exekveras med de SET-inställningar som anges vid exekveringstillfället, förutom SET ANSI_NULLS och SET QUOTED_IDENTIFIER. Lagrade procedurer som specificerar SET ANSI_NULLS eller SET QUOTED_IDENTIFIER använda den inställning som anges vid skapandet av lagrad procedur. Om det används i en lagrad procedur ignoreras alla SET-inställningar.

  • Användarinställningensp_configure möjliggör serveromfattande inställningar och fungerar över flera databaser. Denna inställning fungerar också som en explicit SET-sats, förutom att den sker vid inloggning.

  • Databasinställningar som sätts med ALTER DATABASE är giltiga endast på databasnivå och träder endast i kraft om de uttryckligen är inställda. Databasinställningar åsidosätter instansinställningar som sätts genom att använda sp_configure.

  • Om en SET-sats använder ON och OFF kan du ange någon av dem för flera SET-alternativ.

    Anmärkning

    Detta gäller inte för statistikrelaterade SET-alternativ.

    Till exempel SET QUOTED_IDENTIFIER, ANSI_NULLS ON ställer både QUOTED_IDENTIFIER och ANSI_NULLS till PÅ.

  • SET-satsinställningar åsidosätter identiska databasoptionsinställningar som sätts med hjälp av ALTER DATABASE. Till exempel kommer värdet som anges i en SET ANSI_NULLS-sats att åsidosätta databasinställningen för ANSI_NULLs. Dessutom sätts vissa anslutningsinställningar automatiskt PÅ när en användare ansluter till en databas baserat på de värden som gäller vid tidigare användning av sp_configure användarinställningar , eller de värden som gäller för alla ODBC- och OLE/DB-anslutningar.

  • ALTER, CREATE och DROP DATABASE-satser hedrar inte inställningen SET LOCK_TIMEOUT.

  • När ett globalt eller genvägs-SET-sats sätter flera inställningar, återställer genvägs-SET-satsen tidigare inställningar för alla de alternativ som genvägssatsen SET påverkar. Om ett SET-alternativ som påverkas av en genvägssats SET sätts efter att genvägssatsen SET har utfärdats, åsidosätter den individuella SET-satsen de jämförbara genvägsinställningarna. Ett exempel på en genvägssats SET skulle vara SET ANSI_DEFAULTS.

  • När batcher används bestäms databasens kontext av den batch som upprättas med hjälp av USE-satsen. Oplanerade frågor och alla andra satser som körs utanför den lagrade proceduren och som är i batcher ärver optioninställningarna för databasen och anslutningen som etableras av USE-satsen.

  • Flera Active Result Set (MARS)-förfrågningar delar ett globalt tillstånd som innehåller de senaste sessionsinställningarna för SET-alternativet. När varje förfrågan körs kan den ändra SET-alternativen. Ändringarna är specifika för den förfrågningskontext där de är satta och påverkar inte andra samtidiga MARS-förfrågningar. Men efter att förfrågan är klar kopieras de nya SET-alternativen till det globala sessionstillståndet. Nya förfrågningar som körs under samma session efter denna ändring kommer att använda dessa nya SET-inställningar.

  • När en lagrad procedur körs från en batch eller från en annan lagrad procedur körs den under de valvalsvärden som är inställda i databasen som har den lagrade proceduren. Till exempel, när lagrad procedur db1.dbo.sp1 anropar lagrad procedur db2.dbo.sp2, exekveras lagrad procedur sp1 under den aktuella kompatibilitetsnivåinställningen databas db1, och lagrad procedur sp2 utförs under den aktuella kompatibilitetsnivåinställningen databas db2.

  • När ett Transact-SQL-uttalande rör objekt som finns i flera databaser, gäller den aktuella databaskontexten och den aktuella anslutningskontexten för det uttalandet. I detta fall, om Transact-SQL sats är i en batch, är den aktuella anslutningskontexten databasen som definieras av USE-satsen; Om Transact-SQL-satsen finns i en lagrad procedur är anslutningskontexten databasen som innehåller den lagrade proceduren.

  • När du skapar och manipulerar index på beräknade kolumner eller indexerade vyer måste du sätta dessa SET-alternativ till ON: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING och ANSI_WARNINGS. Ställ in alternativet NUMERIC_ROUNDABORT på AV.

    Om du inte sätter något av dessa alternativ till de nödvändiga värdena, kommer INSERT, UPDATE, DELETE, DBCC CHECKDB och DBCC CHECKTABLE-åtgärder på indexerade vyer eller tabeller med index på beräknade kolumner att misslyckas. SQL Server ger ett felmeddelande som listar alla fel inställda alternativ. Dessutom kommer SQL Server att bearbeta SELECT-satser på dessa tabeller eller indexerade vyer som om indexen på beräknade kolumner eller på vyerna inte existerar.

  • När SET RESULT_SET_CACHING är PÅ aktiveras resultatcachefunktionen för den aktuella klientsessionen. Result_set_caching kan inte slås på för en session om den är AVSTÄNGD på databasnivå. När SET RESULT_SET_CACHING är AV inaktiveras funktionen för att cache för resultatset för den aktuella klientsessionen. Att ändra denna miljö kräver medlemskap i den offentliga rollen. Gäller för: Azure Synapse Analytics Gen2