Udostępnij za pomocą


Instrukcje SET (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Język programowania Transact-SQL dostarcza kilka instrukcji SET, które zmieniają aktualną obsługę sesji konkretnych informacji. Instrukcje SET są pogrupowane w kategorie pokazane w poniższej tabeli.

Aby uzyskać informacje o ustawianiu zmiennych lokalnych za pomocą instrukcji SET, zobacz SET @local_variable (Transact-SQL).

Kategoria Statements
Oświadczenia o dacie i godzinie USTAW DATĘ NAJPIERW

USTAW FORMAT DATY
Oświadczenia blokujące USTAW DEADLOCK_PRIORITY

ZESTAW LOCK_TIMEOUT
Różne instrukcje USTAW CONCAT_NULL_YIELDS_NULL

ZESTAW CURSOR_CLOSE_ON_COMMIT

USTAW FIPS_FLAGGER

USTAW IDENTITY_INSERT

JĘZYK USTALONY

PRZESUNIĘCIA ZESTAWU

USTAW QUOTED_IDENTIFIER
Instrukcje wykonywania zapytań USTAW ARITHABORT

ZESTAW ARITHIGNORE

SET FMTONLY
Uwaga: Ta funkcja zostanie usunięta w przyszłej wersji SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji.

USTAW NIELICZENIE

SET NOEXEC

ZESTAW NUMERIC_ROUNDABORT

ZESTAW PARSEONLY

ZESTAW QUERY_GOVERNOR_COST_LIMIT

ZESTAW BUFOROWANIE ZBIORU WYNIKÓW (Podgląd)
Uwaga: Ta funkcja dotyczy wyłącznie Azure Synapse Analytics.

USTAW LICZBĘ WIERSZY

USTAW ROZMIAR TEKSTU
Instrukcje ustawień ISO USTAW ANSI_DEFAULTS

ZESTAW ANSI_NULL_DFLT_OFF

ZESTAW ANSI_NULL_DFLT_ON

ZESTAW ANSI_NULLS

USTAW ANSI_PADDING

USTAW ANSI_WARNINGS
Raporty statystyczne USTAW PLAN SIŁY

ZESTAW SHOWPLAN_ALL

USTAW SHOWPLAN_TEXT

USTAW SHOWPLAN_XML

STATYSTYKI USTAWIANIA IO

SET STATISTICS XML

USTAWIANIE PROFILU STATYSTYK

USTAW CZAS STATYSTYK
Zestawienia transakcji USTAW IMPLICIT_TRANSACTIONS

ZESTAW REMOTE_PROC_TRANSACTIONS

USTAW POZIOM IZOLACJI TRANSAKCJI

USTAW XACT_ABORT

Uwagi przy użyciu instrukcji SET

  • Wszystkie instrukcje SET wykonują się w czasie wykonywania lub wykonywania, z wyjątkiem tych instrukcji, które uruchamiają się w czasie parse:

    • USTAW FIPS_FLAGGER
    • PRZESUNIĘCIA ZESTAWU
    • USTAW PARSEONLY
    • oraz SET QUOTED_IDENTIFIER
  • Jeśli instrukcja SET zostanie wykonana w procedurze lub wyzwalaczu, wartość opcji SET zostaje przywrócona po tym, jak procedura lub wyzwalacz przywróci kontrolę. Ponadto, jeśli w dynamicznym ciągu SQL określisz polecenie SET, które działa za pomocą sp_executesql lub EXECUTE, wartość opcji SET zostaje przywrócona po powrocie kontroli z partii, którą określiłeś w dynamicznym ciągu SQL.

  • Procedury przechowywane wykonują się z ustawieniami SET określonymi w momencie wykonywania z wyjątkiem SET ANSI_NULLS i SET QUOTED_IDENTIFIER. Procedury przechowywane określające SET ANSI_NULLS lub SET QUOTED_IDENTIFIER korzystać z ustawień określonych podczas tworzenia procedur przechowywanych. Jeśli jest używany w procedurze przechowywanej, każde ustawienie SET jest ignorowane.

  • Opcja użytkownikasp_configure pozwala na ustawienia na poziomie całego serwera i działa w wielu bazach danych. To ustawienie zachowuje się również jak jawne zdanie SET, z tą różnicą, że pojawia się w momencie logowania.

  • Ustawienia bazy danych ustawione za pomocą ALTER DATABASE są ważne tylko na poziomie bazy i obowiązują tylko wtedy, gdy są ustawione wprost. Ustawienia bazy danych nadpisują opcje instancji ustawione za pomocą sp_configure.

  • Jeśli instrukcja SET używa ON i OFF, możesz określić dowolną opcję dla wielu opcji SET.

    Uwaga / Notatka

    To nie dotyczy opcji SET związanych ze statystyką.

    Na przykład ustawia SET QUOTED_IDENTIFIER, ANSI_NULLS ON zarówno QUOTED_IDENTIFIER, jak i ANSI_NULLS na ON.

  • Ustawienia instrukcji SET nadpisują identyczne ustawienia opcji bazy danych, które są ustalane za pomocą ALTER DATABASE. Na przykład wartość podana w instrukcji SET ANSI_NULLS nadpisuje ustawienie bazy danych dla ANSI_NULLs. Dodatkowo, niektóre ustawienia połączenia są automatycznie włączane, gdy użytkownik łączy się z bazą danych na podstawie wartości wchodzących w życie po wcześniejszym użyciu ustawień sp_configure lub wartości odnoszących się do wszystkich połączeń ODBC i OLE/DB.

  • Instrukcje ALTER, CREATE i DROP DATABASE nie respektują ustawień SET LOCK_TIMEOUT.

  • Gdy globalne lub skrótowe polecenie SET ustawia kilka ustawień, uruchomienie skrótu SET resetuje wcześniejsze ustawienia dla wszystkich opcji, na które wpływa instrukcja skrótu SET. Jeśli opcja SET, która zostanie dotknięta przez skrót SET, zostanie ustawiona po wydaniu instrukcji skrótu SET, poszczególne zdanie SET nadpisuje porównywalne ustawienia skrótów. Przykładem skrótowego polecenia SET jest SET ANSI_DEFAULTS.

  • Gdy używane są partie, kontekst bazy danych jest określany przez partię utworzoną za pomocą instrukcji USE. Nieplanowane zapytania i wszystkie inne instrukcje wykonywane poza procedurą przechowywaną i w partiach dziedziczą ustawienia opcji bazy danych oraz połączenia ustanowione przez polecenie USE.

  • Żądania Multiple Active Result Set (MARS) dzielą globalny stan zawierający najnowsze ustawienia opcji sesji SET. Po wykonaniu każdego żądania może modyfikować opcje SET. Zmiany są specyficzne dla kontekstu żądań, w którym są ustawiane, i nie wpływają na inne równoległe żądania MARS. Jednak po zakończeniu wykonania żądania nowe opcje SET są kopiowane do stanu sesji globalnej. Nowe żądania wykonywane w tej samej sesji po tej zmianie będą korzystać z tych nowych ustawień opcji SET.

  • Gdy procedura przechowywana jest uruchamiana z wsadu lub innej procedury przechowywanej, jest uruchamiana na podstawie wartości opcji ustawionych w bazie danych, która zawiera procedurę przechowywaną. Na przykład, gdy procedura przechowywana db1.dbo.sp1 wywołuje procedurę db2.dbo.sp2, procedura przechowywana sp1 wykonuje się według aktualnych ustawień poziomu zgodności bazy danych db1, a procedura przechowywana sp2 według aktualnych ustawień poziomu zgodności bazy danych db2.

  • Gdy zdanie Transact-SQL dotyczy obiektów znajdujących się w wielu bazach danych, bieżący kontekst bazy danych oraz bieżący kontekst połączenia mają zastosowanie do tego stwierdzenia. W takim przypadku, jeśli Transact-SQL polecenie znajduje się w partii, aktualnym kontekstem połączenia jest baza danych zdefiniowana przez polecenie USE; Jeśli instrukcja Transact-SQL znajduje się w procedurze przechowywanej, kontekst połączenia to baza danych zawierająca procedurę przechowywaną.

  • Podczas tworzenia i manipulowania indeksami na kolumnach obliczeniowych lub widokach indeksowanych musisz ustawić te opcje SET na ON: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING i ANSI_WARNINGS. Ustaw opcję NUMERIC_ROUNDABORT na WYŁĄCZONE.

    Jeśli nie ustawisz żadnej z tych opcji na wymagane wartości, akcje INSERT, UPDATE, DELETE, DBCC CHECKDB oraz DBCC CHECKTABLE na widokach indeksowanych lub tabelach z indeksami w obliczonych kolumnach nie zadziałają. SQL Server wyświetli błąd, wypisując wszystkie błędnie ustawione opcje. Ponadto SQL Server przetwarza instrukcje SELECT na tych tabelach lub widokach indeksowanych tak, jakby indeksy w obliczonych kolumnach lub widokach nie istniały.

  • Gdy SET RESULT_SET_CACHING jest włączony, włącza funkcję buforowania wyników dla bieżącej sesji klienckiej. Result_set_caching nie może być WŁĄCZONY dla sesji, jeśli jest WYŁĄCZONY na poziomie bazy danych. Gdy SET RESULT_SET_CACHING jest WYŁĄCZONY, funkcja buforowania zbiorów wyników jest wyłączona dla bieżącej sesji klienckiej. Zmiana tego ustawienia wymaga członkostwa w roli publicznej. Applies to: Azure Synapse Analytics Gen2