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
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).
Ö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 ONsä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