Sdílet prostřednictvím


SET příkazy (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 příkazů SET, které mění aktuální zpracování relace s konkrétními informacemi. Příkazy SET jsou seskupeny do kategorií uvedených v následující tabulce.

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

Kategorie Prohlášení
Výkazy o datu a čase STANOVTE DATUM JAKO PRVNÍ

NASTAVIT FORMÁT DATA
Zámkové příkazy NASTAVTE DEADLOCK_PRIORITY

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

NASTAVTE CURSOR_CLOSE_ON_COMMIT

NASTAVTE FIPS_FLAGGER

NASTAVTE IDENTITY_INSERT

JAZYK PŘEDEM

POSUNY SADY

NASTAVTE 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í.

NASTAVTE NEPOČÍTÁNÍ

SET NOEXEC

NASTAVTE NUMERIC_ROUNDABORT

NASTAVIT PARSEONLY

NASTAVTE QUERY_GOVERNOR_COST_LIMIT

CACHE MNOŽINY VÝSLEDKŮ ( náhled)
Poznámka: Tato funkce se vztahuje pouze na Azure Synapse Analytics.

NASTAVTE POČET ŘÁDKŮ

NASTAVIT VELIKOST TEXTU
Příkazy ISO Settings SET ANSI_DEFAULTS

NASTAVTE ANSI_NULL_DFLT_OFF

NASTAVTE ANSI_NULL_DFLT_ON

NASTAV ANSI_NULLS

SET ANSI_PADDING

NASTAVTE ANSI_WARNINGS
Statistiky NASTAVTE FORCEPLAN

NASTAVTE SHOWPLAN_ALL

SET SHOWPLAN_TEXT

NASTAVTE SHOWPLAN_XML

NASTAVIT STATISTIKY IO

NASTAVENÍ STATISTIK XML

NASTAVIT PROFILU STATISTIKY

ČAS NASTAVENÍ STATISTIK
Transakční výkazy SET IMPLICIT_TRANSACTIONS (nastaví implicitní transakce)

NASTAVTE REMOTE_PROC_TRANSACTIONS

NASTAVENÍ ÚROVNĚ IZOLACE TRANSAKCÍ

NASTAVTE XACT_ABORT

Úvahy při používání příkazů SET

  • Všechny příkazy SET běží při spuštění nebo běhu během provozu, kromě těchto příkazů, které běží při parse:

    • NASTAVTE FIPS_FLAGGER
    • POSUNY SADY
    • NASTAVIT PARSEONLY
    • a SET QUOTED_IDENTIFIER
  • Pokud se příkaz SET spustí 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 příkaz SET v dynamickém SQL řetězci, který běží buď pomocí sp_executesql , nebo EXECUTE, hodnota volby SET se obnoví poté, co se kontrola vrátí z dávky, kterou jste zadali v dynamickém SQL řetězci.

  • Uložené procedury se spouštějí s nastavením SET specifikovaným při spuštění, kromě SET ANSI_NULLS a SET QUOTED_IDENTIFIER. Uložené procedury špecifikující SET ANSI_NULLS nebo SET QUOTED_IDENTIFIER používat nastavení stanovené při vytváření uložených procedur. Pokud je použito uvnitř uložené procedury, jakékoli nastavení SET 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í příkaz SET, ale objevuje se při přihlášení.

  • Nastavení databáze nastavená pomocí ALTER DATABASE jsou platná pouze na úrovni databáze a platí pouze v případě, že jsou explicitně nastavena. Nastavení databáze přepisuje nastavení instance nastavená pomocí sp_configure.

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

    Poznámka:

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

    Například nastaví SET QUOTED_IDENTIFIER, ANSI_NULLS ON jak QUOTED_IDENTIFIER, tak ANSI_NULLS na ZAPNUTO.

  • Nastavení příkazu SET přepisuje identická nastavení databázových možností, která jsou nastavena pomocí ALTER DATABASE. Například hodnota zadaná v 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í.

  • Příkazy ALTER, CREATE a DROP DATABASE nerespektují nastavení SET LOCK_TIMEOUT.

  • Když globální nebo zkratkový příkaz SET nastaví několik nastavení, zadání příkazu SET zkratky resetuje předchozí nastavení pro všechny možnosti, které příkaz SET ovlivňuje. Pokud je možnost SET, která je ovlivněna příkazem SET ze zkratky, nastavena po vydání příkazu SET, jednotlivý příkaz SET přepíše srovnatelná nastavení zkratek. Příkladem příkazu SET pro zkratku je SET 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í nastavení SET relace. Když se každý požadavek spustí, může upravit možnosti SET. 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é možnosti SET 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á nastavení SET.

  • 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 ve vypočítáných sloupcích nebo indexovaných pohledech, musíte nastavit tyto NASTAVENÍ na ON: 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, akce INSERT, UPDATE, DELETE, DBCC 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ž je SET RESULT_SET_CACHING zapnutý, aktivuje funkci cache výsledků pro aktuální klientskou relaci. Result_set_caching nelze zapnout pro relaci, pokud je vypnut na úrovni databáze. Když je SET 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