SET Výroky (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Programovací jazyk Transact-SQL poskytuje několik SET příkazů, které mění současné zpracování specifických informací v rámci relace. Výroky SET jsou seskupeny do kategorií uvedených v následující tabulce.

Pro informace o nastavení lokálních SET proměnných pomocí tohoto tvrzení viz SET @local_variable (Transact-SQL).

Kategorie Prohlášení
Výkazy o datu a čase SET DATEFIRST

SET DATEFORMAT
Zámkové příkazy SET DEADLOCK_PRIORITY

SET LOCK_TIMEOUT
Různé příkazy SET CONCAT_NULL_YIELDS_NULL

SET CURSOR_CLOSE_ON_COMMIT

SET FIPS_FLAGGER

SET IDENTITY_INSERT

SET LANGUAGE

SET OFFSETS

SET QUOTED_IDENTIFIER
Příkazy pro provádění dotazů SET ARITHABORT

SET ARITHIGNORE

SET FMTONLY
Poznámka: Tato funkce bude v budoucí verzi SQL Serveru odstraněna. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají.

SET NOCOUNT

SET NOEXEC

SET NUMERIC_ROUNDABORT

SET PARSEONLY

SET QUERY_GOVERNOR_COST_LIMIT

SET CACHOVÁNÍ VÝSLEDKŮ SET (Náhled)
Poznámka: Tato funkce se vztahuje pouze na Azure Synapse Analytics.

SET ROWCOUNT

SET TEXTSIZE
Příkazy ISO Settings SET ANSI_DEFAULTS

SET ANSI_NULL_DFLT_OFF

SET ANSI_NULL_DFLT_ON

SET ANSI_NULLS

SET ANSI_PADDING

SET ANSI_WARNINGS
Statistiky SET FORCEPLAN

SET SHOWPLAN_ALL

SET SHOWPLAN_TEXT

SET SHOWPLAN_XML

SET STATISTICS IO

SET STATISTICS XML

SET STATISTICS PROFILE

SET STATISTICS TIME
Transakční výkazy SET IMPLICIT_TRANSACTIONS

SET REMOTE_PROC_TRANSACTIONS

SET TRANSACTION ISOLATION LEVEL

SET XACT_ABORT

Zvážení při používání těchto výroků SET

  • Všechny SET příkazy běží při vykonání nebo běhu času, kromě těchto příkazů, které běží při parse:

    • SET FIPS_FLAGGER
    • SET OFFSETS
    • SET PARSEONLY
    • a SET QUOTED_IDENTIFIER
  • Pokud SET příkaz sběží v uložené procedurě nebo spouštěči, hodnota volby SET se obnoví poté, co uložená procedura nebo spouštěč vrátí řízení. Také, pokud zadáte SET příkaz v dynamickém SQL řetězci, který běží buď pomocí sp_executesql , nebo EXECUTE, hodnota SET této možnosti se obnoví poté, co kontrola vrátí z dávkového řetězce, který jste zadali v dynamickém SQL řetězci.

  • Uložené procedury se spouštějí s nastavením zadaným SET při spuštění, kromě SETSET ANSI_NULLS a .SETSET QUOTED_IDENTIFIER Uložené procedury specifikující SETSET ANSI_NULLS nebo SETSET QUOTED_IDENTIFIER používající nastavení stanovené při vytváření uložených procedur. Pokud je použito uvnitř uložené procedury, jakékoli SET nastavení je ignorováno.

  • Nastavení uživatelských možnostísp_configure umožňuje nastavení na úrovni celého serveru a funguje napříč více databázemi. Toto nastavení se také chová jako explicitní SET tvrzení, ale objevuje se při přihlášení.

  • Nastavení databáze nastavená používáním ALTER DATABASE jsou platná pouze na úrovni databáze a uplatňují se pouze v případě, že jsou explicitně nastavena. Nastavení databáze přepisuje nastavení instance nastavená pomocí sp_configure.

  • Pokud SET příkaz používá ON a OFF, můžete nastavit kteroukoliv z těchto možností pro více SET možností.

    Poznámka:

    To se nevztahuje na možnosti související SET se statistikou.

    Například nastaví SET QUOTED_IDENTIFIER, ANSI_NULLS ON oba QUOTED_IDENTIFIER a na ANSI_NULLS ON.

  • SET Nastavení příkazu přepisuje identická nastavení databázových možností, která jsou nastavena pomocí ALTER DATABASE. Například hodnota zadaná ve příkazu SET ANSI_NULLS přepíše nastavení databáze pro ANSI_NULLs. Navíc se některá nastavení připojení automaticky zapnou, když se uživatel připojí k databázi na základě hodnot, které se uplatní při předchozím použití nastavení sp_configure uživatelských možností , nebo hodnot, které platí pro všechna ODBC a OLE/DB připojení.

  • ZMĚNA, TVORBA a DROP DATABASE prohlášení nerespektují SETSET LOCK_TIMEOUT prostředí.

  • Když globální nebo zkratkový SET příkaz nastaví několik nastavení, zadání příkazu zkratky SET resetuje předchozí nastavení pro všechny možnosti, které příkaz zkratky SET ovlivňuje. Pokud SET je možnost ovlivněna příkazem zkratky SET nastavena po vydání příkazu zkratky SET , jednotlivé příkazy SET přepíší srovnatelná nastavení zkratek. Příkladem příkazu zkratky SET by byl SETSET ANSI_DEFAULTS.

  • Při použití dávek je kontext databáze určen dávkou vytvořenou pomocí příkazu USE. Neplánované dotazy a všechny ostatní příkazy, které běží mimo uloženou proceduru a jsou v dávkách, dědí nastavení možností databáze a spojení vytvořeného příkazem USE.

  • Požadavky na více aktivních výsledků (MARS) sdílejí globální stav, který obsahuje nejnovější nastavení relace SET pro volby. Když se každý požadavek spustí, může SET upravit možnosti. Změny jsou specifické pro kontext požadavků, ve kterém jsou nastaveny, a neovlivňují jiné současné MARS požadavky. Po dokončení vykonávání požadavku jsou však nové SET možnosti zkopírovány do stavu globální relace. Nové požadavky, které se spustí ve stejné relaci po této změně, budou používat tato nová SET nastavení možností.

  • Když uložená procedura běží z batch nebo jiné uložené procedury, spouště se pod volitelnými hodnotami nastavenými v databázi, která uloženou proceduru obsahuje. Například když uložená procedura db1.dbo.sp1 volá uloženou proceduru db2.dbo.sp2, uložená procedura sp1 se spustí podle aktuálního nastavení úrovně kompatibility databáze db1 a uložená procedura sp2 se vykoná pod aktuálním nastavením úrovně kompatibility databáze db2.

  • Když se Transact-SQL příkaz týká objektů, které jsou ve více databázích, platí pro něj aktuální databázový kontext a aktuální kontext spojení. V tomto případě, pokud je Transact-SQL příkaz v dávce, aktuálním kontextem spojení je databáze definovaná příkazem USE; Pokud je Transact-SQL příkaz v uložené procedurě, kontext spojení je databáze, která uloženou proceduru obsahuje.

  • Když vytváříte a manipulujete s indexy na vypočtených sloupcích nebo indexovaných zobrazeních, musíte nastavit tyto SET možnosti na ZAPNUTO: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, , ANSI_NULLS, ANSI_PADDING, a .ANSI_WARNINGS Nastavte možnost NUMERIC_ROUNDABORT VYPNUTO.

    Pokud žádnou z těchto možností nenastavíte na požadované hodnoty, INSERTakce UPDATE, , DELETEDBCC CHECKDB a DBCC CHECKTABLE na indexovaných pohledech nebo tabulkách s indexy ve vypočtených sloupcích selžou. SQL Server zobrazí chybu se seznamem všech špatně nastavených možností. SQL Server také zpracovává příkazy SELECT na těchto tabulkách nebo indexovaných pohledech, jako by indexy na vypočtených sloupcích nebo na pohledech neexistovaly.

  • Když SET je RESULT_SET_CACHING zapnuto, zapne funkci cache výsledků pro aktuální klientskou relaci. Result_set_caching nelze zapnout pro relaci, pokud je vypnut na úrovni databáze. Když SET je RESULT_SET_CACHING VYPNUTO, funkce cache výsledků je pro aktuální klientskou relaci deaktivována. Změna tohoto nastavení vyžaduje členství ve veřejné roli. Applies to: Azure Synapse Analytics Gen2