Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Punkt końcowy analizy SQL w usłudze Microsoft Fabric
Hurtownia danych w usłudze Microsoft Fabric
Baza 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).
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 ONzaró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