Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Spravovaná instance Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Koncový bod analýzy SQL v Microsoft Fabric
Sklad v Microsoft Fabric
Databá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).
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 ONoba 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