SET Verklaringen (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric

De programmeertaal Transact-SQL biedt verschillende SET statements die de huidige sessieverwerking van specifieke informatie wijzigen. De SET uitspraken zijn gegroepeerd in de categorieën die in de volgende tabel worden weergegeven.

Voor informatie over het instellen van lokale variabelen met de SET stelling, zie SET @local_variable (Transact-SQL).

Categorie Statements
Datum- en tijdsverklaringen SET DATEFIRST

SET DATEFORMAT
Locking-statements SET DEADLOCK_PRIORITY

SET LOCK_TIMEOUT
Diverse instructies SET CONCAT_NULL_YIELDS_NULL

SET CURSOR_CLOSE_ON_COMMIT

SET FIPS_FLAGGER

SET IDENTITY_INSERT

SET LANGUAGE

SET OFFSETS

SET QUOTED_IDENTIFIER
Query-uitvoeringsstatements SET ARITHABORT

SET ARITHIGNORE

SET FMTONLY
Opmerking: Deze functie zal in een toekomstige versie van SQL Server worden verwijderd. Vermijd het gebruik van deze functie in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functie.

SET NOCOUNT

SET NOEXEC

SET NUMERIC_ROUNDABORT

SET PARSEONLY

SET QUERY_GOVERNOR_COST_LIMIT

SET RESULTAAT SET CACHING (Preview)
Opmerking: Deze functie geldt alleen voor Azure Synapse Analytics.

SET ROWCOUNT

SET TEXTSIZE
ISO-instellingenstatements SET ANSI_DEFAULTS

SET ANSI_NULL_DFLT_OFF

SET ANSI_NULL_DFLT_ON

SET ANSI_NULLS

SET ANSI_PADDING

SET ANSI_WARNINGS
Statistiekverklaringen SET FORCEPLAN

SET SHOWPLAN_ALL

SET SHOWPLAN_TEXT

SET SHOWPLAN_XML

SET STATISTICS IO

SET STATISTICS XML

SET STATISTICS PROFILE

SET STATISTICS TIME
Transacties SET IMPLICIT_TRANSACTIONS

SET REMOTE_PROC_TRANSACTIONS

SET TRANSACTION ISOLATION LEVEL

SET XACT_ABORT

Overwegingen bij het gebruik van de verklaringen SET

  • Alle SET statements draaien tijdens execute- of runtime, behalve deze statements, die draaien op parsetijd:

    • SET FIPS_FLAGGER
    • SET OFFSETS
    • SET PARSEONLY
    • 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 control terugkeert uit de batch die je in de dynamische SQL-string hebt opgegeven.

  • Opgeslagen procedures worden uitgevoerd met de instellingen die op het SET uitvoermoment zijn gespecificeerd, behalve voor SETSET ANSI_NULLS en SETSET QUOTED_IDENTIFIER. Opgeslagen procedures die SETSET ANSI_NULLS de instelling specificeren of SETSET QUOTED_IDENTIFIER gebruiken die bij het aanmaken 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 door gebruik ALTER DATABASE worden ingesteld zijn alleen geldig op databaseniveau en worden alleen van kracht als ze expliciet zijn ingesteld. Database-instellingen overschrijven instantie-opties die worden ingesteld met sp_configure.

  • Als een SET statement AAN en UIT gebruikt, kun je een van beide specificeren voor meerdere SET opties.

    Opmerking

    Dit geldt niet voor de statistiekgerelateerde SET opties.

    Bijvoorbeeld, SET QUOTED_IDENTIFIER, ANSI_NULLS ON zet zowel QUOTED_IDENTIFIER als ANSI_NULLS op ON.

  • SET Statement-instellingen overschrijven identieke database-opties die zijn 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 eren de SETSET LOCK_TIMEOUT setting niet.

  • Wanneer een globale of shortcut-instructie SET meerdere instellingen instelt, worden de eerdere instellingen voor alle opties die door de shortcut-instructie SETSET worden beïnvloed teruggezet. Als een SET optie die door een snelkoppelingsinstructie SET wordt beïnvloed wordt ingesteld nadat de snelkoppelingsinstructie SET is uitgegeven, overschrijft de individuele SET instructie de vergelijkbare snelkoppelingsinstellingen. Een voorbeeld van een snelkoppelingsstatement SET zou zijn SETSET 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 status die de meest recente sessie-opties SET 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. Echter, nadat de uitvoering van het verzoek is voltooid, worden de nieuwe SET opties gekopieerd naar de globale sessietoestand. Nieuwe verzoeken die na deze wijziging onder dezelfde sessie worden uitgevoerd, gebruiken deze nieuwe SET optie-instellingen.

  • 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_PADDINGen ANSI_WARNINGS. Zet de optie NUMERIC_ROUNDABORT op UIT.

    Als je geen van deze opties op de vereiste waarden zet, INSERTzullen de acties van DBCC UPDATEDELETECHECKDB en DBCC CHECKTABLE 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 staat, wordt de resultaat cachingfunctie voor de huidige clientsessie ingeschakeld. 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