SET Uttalanden (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

Programmeringsspråket Transact-SQL tillhandahåller flera SET satser som ändrar den aktuella sessionhanteringen av specifik information. Påståendena SET grupperas i kategorierna som visas i följande tabell.

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

Kategori Utdrag
Datum- och tiduppgifter SET DATEFIRST

SET DATEFORMAT
Låsningssatser SET DEADLOCK_PRIORITY

SET LOCK_TIMEOUT
Diverse instruktioner SET CONCAT_NULL_YIELDS_NULL

SET CURSOR_CLOSE_ON_COMMIT

SET FIPS_FLAGGER

SET IDENTITY_INSERT

SET LANGUAGE

SET OFFSETS

SET QUOTED_IDENTIFIER
Frågeexekveringssatser SET ARITHABORT

SET ARITHIGNORE

SET FMTONLY
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

SET NUMERIC_ROUNDABORT

SET PARSEONLY

SET QUERY_GOVERNOR_COST_LIMIT

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

SET ROWCOUNT

SET TEXTSIZE
ISO-inställningarna SET ANSI_DEFAULTS

SET ANSI_NULL_DFLT_OFF

SET ANSI_NULL_DFLT_ON

SET ANSI_NULLS

SET ANSI_PADDING

SET ANSI_WARNINGS
Statistikuppgifter SET FORCEPLAN

SET SHOWPLAN_ALL

SET SHOWPLAN_TEXT

SET SHOWPLAN_XML

SET STATISTICS IO

SET STATISTICS XML

SET STATISTICS PROFILE

SET STATISTICS TIME
Transaktionsrapporter SET IMPLICIT_TRANSACTIONS

SET REMOTE_PROC_TRANSACTIONS

SET TRANSACTION ISOLATION LEVEL

SET XACT_ABORT

Överväganden när du använder uttalandena SET

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

    • SET FIPS_FLAGGER
    • SET OFFSETS
    • SET PARSEONLY
    • och SET QUOTED_IDENTIFIER
  • Om ett SET uttalande körs i en lagrad propud eller trigger återställs värdet av SET alternativet efter att den lagrade proceduren eller triggern återlämnat kontrollen. Om du dessutom specificerar ett SET sats i en dynamisk SQL-sträng som körs med antingen sp_executesql eller EXECUTE, återställs SET värdet på alternativet efter att kontrollen returnerats från den batch du angav i den dynamiska SQL-strängen.

  • Lagrade procedurer körs med de SET inställningar som anges vid exekveringstillfället, förutom för SETSET ANSI_NULLS och SETSET QUOTED_IDENTIFIER. Lagrade procedurer som specificerar SETSET ANSI_NULLS eller SETSET QUOTED_IDENTIFIER använder den inställning som anges vid skapandet av lagrade procedurer. Om den 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 ett explicit SET uttalande, förutom att det sker vid inloggning.

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

  • Om ett SET statement använder ON och OFF kan du ange vilket som helst för flera SET alternativ.

    Anmärkning

    Detta gäller inte statistikrelaterade SET alternativ.

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

  • SET Satsinställningar åsidosätter identiska databasoptionsinställningar som sätts genom att använda 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 statements hedrar SETSET LOCK_TIMEOUT inte settingen.

  • När en global eller genvägssats SET sätter flera inställningar, återställer genvägssatsen SET 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 enskilda SET satsen de jämförbara genvägsinställningarna. Ett exempel på en genvägssats SET skulle vara SETSET 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 SET . När varje förfrågan körs kan den ändra alternativen SET . Ä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ågningsexekveringen är slutförd 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 alternativinstä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 hanterar index på beräknade kolumner eller indexerade vyer måste du ställa in dessa SET alternativ till PÅ: 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, INSERTkommer , 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 cachingfunktionen för resultatuppsättningen för den aktuella klientsessionen. Att ändra denna miljö kräver medlemskap i den offentliga rollen. Gäller för: Azure Synapse Analytics Gen2