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