Delen via


SET-statements (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-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).

Categorie Statements
Datum- en tijdsverklaringen VASTE DATUM EERST

VASTE DATUMFORMAAT
Locking-statements ZET DEADLOCK_PRIORITY

ZET LOCK_TIMEOUT
Diverse instructies ZET CONCAT_NULL_YIELDS_NULL

ZET CURSOR_CLOSE_ON_COMMIT

ZET FIPS_FLAGGER

ZET IDENTITY_INSERT

SETTAAL

SET-OFFSETS

ZET QUOTED_IDENTIFIER
Query-uitvoeringsstatements SET ARITHABORT

SET ARITHIGNORE

SET ALLEEN OP MT
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

ZET NUMERIC_ROUNDABORT

SET PARSEONLY

ZET QUERY_GOVERNOR_COST_LIMIT

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

SET RIJENTELLING

STEL TEKSTGROOTTE IN
ISO-instellingenstatements ZET ANSI_DEFAULTS

ZET ANSI_NULL_DFLT_OFF

ZET ANSI_NULL_DFLT_ON

ZET ANSI_NULLS

ZET ANSI_PADDING

ZET ANSI_WARNINGS
Statistiekverklaringen STEL FORCEPLAN IN

ZET SHOWPLAN_ALL

ZET SHOWPLAN_TEXT

ZET SHOWPLAN_XML

SETSTATISTIEKEN IO

STATISTIEKEN XML INSTELLEN

STATISTIEKENPROFIEL INSTELLEN

TIJDSBESTEK
Transacties ZET IMPLICIT_TRANSACTIONS

ZET REMOTE_PROC_TRANSACTIONS

STEL HET TRANSACTIEISOLATIENIVEAU IN

ZET XACT_ABORT

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 ON bijvoorbeeld 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