Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics-eindpunt in Microsoft Fabric
Magazijn in Microsoft Fabric
SQL-database in Microsoft Fabric
De programmeertaal Transact-SQL biedt verschillende SET-statements die de huidige sessieverwerking van specifieke informatie wijzigen. De SET-statements zijn gegroepeerd in de categorieën die in de volgende tabel worden weergegeven.
Voor informatie over het instellen van lokale variabelen met de SET-instructie, zie SET @local_variable (Transact-SQL).
Overwegingen bij het gebruik van de SET-statements
Alle SET-instructies draaien tijdens uitvoeren of uitvoeren, behalve deze instructies, die draaien tijdens parsetijd:
- ZET FIPS_FLAGGER
- SET-OFFSETS
- PARSERING INSTELLEN
- en SET QUOTED_IDENTIFIER
Als een SET-instructie draait in een opgeslagen procedure of trigger, wordt de waarde van de SET-optie hersteld nadat de opgeslagen procedure of trigger de controle teruggeeft. Ook, als je een SET-instructie specificeert in een dynamische SQL-string die draait met sp_executesql of EXECUTE, wordt de waarde van de SET-optie hersteld nadat de controle terugkeert van de batch die je in de dynamische SQL-string hebt opgegeven.
Opgeslagen procedures worden uitgevoerd met de SET-instellingen die bij het uitvoeren zijn gespecificeerd, behalve voor SET ANSI_NULLS en SET QUOTED_IDENTIFIER. Opgeslagen procedures die SET ANSI_NULLS of SET specificeren, gebruiken QUOTED_IDENTIFIER de instelling die bij het maken van opgeslagen procedures is gespecificeerd. Als het binnen een opgeslagen procedure wordt gebruikt, wordt elke SET-instelling genegeerd.
De gebruikersopties van sp_configure maken serverbrede instellingen mogelijk en werken over meerdere databases. Deze instelling gedraagt zich ook als een expliciete SET-instructie, behalve dat deze bij het inlogen plaatsvindt.
Database-instellingen die worden ingesteld met ALTER DATABASE zijn alleen geldig op databaseniveau en treden alleen in werking als ze expliciet zijn ingesteld. Database-instellingen overschrijven instantie-opties die worden ingesteld met sp_configure.
Als een SET-instructie ON en OFF gebruikt, kun je een van beide specificeren voor meerdere SET-opties.
Opmerking
Dit geldt niet voor de statistiek-gerelateerde SET-opties.
Stel
SET QUOTED_IDENTIFIER, ANSI_NULLS ONbijvoorbeeld zowel QUOTED_IDENTIFIER als ANSI_NULLS in op AAN.SET-instructie-instellingen overschrijven identieke database-opties die worden ingesteld met ALTER DATABASE. Bijvoorbeeld, de waarde die in een SET ANSI_NULLS-instructie wordt gespecificeerd, zal de database-instelling voor ANSI_NULLs overschrijven. Daarnaast worden sommige verbindingsinstellingen automatisch AAN gezet wanneer een gebruiker verbinding maakt met een database, gebaseerd op de waarden die van kracht zijn bij het vorige gebruik van de sp_configure gebruikersopties , of de waarden die gelden voor alle ODBC- en OLE/DB-verbindingen.
ALTER, CREATE en DROP DATABASE-statements houden geen rekening met de SET LOCK_TIMEOUT-instelling.
Wanneer een globale of snelkoppeling SET-instructie meerdere instellingen instelt, reset het uitvoeren van de snelkoppeling SET-instructie de vorige instellingen voor alle opties die door de snelkoppeling SET-instructie worden beïnvloed. Als een SET-optie die wordt beïnvloed door een snelkoppeling SET-instructie wordt ingesteld nadat de snelkoppeling SET-instructie is uitgegeven, overschrijft de individuele SET-instructie de vergelijkbare snelkoppelingsinstellingen. Een voorbeeld van een shortcut SET-instructie is SET ANSI_DEFAULTS.
Wanneer batches worden gebruikt, wordt de databasecontext bepaald door de batch die wordt opgebouwd met behulp van de USE-instructie. Ongeplande queries en alle andere statements die buiten de opgeslagen procedure draaien en in batches zijn, erven de optie-instellingen van de database en verbinding die door de USE-instructie zijn vastgesteld.
Multiple Active Result Set (MARS)-verzoeken delen een globale toestand die de meest recente sessie-SET-optie-instellingen bevat. Wanneer elk verzoek wordt uitgevoerd, kan het de SET-opties wijzigen. De wijzigingen zijn specifiek voor de verzoekcontext waarin ze worden ingesteld en hebben geen invloed op andere gelijktijdige MARS-verzoeken. Na voltooiing van de uitvoering van het verzoek worden de nieuwe SET-opties echter gekopieerd naar de globale sessietoestand. Nieuwe verzoeken die na deze wijziging onder dezelfde sessie worden uitgevoerd, gebruiken deze nieuwe SET-opties.
Wanneer een opgeslagen procedure draait vanuit een batch of van een andere opgeslagen procedure, wordt deze uitgevoerd onder de optiewaarden die zijn ingesteld in de database waarin de opgeslagen procedure staat. Bijvoorbeeld, wanneer opgeslagen procedure db1.dbo.sp1 opgeslagen procedure db2.dbo.sp2 aanroept, voert opgeslagen procedure sp1 uit onder de huidige compatibiliteitsniveau van database db1, en wordt opgeslagen procedure sp2 uitgevoerd onder de huidige compatibiliteitsniveau van database db2.
Wanneer een Transact-SQL-instructie betrekking heeft op objecten die in meerdere databases staan, gelden de huidige databasecontext en de huidige verbindingscontext voor die statement. In dit geval, als Transact-SQL statement in een batch is, is de huidige verbindingscontext de database die door de USE-instructie wordt gedefinieerd; Als de Transact-SQL-instructie in een opgeslagen procedure zit, is de verbindingscontext de database die de opgeslagen procedure bevat.
Wanneer je indexen maakt en bewerkt op berekende kolommen of geïndexeerde weergaven, moet je deze SET-opties instellen op AAN: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING en ANSI_WARNINGS. Zet de optie NUMERIC_ROUNDABORT op UIT.
Als je geen van deze opties op de vereiste waarden zet, zullen INSERT, UPDATE, DELETE, DBCC CHECKDB en DBCC CHECKTABLE-acties op geïndexeerde weergaven of tabellen met indexen op berekende kolommen falen. SQL Server geeft een foutmelding met alle verkeerd ingestelde opties. Ook verwerkt SQL Server SELECT-statements op deze tabellen of geïndexeerde weergaven alsof de indexen op berekende kolommen of op de weergaven niet bestaan.
Wanneer SET RESULT_SET_CACHING AAN is, schakelt het de cachingfunctie voor het resultaat in voor de huidige clientsessie. Result_set_caching kan niet AAN worden gezet voor een sessie als het op databaseniveau UIT staat. Wanneer SET RESULT_SET_CACHING UIT is, wordt de cachingfunctie van de result set uitgeschakeld voor de huidige clientsessie. Het wijzigen van deze instelling vereist lidmaatschap van de publieke functie. Van toepassing op: Azure Synapse Analytics Gen2