ALTER DATABASE SET options (Transact-SQL)
Ustawia opcje bazy danych w programie Microsoft SQL Server, usłudze Azure SQL Database i usłudze Azure Synapse Analytics. Aby uzyskać inne opcje ALTER DATABASE, zobacz ALTER DATABASE.
Nuta
Ustawienie niektórych opcji przy użyciu funkcji ALTER DATABASE może wymagać wyłącznego dostępu do bazy danych. Jeśli instrukcja ALTER DATABASE nie zostanie ukończona w odpowiednim czasie, sprawdź, czy inne sesje w bazie danych blokują sesję ALTER DATABASE.
Aby uzyskać więcej informacji na temat konwencji składni, zobacz Transact-SQL konwencje składni.
Wybieranie produktu
W poniższym wierszu wybierz dowolną nazwę produktu. Spowoduje to wyświetlenie w tym miejscu innej zawartości na tej stronie internetowej, odpowiedniej dla wybranego produktu.
* SQL Server *
usługi
usługi
Azure Synapse
analizy
SQL Server
Dublowanie bazy danych, zawsze włączone grupy dostępności i poziomy zgodności są SET
opcje, ale są opisane w oddzielnych artykułach ze względu na ich długość. Aby uzyskać więcej informacji, zobacz ALTER DATABASE Mirroring, ALTER DATABASE SET HADRi poziomu zgodności z bazą danych ALTER DATABASE.
Konfiguracje o zakresie bazy danych służą do ustawiania kilku konfiguracji bazy danych na poziomie pojedynczej bazy danych. Aby uzyskać więcej informacji, zobacz ALTER DATABASE SCOPED CONFIGURATION.
Nuta
Wiele opcji zestawu baz danych można skonfigurować dla bieżącej sesji przy użyciu instrukcji SET i są często konfigurowane przez aplikacje podczas nawiązywania połączenia. Opcje zestawu na poziomie sesji zastępują wartości ALTER DATABASE SET
. Opcje bazy danych opisane w poniższych sekcjach to wartości, które można ustawić dla sesji, które nie zapewniają jawnie innych wartości opcji zestawu.
Składnia
ALTER DATABASE { database_name | CURRENT }
SET
{
<option_spec> [ ,...n ] [ WITH <termination> ]
}
<option_spec> ::=
{
<accelerated_database_recovery>
| <auto_option>
| <automatic_tuning_option>
| <change_tracking_option>
| <containment_option>
| <cursor_option>
| <database_mirroring_option>
| <date_correlation_optimization_option>
| <db_encryption_option>
| <db_state_option>
| <db_update_option>
| <db_user_access_option>
| <delayed_durability_option>
| <external_access_option>
| FILESTREAM ( <FILESTREAM_option> )
| <HADR_options>
| <mixed_page_allocation_option>
| <parameterization_option>
| <query_store_options>
| <recovery_option>
| <remote_data_archive_option>
| <persistent_log_buffer_option>
| <service_broker_option>
| <snapshot_option>
| <sql_option>
| <suspend_for_snapshot_backup>
| <target_recovery_time_option>
| <termination>
| <temporal_history_retention>
| <data_retention_policy>
}
;
<accelerated_database_recovery> ::=
{
ACCELERATED_DATABASE_RECOVERY = { ON | OFF }
[ ( PERSISTENT_VERSION_STORE_FILEGROUP = { filegroup name } ) ];
}
<auto_option> ::=
{
AUTO_CLOSE { ON | OFF }
| AUTO_CREATE_STATISTICS { OFF | ON [ ( INCREMENTAL = { ON | OFF } ) ] }
| AUTO_SHRINK { ON | OFF }
| AUTO_UPDATE_STATISTICS { ON | OFF }
| AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}
<automatic_tuning_option> ::=
{
AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF } )
}
<change_tracking_option> ::=
{
CHANGE_TRACKING
{
= OFF
| = ON [ ( <change_tracking_option_list > [,...n] ) ]
| ( <change_tracking_option_list> [,...n] )
}
}
<change_tracking_option_list> ::=
{
AUTO_CLEANUP = { ON | OFF }
| CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
}
<containment_option> ::=
CONTAINMENT = { NONE | PARTIAL }
<cursor_option> ::=
{
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
| CURSOR_DEFAULT { LOCAL | GLOBAL }
}
<database_mirroring_option>
ALTER DATABASE Database Mirroring
<date_correlation_optimization_option> ::=
DATE_CORRELATION_OPTIMIZATION { ON | OFF }
<db_encryption_option> ::=
ENCRYPTION { ON | OFF | SUSPEND | RESUME }
<db_state_option> ::=
{ ONLINE | OFFLINE | EMERGENCY }
<db_update_option> ::=
{ READ_ONLY | READ_WRITE }
<db_user_access_option> ::=
{ SINGLE_USER | RESTRICTED_USER | MULTI_USER }
<delayed_durability_option> ::=
DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }
<external_access_option> ::=
{
DB_CHAINING { ON | OFF }
| TRUSTWORTHY { ON | OFF }
| DEFAULT_FULLTEXT_LANGUAGE = { <lcid> | <language name> | <language alias> }
| DEFAULT_LANGUAGE = { <lcid> | <language name> | <language alias> }
| NESTED_TRIGGERS = { OFF | ON }
| TRANSFORM_NOISE_WORDS = { OFF | ON }
| TWO_DIGIT_YEAR_CUTOFF = { 1753, ..., 2049, ..., 9999 }
}
<FILESTREAM_option> ::=
{
NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL
| DIRECTORY_NAME = <directory_name>
}
<HADR_options> ::=
ALTER DATABASE SET HADR
<mixed_page_allocation_option> ::=
MIXED_PAGE_ALLOCATION { OFF | ON }
<parameterization_option> ::=
PARAMETERIZATION { SIMPLE | FORCED }
<query_store_options> ::=
{
QUERY_STORE
{
= OFF [ ( FORCED ) ]
| = ON [ ( <query_store_option_list> [,...n] ) ]
| ( < query_store_option_list> [,...n] )
| CLEAR [ ALL ]
}
}
<query_store_option_list> ::=
{
OPERATION_MODE = { READ_WRITE | READ_ONLY }
| CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = number )
| DATA_FLUSH_INTERVAL_SECONDS = number
| MAX_STORAGE_SIZE_MB = number
| INTERVAL_LENGTH_MINUTES = number
| SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
| QUERY_CAPTURE_MODE = { ALL | AUTO | CUSTOM | NONE }
| MAX_PLANS_PER_QUERY = number
| WAIT_STATS_CAPTURE_MODE = { ON | OFF }
| QUERY_CAPTURE_POLICY = ( <query_capture_policy_option_list> [,...n] )
}
<query_capture_policy_option_list> :: =
{
STALE_CAPTURE_POLICY_THRESHOLD = number { DAYS | HOURS }
| EXECUTION_COUNT = number
| TOTAL_COMPILE_CPU_TIME_MS = number
| TOTAL_EXECUTION_CPU_TIME_MS = number
}
<recovery_option> ::=
{
RECOVERY { FULL | BULK_LOGGED | SIMPLE }
| TORN_PAGE_DETECTION { ON | OFF }
| PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | NONE }
}
<remote_data_archive_option> ::=
{
REMOTE_DATA_ARCHIVE =
{
ON ( SERVER = <server_name>,
{
CREDENTIAL = <db_scoped_credential_name>
| FEDERATED_SERVICE_ACCOUNT = ON | OFF
}
)
| OFF
}
}
<persistent_log_buffer_option> ::=
{
PERSISTENT_LOG_BUFFER
{
= ON (DIRECTORY_NAME= 'path-to-directory-on-a-DAX-volume')
| = OFF
}
}
<service_broker_option> ::=
{
ENABLE_BROKER
| DISABLE_BROKER
| NEW_BROKER
| ERROR_BROKER_CONVERSATIONS
| HONOR_BROKER_PRIORITY { ON | OFF }
}
<snapshot_option> ::=
{
ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
| READ_COMMITTED_SNAPSHOT { ON | OFF }
| MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = { ON | OFF }
}
<sql_option> ::=
{
ANSI_NULL_DEFAULT { ON | OFF }
| ANSI_NULLS { ON | OFF }
| ANSI_PADDING { ON | OFF }
| ANSI_WARNINGS { ON | OFF }
| ARITHABORT { ON | OFF }
| COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
| CONCAT_NULL_YIELDS_NULL { ON | OFF }
| NUMERIC_ROUNDABORT { ON | OFF }
| QUOTED_IDENTIFIER { ON | OFF }
| RECURSIVE_TRIGGERS { ON | OFF }
}
<suspend_for_snapshot_backup> ::=
SET SUSPEND_FOR_SNAPSHOT_BACKUP = { ON | OFF } [ ( MODE = COPY_ONLY ) ]
<target_recovery_time_option> ::=
TARGET_RECOVERY_TIME = target_recovery_time { SECONDS | MINUTES }
<termination>::=
{
ROLLBACK AFTER number [ SECONDS ]
| ROLLBACK IMMEDIATE
| NO_WAIT
}
<temporal_history_retention> ::=
TEMPORAL_HISTORY_RETENTION { ON | OFF }
<data_retention_policy> ::=
DATA_RETENTION { ON | OFF }
Argumenty
database_name
Nazwa bazy danych, która ma zostać zmodyfikowana.
AKTUALNY
Dotyczy: SQL Server (począwszy od programu SQL Server 2012 (11.x))
Uruchamia akcję w bieżącej bazie danych.
CURRENT
nie jest obsługiwana dla wszystkich opcji we wszystkich kontekstach. Jeśli CURRENT
się nie powiedzie, podaj nazwę bazy danych.
<accelerated_database_recovery> ::=
Dotyczy: SQL Server (począwszy od programu SQL Server 2019 (15.x))
Włącza przyspieszone odzyskiwanie bazy danych (ADR). Reguła ADR jest domyślnie wyłączona w programie SQL Server 2019 (15.x) i nowszych wersjach. Korzystając z tej składni, można wyznaczyć określoną grupę plików dla danych magazynu trwałych wersji (PVS). Jeśli żadna grupa plików nie zostanie określona, usługa PVS jest przechowywana w grupie plików PRIMARY
. Aby uzyskać więcej informacji, zobacz Zarządzanie przyspieszonym odzyskiwaniem bazy danych.
<auto_option> ::=
Steruje opcjami automatycznymi.
AUTO_CLOSE { ON | WYŁ. }
NA
Baza danych jest czysta i jej zasoby zostaną zwolnione po zakończeniu ostatniego działania użytkownika.
Baza danych zostanie automatycznie ponownie otwarta, gdy użytkownik spróbuje ponownie użyć bazy danych. Na przykład to zachowanie występuje, gdy użytkownik wystawia instrukcję
USE database_name
. Baza danych może zostać czysta zamknięta z AUTO_CLOSE ustawioną na WARTOŚĆ WŁĄCZONE. Jeśli tak, baza danych nie zostanie ponownie otwarta, dopóki użytkownik nie spróbuje użyć bazy danych przy następnym ponownym uruchomieniu aparatu bazy danych.Po zamknięciu bazy danych przy następnej próbie użycia bazy danych baza danych musi zostać otwarta, a następnie stan zmieni się na online. Może to zająć trochę czasu i może spowodować przekroczenie limitu czasu aplikacji.
OD
Baza danych pozostaje otwarta po zakończeniu ostatniego użytkownika.
Opcja AUTO_CLOSE jest przydatna w przypadku baz danych klasycznych, ponieważ umożliwia zarządzanie plikami bazy danych jako zwykłymi plikami. Można je przenosić, kopiować do tworzenia kopii zapasowych, a nawet wysyłać pocztą e-mail do innych użytkowników. Proces AUTO_CLOSE jest asynchroniczny; wielokrotne otwieranie i zamykanie bazy danych nie zmniejsza wydajności.
Nuta
Opcja AUTO_CLOSE nie jest dostępna w zawartej bazie danych ani w usłudze SQL Database.
Stan tej opcji można określić, sprawdzając kolumnę
Gdy AUTO_CLOSE jest ustawiona na WŁ., niektóre kolumny w widoku katalogu sys.databases i funkcja DATABASEPROPERTYEX zwraca wartość NULL, ponieważ baza danych jest niedostępna do pobierania danych. Aby rozwiązać ten problem, uruchom instrukcję USE, aby otworzyć bazę danych.
Dublowanie bazy danych wymaga ustawienia AUTO_CLOSE wyłączone.
Gdy baza danych jest ustawiona na AUTOCLOSE = ON
, operacja, która inicjuje automatyczne zamykanie bazy danych, czyści pamięć podręczną planu dla wystąpienia programu SQL Server. Wyczyszczenie pamięci podręcznej planu powoduje ponowne skompilowanie wszystkich kolejnych planów wykonywania i może spowodować nagłe, tymczasowe obniżenie wydajności zapytań. Począwszy od programu SQL Server 2005 (9.x) z dodatkiem Service Pack 2, dla każdego wyczyszczonego magazynu pamięci podręcznej w pamięci podręcznej planu dziennik błędów programu SQL Server zawiera następujący komunikat informacyjny: SQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations
. Ten komunikat jest rejestrowany co pięć minut, o ile pamięć podręczna jest opróżniona w tym przedziale czasu.
Ustawienie AUTO_CLOSE może być przydatną funkcją w niektórych rzadkich sytuacjach, na przykład w wystąpieniu programu SQL Server bez wystarczającej ilości pamięci do działania z dużą liczbą baz danych lub dla starszego 32-bitowego wystąpienia programu SQL Server z dużą liczbą baz danych. W takich scenariuszach warto włączyć AUTO_CLOSE i zachować zasoby pamięci wymagane do otwierania bazy danych, gdy nie ma aplikacji korzystającej z bazy danych. Po otwarciu bazy danych wymagane są pewne domyślne alokacje pamięci (na przykład struktury wewnętrzne reprezentujące różne obiekty metadanych bazy danych i dziennika transakcji).
AUTO_CREATE_STATISTICS { ON | WYŁ. }
NA
Optymalizator zapytań tworzy statystyki dotyczące pojedynczych kolumn w predykatach zapytań, w razie potrzeby, aby poprawić plany zapytań i wydajność zapytań. Te statystyki jednokolumna są tworzone podczas kompilowania zapytań przez optymalizator zapytań. Statystyki z jedną kolumną są tworzone tylko w kolumnach, które nie są jeszcze pierwszą kolumną istniejącego obiektu statystyk.
Ustawienie domyślne to WŁĄCZONE. Zalecamy użycie domyślnego ustawienia dla większości baz danych.
OD
Optymalizator zapytań nie tworzy statystyk dotyczących pojedynczych kolumn w predykatach zapytań podczas kompilowania zapytań. Ustawienie tej opcji na wartość OFF może spowodować nieoptymalne plany zapytań i obniżoną wydajność zapytań.
Stan tej opcji można określić, sprawdzając kolumnę is_auto_create_stats_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsAutoCreateStatistics
funkcji DATABASEPROPERTYEX.
Aby uzyskać więcej informacji, zobacz sekcję "Korzystanie z opcji statystyk dotyczących całej bazy danych" w Statistics.
INCREMENTAL = ON | OD
dotyczy: SQL Server (począwszy od programu SQL Server 2014 (12.x)) i usługi Azure SQL Database
Ustaw wartość AUTO_CREATE_STATISTICS na WŁ., a następnie ustaw wartość INCREMENTAL na WŁ. Spowoduje to automatyczne utworzenie statystyk jako przyrostowych zawsze, gdy są obsługiwane statystyki przyrostowe. Wartość domyślna to OFF. Aby uzyskać więcej informacji, zobacz CREATE STATISTICS.
AUTO_SHRINK { ON | WYŁ. }
NA
Pliki bazy danych są kandydatami do okresowego zmniejszania. Jeśli nie masz określonego wymagania, nie należy ustawiać opcji AUTO_SHRINK bazy danych na WŁ. Aby uzyskać więcej informacji, zobacz Zmniejszanie bazy danych.
Zarówno pliki danych, jak i pliki dziennika mogą być automatycznie zmniejszane. AUTO_SHRINK zmniejsza rozmiar dziennika transakcji tylko w przypadku ustawienia bazy danych na model odzyskiwania SIMPLE lub kopii zapasowej dziennika. Po ustawieniu AUTO_SHRINK na wartość OFF pliki bazy danych nie są automatycznie zmniejszane podczas okresowych testów dla nieużywanego miejsca.
Opcja AUTO_SHRINK zmniejsza pliki, gdy ponad 25 procent pliku zawiera nieużywane miejsce. Zmniejsza on plik do jednego z dwóch rozmiarów (w zależności od tego, co jest większe):
- Rozmiar, w którym 25 procent pliku jest nieużywane miejsce
- Rozmiar pliku podczas jego tworzenia
Nie można zmniejszyć bazy danych tylko do odczytu.
OD
Pliki bazy danych nie są automatycznie zmniejszane podczas okresowych testów dla nieużywanego miejsca.
Stan tej opcji można określić, sprawdzając kolumnę is_auto_shrink_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsAutoShrink
funkcji DATABASEPROPERTYEX.
Nuta
Opcja AUTO_SHRINK nie jest dostępna w zawartej bazie danych.
AUTO_UPDATE_STATISTICS { ON | WYŁ. }
NA
Określa, że optymalizator zapytań aktualizuje statystyki, gdy są używane przez zapytanie i kiedy mogą być nieaktualne. Statystyki stają się nieaktualne po wstawieniu, aktualizacji, usunięciu lub scalaniu operacji zmiany rozkładu danych w tabeli lub widoku indeksowanym. Optymalizator zapytań określa, kiedy statystyki mogą być nieaktualne, zliczając liczbę modyfikacji danych od ostatniej aktualizacji statystyk i porównując liczbę modyfikacji do progu. Próg jest oparty na liczbie wierszy w tabeli lub w widoku indeksowanym.
Optymalizator zapytań sprawdza nieaktualne statystyki przed skompilowanie zapytania i uruchomienie buforowanego planu zapytania. Optymalizator zapytań używa kolumn, tabel i indeksowanych widoków w predykacie zapytania, aby określić, które statystyki mogą być nieaktualne. Optymalizator zapytań określa te informacje przed skompilowanie zapytania. Przed uruchomieniem buforowanego planu zapytania aparat bazy danych sprawdza, czy plan zapytania odwołuje się up-to-date statistics.
Opcja AUTO_UPDATE_STATISTICS dotyczy statystyk utworzonych dla indeksów, pojedynczych kolumn w predykatach zapytań i statystyk tworzonych przy użyciu instrukcji CREATE STATISTICS. Ta opcja dotyczy również przefiltrowanych statystyk.
Wartość domyślna to WŁĄCZONE. Zalecamy użycie domyślnego ustawienia dla większości baz danych.
Użyj opcji AUTO_UPDATE_STATISTICS_ASYNC, aby określić, czy statystyki są aktualizowane synchronicznie, czy asynchronicznie.
OD
Określa, że optymalizator zapytań nie aktualizuje statystyk podczas ich użycia przez zapytanie. Optymalizator zapytań nie aktualizuje również statystyk, gdy mogą być nieaktualne. Ustawienie tej opcji na wartość OFF może spowodować nieoptymalne plany zapytań i obniżoną wydajność zapytań.
Stan tej opcji można określić, sprawdzając kolumnę is_auto_update_stats_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsAutoUpdateStatistics
funkcji DATABASEPROPERTYEX.
Aby uzyskać więcej informacji, zobacz sekcję "Korzystanie z opcji statystyk dotyczących całej bazy danych" w Statistics.
AUTO_UPDATE_STATISTICS_ASYNC { ON | WYŁ. }
NA
Określa, że aktualizacje statystyk dla opcji AUTO_UPDATE_STATISTICS są asynchroniczne. Optymalizator zapytań nie czeka na ukończenie aktualizacji statystyk przed skompilowanie zapytań.
Ustawienie tej opcji na WARTOŚĆ WŁĄCZONE nie ma wpływu, chyba że AUTO_UPDATE_STATISTICS jest ustawiona na WARTOŚĆ WŁĄCZONE.
Domyślnie opcja AUTO_UPDATE_STATISTICS_ASYNC jest wyłączona, a optymalizator zapytań aktualizuje statystyki synchronicznie.
OD
Określa, że aktualizacje statystyk dla opcji AUTO_UPDATE_STATISTICS są synchroniczne. Optymalizator zapytań czeka na ukończenie aktualizacji statystyk przed skompilowanie zapytań.
Nuta
Ustawienie tej opcji na WYŁ. nie ma wpływu, chyba że AUTO_UPDATE_STATISTICS jest ustawiona na WARTOŚĆ WŁĄCZONE.
Stan tej opcji można określić, sprawdzając kolumnę is_auto_update_stats_async_on
w widoku wykazu sys. databases.
Aby uzyskać więcej informacji opisujących, kiedy używać aktualizacji statystyk synchronicznych lub asynchronicznych, zobacz sekcję "Opcje statystyk" w Statistics.
<automatic_tuning_option> ::=
Dotyczy: SQL Server (począwszy od programu SQL Server 2017 (14.x))
Włącza lub wyłącza opcję automatycznego dostrajania sys.database_automatic_tuning_options
.
FORCE_LAST_GOOD_PLAN = { DEFAULT | WŁ. | WYŁ. }
DOMYŚLNY
Wartość domyślna dla programu SQL Server to WYŁĄCZONE.
NA
Aparat bazy danych automatycznie wymusza ostatni znany dobry plan na Transact-SQL zapytaniach, w których nowy plan zapytania powoduje regresję wydajności. Aparat bazy danych stale monitoruje wydajność zapytań Transact-SQL zapytania przy użyciu wymuszonego planu.
Jeśli wystąpi wzrost wydajności, aparat bazy danych nadal korzysta z ostatniego znanego dobrego planu. Jeśli nie zostanie wykryty wzrost wydajności, aparat bazy danych utworzy nowy plan zapytania. Instrukcja kończy się niepowodzeniem, jeśli magazynu zapytań
nie jest włączona lub jeśli magazyn zapytań nie znajduje się w trybie odczytu i zapisu. OD
Aparat bazy danych zgłasza potencjalne regresje wydajności zapytań spowodowane zmianami planu zapytań w widoku sys.dm_db_tuning_recommendations. Jednak te zalecenia nie są stosowane automatycznie. Użytkownicy mogą monitorować aktywne zalecenia i rozwiązywać zidentyfikowane problemy, stosując Transact-SQL skrypty wyświetlane w widoku. Wartość domyślna to OFF.
<change_tracking_option> ::=
dotyczy: SQL Server i Azure SQL Database
Steruje opcjami śledzenia zmian. Możesz włączyć śledzenie zmian, ustawić opcje, opcje zmiany i wyłączyć śledzenie zmian. Przykłady można znaleźć w sekcji przykłady w dalszej części tego artykułu.
NA
Włącza śledzenie zmian dla bazy danych. Po włączeniu śledzenia zmian można również ustawić opcje AUTOMATYCZNEGO OCZYSZCZANIA i PRZECHOWYWANIA ZMIAN.
AUTO_CLEANUP = { ON | WYŁ. }
NA
Informacje o śledzeniu zmian są automatycznie usuwane po określonym okresie przechowywania.
OD
Dane śledzenia zmian nie są automatycznie usuwane z bazy danych.
CHANGE_RETENTION = retention_period { DAYS | GODZINY | MIN }
Określa minimalny okres przechowywania informacji o śledzeniu zmian w bazie danych. Dane są usuwane tylko wtedy, gdy wartość AUTO_CLEANUP jest włączona.
retention_period jest liczbą całkowitą określającą składnik liczbowy okresu przechowywania.
Domyślny okres przechowywania to 2 dni. Minimalny okres przechowywania wynosi 1 minutę. Domyślnym typem przechowywania jest DAYS.
WYŁĄCZONE Wyłącza śledzenie zmian dla bazy danych. Wyłącz śledzenie zmian we wszystkich tabelach przed wyłączeniem śledzenia zmian w bazie danych.
<containment_option> ::=
Dotyczy: SQL Server (począwszy od programu SQL Server 2012 (11.x))
Steruje opcjami zawierania bazy danych.
ZAWIERANIE = { NONE | CZĘŚCIOWE}
ŻADEN
Baza danych nie jest zawartą bazą danych.
CZĘŚCIOWY
Baza danych jest zawartą bazą danych. Ustawianie ograniczenia bazy danych na częściowe niepowodzenie, jeśli baza danych ma włączoną replikację, przechwytywanie zmian danych lub śledzenie zmian. Sprawdzanie błędów zatrzymuje się po jednym błędzie. Aby uzyskać więcej informacji na temat zawartych baz danych, zobacz Zawarte bazy danych.
<cursor_option> ::=
Steruje opcjami kursora.
CURSOR_CLOSE_ON_COMMIT { ON | WYŁ. }
NA
Wszystkie kursory otwierane po zatwierdzeniu lub wycofaniu transakcji zostaną zamknięte.
OD
Kursory pozostają otwarte po zatwierdzeniu transakcji; wycofywanie transakcji zamyka wszystkie kursory, z wyjątkiem tych kursorów zdefiniowanych jako INSENSITIVE lub STATIC.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie bazy danych dla CURSOR_CLOSE_ON_COMMIT. Klienci ODBC i OLE DB domyślnie wystawiają ustawienie instrukcji SET na poziomie połączenia CURSOR_CLOSE_ON_COMMIT wyłączone dla sesji. Klienci uruchamiają instrukcję podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET CURSOR_CLOSE_ON_COMMIT.
Stan tej opcji można określić, sprawdzając kolumnę
CURSOR_DEFAULT { LOCAL | GLOBAL }
dotyczy: SQL Server
Określa, czy zakres kursora używa funkcji LOCAL, czy GLOBAL.
LOKALNY
Jeśli określisz wartość LOCAL i nie zdefiniujesz kursora jako globalnego podczas tworzenia kursora, zakres kursora jest lokalny. W szczególności zakres jest lokalny dla partii, procedury składowanej lub wyzwalacza, w którym utworzono kursor. Nazwa kursora jest prawidłowa tylko w tym zakresie.
Kursor można odwoływać się do zmiennych lokalnych kursora w partii, procedurze składowanej lub wyzwalaczu albo parametru OUTPUT procedury składowanej. Kursor jest niejawnie cofnięty, gdy kończy się partia, procedura składowana lub wyzwalacz. Kursor jest cofany, chyba że został przekazany z powrotem w parametrze OUTPUT. Kursor może zostać przekazany z powrotem w parametrze OUTPUT. Jeśli kursor przechodzi z powrotem w ten sposób, kursor zostanie cofnięty, gdy ostatnia zmienna odwołująca się do kursora zostanie cofnięto przydział lub przekroczy zakres.
GLOBALNY
Gdy parametr GLOBAL jest określony, a kursor nie jest zdefiniowany jako LOKALNY podczas tworzenia, zakres kursora jest globalny dla połączenia. Nazwa kursora może być przywołyowana w dowolnej procedurze składowanej lub partii wykonywanej przez połączenie.
Kursor jest niejawnie cofnięty tylko po rozłączeniu. Aby uzyskać więcej informacji, zobacz DECLARE CURSOR.
Stan tej opcji można określić, sprawdzając kolumnę is_local_cursor_default
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsLocalCursorsDefault
funkcji DATABASEPROPERTYEX.
<temporal_history_retention> ::=
TEMPORAL_HISTORY_RETENTION { ON | WYŁ. }
Domyślnie włączone, ale także automatycznie ustaw wartość OFF po operacji przywracania do punktu w czasie. Aby uzyskać więcej informacji, w tym sposób włączania tego ustawienia, zobacz Jak skonfigurować zasady przechowywania.
NA
Domyślny. Włącza zasady przechowywania tabel czasowych. Aby uzyskać więcej informacji, zobacz Zarządzanie przechowywaniem danych historycznych w tabelach czasowych z wersjami systemowymi.
OD
Nie wykonuj czasowych zasad przechowywania historycznego.
<data_retention_policy> ::=
Dotyczy tylko: tylko usługa Azure SQL Edge.
DATA_RETENTION { ON | WYŁ. }
NA
Włącza czyszczenie zasad przechowywania danych na podstawie bazy danych.
OD
Wyłącza czyszczenie zasad przechowywania danych na podstawie bazy danych.
<database_mirroring>
dotyczy: SQL Server
Aby uzyskać opisy argumentów, zobacz ALTER DATABASE Database Mirroring.
<date_correlation_optimization_option> ::=
dotyczy: SQL Server
Steruje opcją date_correlation_optimization.
DATE_CORRELATION_OPTIMIZATION { ON | WYŁ. }
NA
Program SQL Server utrzymuje statystyki korelacji, w których ograniczenie FOREIGN KEY łączy wszystkie dwie tabele w bazie danych, a tabele mają kolumny data/godzina.
OD
Statystyki korelacji nie są zachowywane.
Aby ustawić DATE_CORRELATION_OPTIMIZATION na WŁ., nie musi istnieć żadne aktywne połączenia z bazą danych, z wyjątkiem połączenia, które wykonuje instrukcję ALTER DATABASE. Następnie obsługiwanych jest wiele połączeń.
Bieżące ustawienie tej opcji można określić, sprawdzając kolumnę is_date_correlation_on
w widoku katalogu sys.databases.
<db_encryption_option> ::=
Steruje stanem szyfrowania bazy danych.
SZYFROWANIE { WŁĄCZONE | OFF | WSTRZYMAJ | WZNÓW }
NA
Ustawia bazę danych do szyfrowania.
OD
Ustawia bazę danych na nieszyfrowaną.
ZAWIESIĆ
Dotyczy: SQL Server (począwszy od programu SQL Server 2019 (15.x))
Może służyć do wstrzymania skanowania szyfrowania po włączeniu lub wyłączeniu przezroczystego szyfrowania danych lub po zmianie klucza szyfrowania.
WZNAWIAĆ
Dotyczy: SQL Server (począwszy od programu SQL Server 2019 (15.x))
Może służyć do wznowienia wcześniej wstrzymanego skanowania szyfrowania.
Aby uzyskać więcej informacji na temat szyfrowania bazy danych, zobacz transparent data encryption (TDE)i Transparent Data Encryption for Azure SQL Database, Azure SQL Managed Instance i Azure Synapse Analytics.
Po włączeniu szyfrowania na poziomie bazy danych wszystkie grupy plików są szyfrowane. Wszystkie nowe grupy plików dziedziczą zaszyfrowaną właściwość. Jeśli jakiekolwiek grupy plików w bazie danych są ustawione na WARTOŚĆ TYLKO DO ODCZYTU, operacja szyfrowania bazy danych zakończy się niepowodzeniem.
Stan szyfrowania bazy danych i stan skanowania szyfrowania można zobaczyć przy użyciu widoku dynamicznego zarządzania sys.dm_database_encryption_keys.
<db_state_option> ::=
dotyczy: SQL Server
Steruje stanem bazy danych.
OFFLINE
Baza danych jest zamknięta, czysta i oznaczona jako offline. Nie można zmodyfikować bazy danych, gdy jest ona w trybie offline.
ONLINE
Baza danych jest otwarta i dostępna do użycia.
AWARYJNEGO
Baza danych jest oznaczona READ_ONLY, rejestrowanie jest wyłączone, a dostęp jest ograniczony do członków stałej roli serwera sysadmin. Usługa EMERGENCY jest używana głównie do celów rozwiązywania problemów. Na przykład baza danych oznaczona jako podejrzana z powodu uszkodzonego pliku dziennika może być ustawiona na stan AWARYJNY. To ustawienie może umożliwić administratorowi systemu dostęp tylko do odczytu do bazy danych. Tylko członkowie stałej roli serwera sysadmin mogą ustawić bazę danych na stan AWARYJNY.
Wymaga uprawnienia ALTER DATABASE
dla jednostki bazy danych, zmiany bazy danych w trybie offline lub stanu awaryjnego, a poziom serwera ALTER ANY DATABASE
uprawnienia do przenoszenia bazy danych z trybu offline do trybu online.
Stan tej opcji można określić, sprawdzając kolumny state
i state_desc
w widoku katalogu sys.databases. Stan można również określić, sprawdzając właściwość Status
funkcji DATABASEPROPERTYEX. Aby uzyskać więcej informacji, zobacz Database States.
Baza danych oznaczona jako PRZYWRACANIE nie może być ustawiona na WARTOŚĆ OFFLINE, ONLINE lub EMERGENCY. Baza danych może być w stanie PRZYWRACANIE podczas aktywnej operacji przywracania lub gdy operacja przywracania bazy danych lub pliku dziennika kończy się niepowodzeniem z powodu uszkodzonego pliku kopii zapasowej.
<db_update_option> ::=
Określa, czy aktualizacje są dozwolone w bazie danych.
READ_ONLY
Użytkownicy mogą odczytywać dane z bazy danych, ale nie modyfikować ich.
Nuta
Aby zwiększyć wydajność zapytań, zaktualizuj statystyki przed ustawieniem bazy danych na READ_ONLY. Jeśli dodatkowe statystyki są potrzebne po ustawieniu bazy danych na READ_ONLY, aparat bazy danych tworzy statystyki w
tempdb
systemowej bazie danych. Aby uzyskać więcej informacji na temat statystyk dla bazy danych tylko do odczytu, zobacz Statistics.READ_WRITE
Baza danych jest dostępna dla operacji odczytu i zapisu.
Aby zmienić ten stan, musisz mieć wyłączny dostęp do bazy danych. Aby uzyskać więcej informacji, zobacz klauzulę SINGLE_USER.
Nuta
W federacyjnych bazach danych usługi Azure SQL Database SET { READ_ONLY | READ_WRITE }
jest wyłączona.
<db_user_access_option> ::=
Kontroluje dostęp użytkownika do bazy danych.
SINGLE_USER
dotyczy: SQL Server
Określa, że tylko jeden użytkownik naraz może uzyskać dostęp do bazy danych. Jeśli określisz SINGLE_USER, a inny użytkownik łączy się z bazą danych, instrukcja ALTER DATABASE zostanie zablokowana, dopóki wszyscy użytkownicy nie odłączą się od określonej bazy danych. Aby zastąpić to zachowanie, zobacz klauzulę WITH <zakończenie>.
Baza danych pozostaje w trybie SINGLE_USER, nawet jeśli użytkownik, który ustawił opcję, wy wylogował się. W tym momencie inny użytkownik, ale tylko jeden, może nawiązać połączenie z bazą danych.
Przed ustawieniem bazy danych na wartość SINGLE_USER sprawdź, czy opcja AUTO_UPDATE_STATISTICS_ASYNC jest ustawiona na WARTOŚĆ WYŁĄCZONE. Po ustawieniu opcji WŁĄCZONE wątek w tle używany do aktualizowania statystyk pobiera połączenie z bazą danych i nie można uzyskać dostępu do bazy danych w trybie pojedynczego użytkownika. Aby wyświetlić stan tej opcji, wykonaj zapytanie w kolumnie is_auto_update_stats_async_on
w widoku katalogu sys.databases. Jeśli opcja jest ustawiona na WŁ., wykonaj następujące zadania:
Ustaw wartość AUTO_UPDATE_STATISTICS_ASYNC na WYŁ.
Sprawdź aktywne zadania statystyk asynchronicznych, wysyłając zapytanie do widoku zarządzania dynamicznego sys.dm_exec_background_job_queue.
Jeśli istnieją aktywne zadania, zezwól na ukończenie zadań lub ręczne zakończenie ich przy użyciu KILL STATS JOB.
RESTRICTED_USER
Umożliwia łączenie się z bazą danych tylko członkom stałej roli bazy danych db_owner
i dbcreator
oraz sysadmin
stałych ról serwera. RESTRICTED_USER nie ogranicza ich liczby. Rozłącz wszystkie połączenia z bazą danych przy użyciu przedziału czasu określonego przez klauzulę zakończenia instrukcji ALTER DATABASE. Po przejściu bazy danych do stanu RESTRICTED_USER próby nawiązania połączenia przez niekwalifikowanych użytkowników zostaną odrzucone.
MULTI_USER
Wszyscy użytkownicy, którzy mają odpowiednie uprawnienia do nawiązywania połączenia z bazą danych, są dozwolone. Stan tej opcji można określić, sprawdzając kolumnę user_access
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość UserAccess
funkcji DATABASEPROPERTYEX.
<delayed_durability_option> ::=
Dotyczy: SQL Server (począwszy od programu SQL Server 2014 (12.x))
Określa, czy transakcje zatwierdzają w pełni trwałe, czy opóźnione.
NIEPEŁNOSPRAWNY
Wszystkie transakcje po
SET DISABLED
są w pełni trwałe. Wszelkie opcje trwałości ustawione w niepodzielnej instrukcji bloku lub zatwierdzenia są ignorowane.DOZWOLONE
Wszystkie transakcje po
SET ALLOWED
są w pełni trwałe lub opóźnione, w zależności od opcji trwałości ustawionej w instrukcji bloku atomowego lub zatwierdzenia.ZMUSZONA
Wszystkie transakcje po
SET FORCED
są opóźnione. Wszelkie opcje trwałości ustawione w niepodzielnej instrukcji bloku lub zatwierdzenia są ignorowane.
<external_access_option> ::=
dotyczy: SQL Server
Określa, czy baza danych może być uzyskiwana przez zasoby zewnętrzne, takie jak obiekty z innej bazy danych.
DB_CHAINING { ON | WYŁ. }
NA
Baza danych może być źródłem lub elementem docelowym łańcucha własności między bazami danych.
OD
Baza danych nie może uczestniczyć w łańcuchu własności między bazami danych.
Ważny
Wystąpienie programu SQL Server rozpoznaje to ustawienie, gdy opcja serwera łańcucha własności między bazami danych wynosi 0 (OFF). Gdy łańcuch własności między bazami danych wynosi 1 (WŁ.), wszystkie bazy danych użytkowników mogą uczestniczyć w łańcuchach własności między bazami danych, niezależnie od wartości tej opcji. Ta opcja jest ustawiana przy użyciu sp_configure.
Aby ustawić tę opcję, wymaga CONTROL SERVER
uprawnienia do bazy danych.
Nie można ustawić opcji DB_CHAINING w systemowych bazach danych master
, model
i tempdb
.
Stan tej opcji można określić, sprawdzając kolumnę is_db_chaining_on
w widoku wykazu sys. databases.
GODNE ZAUFANIA { W DNIU | WYŁ. }
NA
Moduły bazy danych (na przykład funkcje zdefiniowane przez użytkownika lub procedury składowane), które używają kontekstu personifikacji, mogą uzyskiwać dostęp do zasobów spoza bazy danych.
OD
Moduły bazy danych w kontekście personifikacji nie mogą uzyskiwać dostępu do zasobów spoza bazy danych.
WARTOŚĆ TRUSTWORTHY jest ustawiona na WARTOŚĆ OFF za każdym razem, gdy baza danych jest dołączona.
Domyślnie wszystkie systemowe bazy danych z wyjątkiem bazy danych msdb
mają wartość TRUSTWORTHY ustawioną na WARTOŚĆ OFF. Nie można zmienić wartości dla baz danych model
i tempdb
. Zalecamy, aby dla bazy danych master
nigdy nie ustawić opcji GODNE ZAUFANIA.
Aby ustawić tę opcję, wymaga CONTROL SERVER
uprawnienia do bazy danych.
Stan tej opcji można określić, sprawdzając kolumnę is_trustworthy_on
w widoku wykazu sys. databases.
DEFAULT_FULLTEXT_LANGUAGE
Dotyczy: SQL Server (począwszy od programu SQL Server 2012 (11.x))
Określa domyślną wartość języka dla kolumn indeksowanych pełnotekstowo.
Ważny
Ta opcja jest dozwolona tylko wtedy, gdy właściwość CONTAINMENT została ustawiona na WARTOŚĆ PARTIAL. Jeśli właściwość CONTAINMENT jest ustawiona na NONE, występują błędy.
DEFAULT_LANGUAGE
Dotyczy: SQL Server (począwszy od programu SQL Server 2012 (11.x))
Określa język domyślny dla wszystkich nowo utworzonych identyfikatorów logowania. Język można określić, podając identyfikator lokalny (lcid), nazwę języka lub alias języka. Aby uzyskać listę dopuszczalnych nazw języków i aliasów, zobacz sys.syslanguages. Ta opcja jest dozwolona tylko wtedy, gdy właściwość CONTAINMENT została ustawiona na WARTOŚĆ PARTIAL. Jeśli właściwość CONTAINMENT jest ustawiona na NONE, występują błędy.
NESTED_TRIGGERS
Dotyczy: SQL Server (począwszy od programu SQL Server 2012 (11.x))
Określa, czy wyzwalacz AFTER może być kaskadowy; oznacza to, że wykonaj akcję, która inicjuje inny wyzwalacz, który inicjuje inny wyzwalacz itd. Ta opcja jest dozwolona tylko wtedy, gdy właściwość CONTAINMENT została ustawiona na WARTOŚĆ PARTIAL. Jeśli właściwość CONTAINMENT jest ustawiona na NONE, występują błędy.
TRANSFORM_NOISE_WORDS
Dotyczy: SQL Server (począwszy od programu SQL Server 2012 (11.x))
Służy do pomijania komunikatu o błędzie, jeśli wyrazy szumu lub stopwords, powodują niepowodzenie operacji logicznej w kwerendzie pełnotekstowej. Ta opcja jest dozwolona tylko wtedy, gdy właściwość CONTAINMENT została ustawiona na WARTOŚĆ PARTIAL. Jeśli właściwość CONTAINMENT jest ustawiona na NONE, występują błędy.
TWO_DIGIT_YEAR_CUTOFF
Dotyczy: SQL Server (począwszy od programu SQL Server 2012 (11.x))
Określa liczbę całkowitą z zakresu od 1753 do 9999, która reprezentuje rok redukcji dla interpretowania dwóch cyfr lat jako czterocyfrowych lat. Ta opcja jest dozwolona tylko wtedy, gdy właściwość CONTAINMENT została ustawiona na WARTOŚĆ PARTIAL. Jeśli właściwość CONTAINMENT jest ustawiona na NONE, występują błędy.
<FILESTREAM_option> ::=
Dotyczy: SQL Server (począwszy od programu SQL Server 2012 (11.x))
Steruje ustawieniami fileTables.
NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | PEŁNY }
OD
Dostęp nie transakcyjny do danych FileTable jest wyłączony.
READ_ONLY
Dane FILESTREAM w tabelach FileTable w tej bazie danych mogą być odczytywane przez procesy nie transakcyjne.
PEŁNY
Włącza pełny, nie transakcyjny dostęp do danych FILESTREAM w tabelach FileTables.
DIRECTORY_NAME = <directory_name>
Nazwa katalogu zgodna z systemem Windows. Ta nazwa powinna być unikatowa wśród wszystkich nazw katalogów na poziomie bazy danych w wystąpieniu programu SQL Server. Porównanie unikatowości jest bez uwzględniania wielkości liter, niezależnie od ustawień sortowania. Tę opcję należy ustawić przed utworzeniem tabeli FileTable w tej bazie danych.
<HADR_options> ::=
dotyczy: SQL Server
Zobacz ALTER DATABASE SET HADR.
<mixed_page_allocation_option> ::=
Dotyczy: SQL Server (począwszy od programu SQL Server 2016 (13.x))
Określa, czy baza danych może tworzyć strony początkowe przy użyciu mieszanego zakresu dla pierwszych ośmiu stron tabeli lub indeksu.
MIXED_PAGE_ALLOCATION { OFF | WŁ. }
OD
Baza danych zawsze tworzy strony początkowe przy użyciu jednolitych zakresów. Off jest wartością domyślną.
NA
Baza danych może tworzyć strony początkowe przy użyciu zakresów mieszanych.
To ustawienie jest włączone dla wszystkich systemowych baz danych. Systemowa baza danych tempdb
to jedyna systemowa baza danych, która obsługuje funkcję OFF.
<PARAMETERIZATION_option> ::=
Steruje opcją parametryzacji. Aby uzyskać więcej informacji na temat parametryzacji, zobacz przewodnik po architekturze przetwarzania zapytań .
PARAMETRYZACJA { SIMPLE | WYMUSZONE }
PROSTY
Zapytania są sparametryzowane na podstawie domyślnego zachowania bazy danych.
ZMUSZONA
Program SQL Server sparametryzuje wszystkie zapytania w bazie danych.
Bieżące ustawienie tej opcji można określić, sprawdzając kolumnę is_parameterization_forced
w widoku katalogu sys.databases.
<query_store_options> ::=
Dotyczy: SQL Server (począwszy od programu SQL Server 2016 (13.x))
WŁ. | OFF [ ( WYMUSZONE ) ] | CLEAR [ WSZYSTKO ]
Określa, czy magazyn zapytań jest włączony w tej bazie danych, a także kontroluje usuwanie zawartości magazynu zapytań. Aby uzyskać więcej informacji, zobacz Query Store Usage Scenarios.
NA
Włącza magazyn zapytań.
Wiele nowych funkcji wydajności programu SQL Server 2022 (16.x), takich jak wskazówki dotyczące magazynu zapytań, opinie CE, stopień równoległości (DOP) i trwałość udzielania pamięci (MGF) wymaga włączenia magazynu zapytań. W przypadku baz danych, które zostały przywrócone z innych wystąpień programu SQL Server i dla baz danych uaktualnionych z uaktualnienia w miejscu do programu SQL Server 2022 (16.x), te bazy danych zachowują poprzednie ustawienia magazynu zapytań. Jeśli istnieją obawy dotyczące narzutu magazynu zapytań, administratorzy mogą korzystać z niestandardowych zasad przechwytywania za pomocą
QUERY_CAPTURE_MODE = CUSTOM
. Przykłady włączania magazynu zapytań z niestandardowymi opcjami zasad przechwytywania można znaleźć w sekcji Przykłady w dalszej części tego artykułu.OFF [ ( WYMUSZONE ) ]
Wyłącza magazyn zapytań. WYMUSZONE jest opcjonalne. Wymuszone przerwanie wszystkich uruchomionych zadań w tle magazynu zapytań i pomija synchroniczne opróżnianie po wyłączeniu magazynu zapytań. Powoduje, że magazyn zapytań zostanie zamknięty tak szybko, jak to możliwe. WYMUSZONE dotyczy programu SQL Server 2016 (13.x) SP2 CU14, SQL Server 2017 (14.x) CU21, SQL Server 2019 (15.x) CU6 i nowszych kompilacji.
Nuta
Nie można wyłączyć magazynu zapytań w usłudze Azure SQL Database. Wykonanie
ALTER DATABASE [database] SET QUERY_STORE = OFF
zwraca ostrzeżenie'QUERY_STORE=OFF' is not supported in this version of SQL Server.
.CLEAR [ WSZYSTKO ]
Usuwa dane związane z zapytaniami z magazynu zapytań. WSZYSTKO jest opcjonalne. WSZYSTKIE usuwa dane i metadane związane z zapytaniami z magazynu zapytań.
OPERATION_MODE { READ_ONLY | READ_WRITE }
Opisuje tryb działania magazynu zapytań.
READ_WRITE
Magazyn zapytań zbiera i utrwala informacje o statystykach wykonywania i planu zapytań.
READ_ONLY
Informacje można odczytywać z magazynu zapytań, ale nie są dodawane nowe informacje. Jeśli wyczerpano maksymalną ilość wydanego miejsca magazynu zapytań, magazyn zapytań zmieni tryb działania na READ_ONLY.
CLEANUP_POLICY
Opisuje zasady przechowywania danych magazynu zapytań. STALE_QUERY_THRESHOLD_DAYS określa liczbę dni, dla których informacje dotyczące zapytania są przechowywane w magazynie zapytań. STALE_QUERY_THRESHOLD_DAYS jest typem bigint. Wartość domyślna to 30.
DATA_FLUSH_INTERVAL_SECONDS
Określa częstotliwość, z jaką dane zapisywane w magazynie zapytań są utrwalane na dysku. Aby zoptymalizować wydajność, dane zebrane przez magazyn zapytań są asynchronicznie zapisywane na dysku. Częstotliwość, z jaką odbywa się ten transfer asynchroniczny, jest konfigurowana przy użyciu argumentu DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS jest typem bigint. Wartość domyślna to 900 (15 minut).
MAX_STORAGE_SIZE_MB
Określa miejsce wystawione dla magazynu zapytań. MAX_STORAGE_SIZE_MB jest typem bigint. Wartość domyślna to 100 MB dla programu SQL Server (SQL Server 2016 (13.x) do programu SQL Server 2017 (14.x)). Począwszy od programu SQL Server 2019 (15.x), wartość domyślna to 1000 MB.
MAX_STORAGE_SIZE_MB
limit nie jest ściśle wymuszany. Rozmiar magazynu jest sprawdzany tylko wtedy, gdy magazyn zapytań zapisuje dane na dysku. Ten interwał jest ustawiany przez opcję DATA_FLUSH_INTERVAL_SECONDS
lub opcję okna dialogowego Magazyn zapytań programu Management Studio Interwał opróżniania danych. Wartość domyślna interwału to 900 sekund (lub 15 minut).
Jeśli magazyn zapytań naruszył limit MAX_STORAGE_SIZE_MB
między sprawdzaniem rozmiaru magazynu, przechodzi do trybu tylko do odczytu. Jeśli SIZE_BASED_CLEANUP_MODE
jest włączona, zostanie również wyzwolony mechanizm oczyszczania w celu wymuszenia limitu MAX_STORAGE_SIZE_MB
.
Po wyczyszczonej ilości miejsca tryb magazynu zapytań automatycznie przełącza się z powrotem do odczytu i zapisu.
Ważny
Jeśli uważasz, że przechwytywanie obciążenia wymaga więcej niż 10 GB miejsca na dysku, prawdopodobnie należy przemyśleć i zoptymalizować obciążenie w celu ponownego użycia planów zapytań (na przykład przy użyciu wymuszonej parametryzacjilub dostosować konfiguracje magazynu zapytań.
Począwszy od programu SQL Server 2019 (15.x) i usługi Azure SQL Database, można ustawić QUERY_CAPTURE_MODE
na WARTOŚĆ CUSTOM, aby uzyskać dodatkową kontrolę nad zasadami przechwytywania zapytań.
INTERVAL_LENGTH_MINUTES
Określa interwał czasu, w którym dane statystyk wykonywania środowiska uruchomieniowego są agregowane do magazynu zapytań. Aby zoptymalizować użycie miejsca, statystyki wykonywania środowiska uruchomieniowego w magazynie statystyk środowiska uruchomieniowego są agregowane w stałym przedziale czasu. To stałe okno czasowe jest konfigurowane przy użyciu argumentu INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES jest typem bigint. Wartość domyślna to 60.
SIZE_BASED_CLEANUP_MODE { AUTO | WYŁ. }
Określa, czy oczyszczanie jest automatycznie aktywowane, gdy łączna ilość danych zbliża się do maksymalnego rozmiaru.
AUTOMATYCZNIE
Czyszczenie oparte na rozmiarach jest automatycznie aktywowane, gdy rozmiar dysku osiągnie 90% MAX_STORAGE_SIZE_MB. Oczyszczanie oparte na rozmiarach usuwa najpierw najmniej kosztowne i najstarsze zapytania. Zatrzymuje się około 80% MAX_STORAGE_SIZE_MB. Ta wartość jest wartością domyślną konfiguracji.
OD
Czyszczenie oparte na rozmiarach nie jest automatycznie aktywowane.
SIZE_BASED_CLEANUP_MODE jest typem nvarchar.
QUERY_CAPTURE_MODE { ALL | AUTO | NIESTANDARDOWE | BRAK }
Wyznacza aktualnie aktywny tryb przechwytywania zapytań. Każdy tryb definiuje określone zasady przechwytywania zapytań. QUERY_CAPTURE_MODE jest typem nvarchar.
Nuta
Kursory, zapytania wewnątrz procedur składowanych i natywnie skompilowane zapytania są zawsze przechwytywane, gdy tryb przechwytywania zapytania jest ustawiony na WSZYSTKIE, AUTOMATYCZNE lub NIESTANDARDOWE.
CAŁY
Przechwytuje wszystkie zapytania. ALL jest domyślną wartością konfiguracji programu SQL Server (SQL Server 2016 (13.x) do programu SQL Server 2017 (14.x)).
AUTOMATYCZNIE
Przechwyć odpowiednie zapytania na podstawie liczby wykonań i użycia zasobów. Jest to domyślna wartość konfiguracji programu SQL Server (począwszy od programu SQL Server 2019 (15.x)) i usługi Azure SQL Database.
ŻADEN
Zatrzymaj przechwytywanie nowych zapytań. Magazyn zapytań nadal zbiera statystyki kompilacji i środowiska uruchomieniowego dla zapytań, które zostały już przechwycone. Użyj tej konfiguracji z ostrożnością, ponieważ możesz przegapić przechwytywanie ważnych zapytań.
ZWYCZAJ
Dotyczy: SQL Server (począwszy od programu SQL Server 2019 (15.x))
Umożliwia kontrolę nad opcjami QUERY_CAPTURE_POLICY. Niestandardowe zasady przechwytywania mogą ułatwić magazynowi zapytań przechwytywanie najważniejszych zapytań w obciążeniu. Zobacz <query_capture_policy_option_list>, aby uzyskać opcje dostosowywalne.
MAX_PLANS_PER_QUERY
Definiuje maksymalną liczbę planów obsługiwanych dla każdego zapytania. MAX_PLANS_PER_QUERY jest typem int. Wartość domyślna to 200.
WAIT_STATS_CAPTURE_MODE { ON | WYŁ. }
Dotyczy: SQL Server (począwszy od programu SQL Server 2017 (14.x)))
Określa, czy statystyki oczekiwania są przechwytywane na zapytanie.
NA
Przechwytywane są informacje statystyczne dotyczące oczekiwania na zapytanie. Ta wartość jest wartością domyślną konfiguracji.
OD
Informacje o statystykach oczekiwania na zapytanie nie są przechwytywane.
<query_capture_policy_option_list> :: =
Dotyczy: SQL Server (począwszy od programu SQL Server 2019 (15.x))
Steruje opcjami zasad Query Store capture. Z wyjątkiem STALE_CAPTURE_POLICY_THRESHOLD te opcje definiują warunki OR, które muszą wystąpić, aby zapytania były przechwytywane w zdefiniowanej wartości progu nieodświeżania zasad przechwytywania.
Począwszy od programu SQL Server 2019 (15.x), ustawienie QUERY_CAPTURE_MODE = AUTO
przechwytuje szczegóły magazynu zapytań, gdy zostanie osiągnięty dowolny z następujących progów:
- EXECUTION_COUNT = 30 wykonań = liczba wykonań
- TOTAL_COMPILE_CPU_TIME_MS = 1 sekunda = czas kompilacji w milisekundach
- TOTAL_EXECUTION_CPU_TIME_MS = 100 ms = czas wykonywania procesora CPU w milisekundach
Na przykład:
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
Te opcje można dostosować za pomocą QUERY_CAPTURE_MODE = CUSTOM
:
STALE_CAPTURE_POLICY_THRESHOLD = liczba całkowita { DAYS | GODZINY }
Definiuje okres interwału oceny, aby określić, czy zapytanie powinno zostać przechwycone. Wartość domyślna to 1 dzień i można ją ustawić z zakresu od 1 godziny do siedmiu dni.
EXECUTION_COUNT = liczba całkowita
Definiuje liczbę wykonań zapytania w okresie oceny. Wartość domyślna to 30, co oznacza, że dla domyślnego progu zasad przechwytywania nieaktualnego zapytanie musi wykonać co najmniej 30 razy w ciągu jednego dnia, aby utrwało się w magazynie zapytań. EXECUTION_COUNT jest typem int.
TOTAL_COMPILE_CPU_TIME_MS = liczba całkowita
Definiuje łączny czas kompilacji, który upłynął, używany przez zapytanie w okresie oceny. Wartość domyślna to 1000, co oznacza, że dla domyślnego progu zasad przechwytywania nieaktualnego zapytanie musi mieć łącznie co najmniej jedną sekundę czasu procesora CPU spędzonego podczas kompilacji zapytania w ciągu jednego dnia, aby utrwało się w magazynie zapytań. TOTAL_COMPILE_CPU_TIME_MS jest typem int.
TOTAL_EXECUTION_CPU_TIME_MS = liczba całkowita
Definiuje całkowity czas wykonywania, który upłynął, używany przez zapytanie w okresie oceny. Wartość domyślna to 100, co oznacza, że dla domyślnego progu zasad przechwytywania nieaktualnego zapytanie musi mieć łącznie co najmniej 100 ms czasu procesora CPU spędzonego podczas wykonywania w ciągu jednego dnia, aby utrwało się w magazynie zapytań. TOTAL_EXECUTION_CPU_TIME_MS jest typem int.
<recovery_option> ::=
dotyczy: SQL Server
Steruje opcjami odzyskiwania bazy danych i sprawdzaniem błędów we/wy dysku.
PEŁNY
Zapewnia pełne odzyskiwanie po awarii nośnika przy użyciu kopii zapasowych dziennika transakcji. Jeśli plik danych jest uszkodzony, odzyskiwanie multimediów może przywrócić wszystkie zatwierdzone transakcje. Aby uzyskać więcej informacji, zobacz Modele odzyskiwania.
BULK_LOGGED
Zapewnia odzyskiwanie po awarii nośnika. Łączy najlepszą wydajność i najmniejszą ilość miejsca w dzienniku na potrzeby niektórych operacji na dużą skalę lub zbiorczo. Aby uzyskać informacje o tym, jakie operacje można rejestrować minimalnie, zobacz Dziennik transakcji. W ramach modelu odzyskiwania BULK_LOGGED rejestrowanie tych operacji jest minimalne. Aby uzyskać więcej informacji, zobacz Modele odzyskiwania.
PROSTY
Dostępna jest prosta strategia tworzenia kopii zapasowych, która używa minimalnej ilości miejsca w dzienniku. Obszar dziennika może być automatycznie używany ponownie, gdy nie jest już wymagany do odzyskiwania po awarii serwera. Aby uzyskać więcej informacji, zobacz Modele odzyskiwania.
Ważny
Prosty model odzyskiwania jest łatwiejszy do zarządzania niż pozostałe dwa modele, ale kosztem większej ekspozycji na utratę danych, jeśli plik danych jest uszkodzony. Wszystkie zmiany od czasu utraty najnowszej kopii zapasowej bazy danych lub różnicowej bazy danych i muszą zostać ręcznie ponownie wprowadzone.
Domyślny model odzyskiwania jest określany przez model odzyskiwania bazy danych systemu model
. Aby uzyskać więcej informacji na temat wybierania odpowiedniego modelu odzyskiwania, zobacz Modele odzyskiwania.
Stan tej opcji można określić, sprawdzając kolumny recovery_model
i recovery_model_desc
w widoku katalogu sys.databases. Stan można również określić, sprawdzając właściwość Recovery
funkcji DATABASEPROPERTYEX.
TORN_PAGE_DETECTION { ON | WYŁ. }
NA
Niekompletne strony można wykryć przez aparat bazy danych.
OD
Niekompletne strony nie mogą być wykrywane przez aparat bazy danych.
Ważny
Struktura składni TORN_PAGE_DETECTION ON | Wyłączenie zostanie usunięte w przyszłej wersji programu SQL Server. Unikaj używania tej struktury składni w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie używają struktury składni. Zamiast tego użyj opcji PAGE_VERIFY.
PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | BRAK }
Odnajduje uszkodzone strony bazy danych spowodowane błędami ścieżki we/wy dysku. Błędy ścieżki we/wy dysku mogą być przyczyną problemów z uszkodzeniem bazy danych. Te błędy są najczęściej spowodowane awariami zasilania lub awariami sprzętu dysku, które występują w momencie zapisywania strony na dysku.
SUMA KONTROLNA
Oblicza sumę kontrolną na zawartości całej strony i przechowuje wartość w nagłówku strony, gdy strona jest zapisywana na dysku. Gdy strona jest odczytywana z dysku, suma kontrolna jest ponownie obliczana i porównywana z wartością sumy kontrolnej przechowywaną w nagłówku strony. Jeśli wartości nie są zgodne, komunikat o błędzie 824 (wskazujący błąd sumy kontrolnej) jest zgłaszany zarówno do dziennika błędów programu SQL Server, jak i dziennika zdarzeń systemu Windows. Błąd sumy kontrolnej wskazuje problem ze ścieżką we/wy. Aby ustalić główną przyczynę, wymaga zbadania sprzętu, sterowników oprogramowania układowego, systemu BIOS, sterowników filtrów (takich jak oprogramowanie antywirusowe) i innych składników ścieżki we/wy.
TORN_PAGE_DETECTION
Zapisuje określony wzorzec 2-bitowy dla każdego sektora 512 bajtów na stronie bazy danych 8 kilobajtów (KB) i przechowywany w nagłówku strony bazy danych, gdy strona jest zapisywana na dysku. Gdy strona jest odczytywana z dysku, rozdarte bity przechowywane w nagłówku strony są porównywane z rzeczywistymi informacjami o sektorze strony.
Niedopasowane wartości wskazują, że tylko część strony została zapisana na dysku. W takiej sytuacji komunikat o błędzie 824 (wskazujący błąd rozdartej strony) jest zgłaszany zarówno do dziennika błędów programu SQL Server, jak i dziennika zdarzeń systemu Windows. Rozdarte strony są zwykle wykrywane przez odzyskiwanie bazy danych, jeśli jest to naprawdę niekompletny zapis strony. Jednak inne błędy ścieżek we/wy mogą spowodować rozdartą stronę w dowolnym momencie.
ŻADEN
Zapisy na stronie bazy danych nie generują sumy kontrolnej ani TORN_PAGE_DETECTION wartości. Program SQL Server nie weryfikuje sumy kontrolnej ani rozdartej strony podczas odczytu, nawet jeśli wartość CHECKSUM lub TORN_PAGE_DETECTION znajduje się w nagłówku strony.
Podczas korzystania z opcji PAGE_VERIFY należy wziąć pod uwagę następujące ważne kwestie:
Wartość domyślna to sum kontrolnych.
Jeśli baza danych użytkownika lub systemu zostanie uaktualniona do programu SQL Server 2005 (9.x) lub nowszej wersji, wartość PAGE_VERIFY (NONE lub TORN_PAGE_DETECTION) nie zostanie zmieniona. Zalecamy zmianę na SUMĘ KONTROLNĄ.
Nuta
We wcześniejszych wersjach programu SQL Server opcja bazy danych PAGE_VERIFY jest ustawiona na WARTOŚĆ NONE dla bazy danych
tempdb
i nie można jej modyfikować. Począwszy od programu SQL Server 2008 (10.0.x), domyślną wartością bazy danychtempdb
jest funkcja CHECKSUM dla nowych instalacji programu SQL Server. Podczas uaktualniania instalacji programu SQL Server wartość domyślna pozostaje NONE. Można zmodyfikować tę opcję. Zalecamy użycie sumy KONTROLNEj dla bazy danychtempdb
.TORN_PAGE_DETECTION może używać mniejszej liczby zasobów, ale zapewnia minimalny podzbiór ochrony sumy KONTROLNEJ.
PAGE_VERIFY można ustawić bez przełączania bazy danych w tryb offline, blokowania bazy danych lub w inny sposób utrudniania współbieżności w tej bazie danych.
SUMA KONTROLNA wzajemnie się wyklucza TORN_PAGE_DETECTION. Nie można jednocześnie włączyć obu opcji.
Po wykryciu rozdartej strony lub błędu sumy kontrolnej można odzyskać, przywracając dane lub potencjalnie ponownie kompilując indeks, jeśli awaria jest ograniczona tylko do stron indeksowania. Jeśli wystąpi błąd sumy kontrolnej, aby określić typ strony bazy danych lub stron, na które ma wpływ, uruchom polecenie DBCC CHECKDB. Aby uzyskać więcej informacji na temat opcji przywracania, zobacz RESTORE Arguments. Mimo że przywracanie danych rozwiązuje problem z uszkodzeniem danych, główna przyczyna (na przykład awaria sprzętu dysku) powinna zostać zdiagnozowana i poprawiona tak szybko, jak to możliwe, aby zapobiec kontynuowaniu błędów.
Program SQL Server ponawia próbę odczytu, który kończy się niepowodzeniem z sumą kontrolną, rozdartą stroną lub innym błędem we/wy cztery razy. Jeśli odczyt zakończy się pomyślnie w dowolnej z prób ponawiania próby, komunikat zostanie zapisany w dzienniku błędów. Polecenie, które wyzwoliło odczyt, kontynuuje. Polecenie kończy się niepowodzeniem z komunikatem o błędzie 824, jeśli ponowienie próby zakończy się niepowodzeniem.
Aby uzyskać więcej informacji na temat komunikatów o błędach 823, 824 i 825, zobacz:
- Rozwiązywanie problemów z błędem MSSQLSERVER 823
- Rozwiązywanie problemów z błędem MSSQLSERVER 824
- Rozwiązywanie problemów z błędem MSSQLSERVER 825 (próba odczytu).
Bieżące ustawienie tej opcji można określić, sprawdzając kolumnę page_verify_option
w widoku katalogu sys.databases lub właściwość IsTornPageDetectionEnabled
funkcji DATABASEPROPERTYEX.
<remote_data_archive_option> ::=
Dotyczy: SQL Server (począwszy od programu SQL Server 2016 (13.x))
Włącza lub wyłącza bazę danych Stretch dla bazy danych. Aby uzyskać więcej informacji, zobacz Stretch Database.
Ważny
Baza danych Stretch jest przestarzała w programie SQL Server 2022 (16.x) i usłudze Azure SQL Database. Ta funkcja zostanie usunięta w przyszłej wersji aparatu bazy danych. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji.
REMOTE_DATA_ARCHIVE = { ON ( SERVER = <server_name>, { CREDENTIAL = <db_scoped_credential_name> | FEDERATED_SERVICE_ACCOUNT = WŁĄCZONE | OFF } ) | OD
NA
Włącza usługę Stretch Database dla bazy danych. Aby uzyskać więcej informacji, w tym dodatkowe wymagania wstępne, zobacz Enable Stretch Database for a database for a database.
Wymaga
db_owner
uprawnienia do włączania bazy danych Stretch dla tabeli. Wymaga uprawnieńdb_owner
iCONTROL DATABASE
w celu włączenia bazy danych Stretch.SERWER = <server_name>
Określa adres serwera platformy Azure. Dołącz
.database.windows.net
część nazwy. Na przykładMyStretchDatabaseServer.database.windows.net
.CREDENTIAL = <db_scoped_credential_name>
Określa poświadczenie o zakresie bazy danych używane przez wystąpienie programu SQL Server do nawiązania połączenia z serwerem platformy Azure. Przed uruchomieniem tego polecenia upewnij się, że poświadczenia istnieją. Aby uzyskać więcej informacji, zobacz CREATE DATABASE SCOPED CREDENTIAL.
FEDERATED_SERVICE_ACCOUNT = { ON | WYŁ. }
Możesz użyć konta usługi federacyjnej dla lokalnego programu SQL Server, aby komunikować się ze zdalnym serwerem platformy Azure, gdy wszystkie poniższe warunki są spełnione.
- Konto usługi, w ramach którego uruchomiono wystąpienie programu SQL Server, jest kontem domeny.
- Konto domeny należy do domeny, której usługa Active Directory jest federacyjna z identyfikatorem Entra firmy Microsoft.
- Zdalny serwer platformy Azure jest skonfigurowany do obsługi uwierzytelniania firmy Microsoft Entra.
- Konto usługi, na którym działa wystąpienie programu SQL Server, musi być skonfigurowane jako konto
dbmanager
lubsysadmin
na zdalnym serwerze platformy Azure.
Jeśli określisz, że konto usługi federacyjnej jest włączone, nie można również określić argumentu CREDENTIAL. Podaj argument CREDENTIAL, jeśli określisz wartość OFF.
OD
Wyłącza bazę danych Stretch dla bazy danych. Aby uzyskać więcej informacji, zobacz Disable Stretch Database and bring back remote data.
Możesz wyłączyć bazę danych Stretch tylko wtedy, gdy baza danych nie zawiera już żadnych tabel, które są włączone dla bazy danych Stretch. Po wyłączeniu bazy danych Stretch migracja danych zostaje zatrzymana. Ponadto wyniki zapytania nie zawierają już wyników z tabel zdalnych.
Wyłączenie bazy danych Stretch nie powoduje usunięcia zdalnej bazy danych. Aby usunąć zdalną bazę danych, upuść ją przy użyciu witryny Azure Portal.
PERSISTENT_LOG_BUFFER
Dotyczy: SQL Server 2017 (14.x) i nowszych.
Po określeniu tej opcji bufor dziennika transakcji jest tworzony na woluminie, który znajduje się na urządzeniu dyskowym wspieranym przez pamięć klasy magazynu (NVDIMM-N magazynu nieulotnego), znany również jako trwały bufor dziennika. Aby uzyskać więcej informacji, zobacz przyspieszanie opóźnienia zatwierdzania transakcji przy użyciu pamięci klasy magazynu i Dodawanie buforu dziennika trwałego do bazy danych.
<service_broker_option> ::=
dotyczy: SQL Server
Steruje następującymi opcjami usługi Service Broker: włącza lub wyłącza dostarczanie komunikatów, ustawia nowy identyfikator usługi Service Broker lub ustawia priorytety konwersacji na WŁ. lub WYŁ.
ENABLE_BROKER
Określa, że usługa Service Broker jest włączona dla określonej bazy danych. Dostarczanie komunikatów jest uruchamiane, a flaga is_broker_enabled
jest ustawiona na wartość true w widoku katalogu sys.databases. Baza danych przechowuje istniejący identyfikator usługi Service Broker. Nie można włączyć brokera usług, gdy baza danych jest jednostką w konfiguracji dublowania bazy danych.
Nuta
ENABLE_BROKER wymaga wyłącznej blokady bazy danych. Jeśli inne sesje zablokowały zasoby w bazie danych, ENABLE_BROKER czeka, aż inne sesje zwolnią blokady. Aby włączyć usługę Service Broker w bazie danych użytkownika, przed uruchomieniem instrukcji ALTER DATABASE SET ENABLE_BROKER
, na przykład przez umieszczenie bazy danych w trybie pojedynczego użytkownika, upewnij się, że żadne inne sesje nie korzystają z bazy danych. Aby włączyć usługę Service Broker w bazie danych msdb
, najpierw zatrzymaj agenta programu SQL Server, aby usługa Service Broker mogła uzyskać niezbędną blokadę.
DISABLE_BROKER
Określa, że usługa Service Broker jest wyłączona dla określonej bazy danych. Dostarczanie komunikatów zostało zatrzymane, a flaga is_broker_enabled
jest ustawiona na wartość false w widoku katalogu sys.databases. Baza danych przechowuje istniejący identyfikator usługi Service Broker.
NEW_BROKER
Określa, że baza danych powinna otrzymać nowy identyfikator brokera. Baza danych działa jako nowy broker usług. W związku z tym wszystkie istniejące konwersacje w bazie danych są natychmiast usuwane bez tworzenia końcowych komunikatów dialogowych. Każda trasa odwołująca się do starego identyfikatora usługi Service Broker musi zostać ponownie utworzona przy użyciu nowego identyfikatora.
ERROR_BROKER_CONVERSATIONS
Określa, że jest włączone dostarczanie komunikatów usługi Service Broker. To ustawienie zachowuje istniejący identyfikator usługi Service Broker dla bazy danych. Usługa Service Broker kończy wszystkie konwersacje w bazie danych z błędem. To ustawienie umożliwia aplikacjom regularne czyszczenie istniejących konwersacji.
HONOR_BROKER_PRIORITY { ON | WYŁ. }
NA
Operacje wysyłania uwzględniają poziomy priorytetów przypisane do konwersacji. Wiadomości z konwersacji o wysokim priorytcie są wysyłane przed wiadomościami z konwersacji, które mają przypisane poziomy o niskim priorytcie.
OD
Operacje wysyłania są uruchamiane tak, jakby wszystkie konwersacje miały domyślny poziom priorytetu.
Zmiany opcji HONOR_BROKER_PRIORITY zostaną zastosowane natychmiast dla nowych okien dialogowych lub okien dialogowych, które nie mają komunikatów oczekujących na wysłanie. Okna dialogowe z komunikatami, które mają być wysyłane, gdy funkcja ALTER DATABASE jest uruchamiana, nie pobierają nowego ustawienia do momentu wysłania niektórych komunikatów dla okna dialogowego. Czas, po jakim wszystkie okna dialogowe zaczną korzystać z nowego ustawienia, mogą się znacznie różnić.
Bieżące ustawienie tej właściwości jest zgłaszane w kolumnie is_broker_priority_honored
w widoku katalogu sys.databases.
<snapshot_option> ::=
Oblicza poziom izolacji transakcji.
ALLOW_SNAPSHOT_ISOLATION { ON | WYŁ. }
NA
Włącza opcję Migawka na poziomie bazy danych. Po jej włączeniu instrukcje DML zaczynają generować wersje wierszy nawet wtedy, gdy żadna transakcja nie używa izolacji migawki. Po włączeniu tej opcji transakcje mogą określać poziom izolacji transakcji MIGAWKI. Gdy transakcja jest uruchamiana na poziomie izolacji migawki, wszystkie instrukcje widzą migawkę danych, ponieważ istnieją na początku transakcji. Jeśli transakcja uruchomiona na poziomie izolacji MIGAWKi uzyskuje dostęp do danych w wielu bazach danych, ALLOW_SNAPSHOT_ISOLATION musi być ustawiona na wartość WŁ. we wszystkich bazach danych lub każda instrukcja w transakcji musi używać wskazówek blokowania dla dowolnego odwołania w klauzuli FROM do tabeli w bazie danych, w której ALLOW_SNAPSHOT_ISOLATION jest wyłączona.
OD
Wyłącza opcję Migawka na poziomie bazy danych. Transakcje nie mogą określać poziomu izolacji transakcji SNAPSHOT.
Po ustawieniu ALLOW_SNAPSHOT_ISOLATION na nowy stan (od WŁ. do WYŁ. lub OD WŁ. do WŁ.), funkcja ALTER DATABASE nie zwraca kontroli do obiektu wywołującego, dopóki wszystkie istniejące transakcje w bazie danych nie zostaną zatwierdzone. Jeśli baza danych jest już w stanie określonym w instrukcji ALTER DATABASE, kontrolka jest natychmiast zwracana do wywołującego. Jeśli instrukcja ALTER DATABASE nie zwraca się szybko, użyj sys.dm_tran_active_snapshot_database_transactions, aby określić, czy istnieją długotrwałe transakcje. Jeśli instrukcja ALTER DATABASE zostanie anulowana, baza danych pozostaje w stanie, w którym została uruchomiona. Widok katalogu sys.databases wskazuje stan transakcji izolacji migawek w bazie danych. Jeśli snapshot_isolation_state_desc
= IN_TRANSITION_TO_ON, polecenie ALTER DATABASE ... ALLOW_SNAPSHOT_ISOLATION OFF
wstrzymuje sześć sekund i ponawia próbę wykonania operacji.
Nie można zmienić stanu ALLOW_SNAPSHOT_ISOLATION, jeśli baza danych jest w trybie OFFLINE.
Jeśli ustawisz ALLOW_SNAPSHOT_ISOLATION w bazie danych READ_ONLY, ustawienie będzie zachowywane, jeśli baza danych zostanie później ustawiona na READ_WRITE.
Możesz zmienić ustawienia ALLOW_SNAPSHOT_ISOLATION dla baz danych master
, model
, msdb
i tempdb
. To ustawienie jest zachowywane za każdym razem, gdy wystąpienie aparatu bazy danych zostanie zatrzymane i ponownie uruchomione, jeśli zmienisz ustawienie dla tempdb
. Jeśli zmienisz ustawienie dla model
, to ustawienie stanie się ustawieniem domyślnym dla wszystkich nowych baz danych, które są tworzone, z wyjątkiem tempdb
.
Opcja jest domyślnie włączona dla baz danych master
i msdb
.
Bieżące ustawienie tej opcji można określić, sprawdzając kolumnę snapshot_isolation_state
w widoku katalogu sys.databases.
READ_COMMITTED_SNAPSHOT { ON | WYŁ. }
NA
Włącza opcję migawki Read-Committed na poziomie bazy danych. Po jej włączeniu instrukcje DML zaczynają generować wersje wierszy nawet wtedy, gdy żadna transakcja nie używa izolacji migawki. Po włączeniu tej opcji transakcje określające poziom izolacji zatwierdzonej odczytu używają przechowywania wersji wierszy zamiast blokowania. Wszystkie instrukcje widzą migawkę danych, ponieważ istnieją na początku instrukcji, gdy transakcja jest uruchamiana na poziomie izolacji READ COMMITTED.
OD
Wyłącza opcję migawki Read-Committed na poziomie bazy danych. Transakcje określające poziom izolacji READ COMMITTED używają blokady.
Aby ustawić READ_COMMITTED_SNAPSHOT włączone lub wyłączone, nie musi istnieć żadne aktywne połączenia z bazą danych, z wyjątkiem połączenia z uruchomionym poleceniem ALTER DATABASE. Jednak baza danych nie musi być w trybie pojedynczego użytkownika. Nie można zmienić stanu tej opcji, gdy baza danych jest w trybie OFFLINE.
Jeśli ustawisz READ_COMMITTED_SNAPSHOT w bazie danych READ_ONLY, ustawienie będzie zachowywane, gdy baza danych zostanie później ustawiona na READ_WRITE.
READ_COMMITTED_SNAPSHOT nie można włączyć dla baz danych systemu master
, tempdb
lub msdb
. Jeśli zmienisz ustawienie dla model
, to ustawienie stanie się domyślne dla wszystkich nowych baz danych utworzonych, z wyjątkiem tempdb
.
Bieżące ustawienie tej opcji można określić, sprawdzając kolumnę is_read_committed_snapshot_on
w widoku katalogu sys.databases.
Ostrzeżenie
Po utworzeniu tabeli z TRWAŁOŚCI = SCHEMA_ONLY, a READ_COMMITTED_SNAPSHOT zostanie następnie zmieniona przy użyciu ALTER DATABASE, dane w tabeli zostaną utracone.
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | WYŁ. }
Dotyczy: SQL Server (począwszy od programu SQL Server 2014 (12.x))
NA
Gdy poziom izolacji transakcji jest ustawiony na dowolny poziom izolacji niższy niż SNAPSHOT, wszystkie interpretowane operacje Transact-SQL w tabelach zoptymalizowanych pod kątem pamięci są uruchamiane w ramach izolacji migawki. Przykłady poziomów izolacji niższych niż migawka to READ COMMITTED lub READ UNCOMMITTED. Te operacje są uruchamiane, czy poziom izolacji transakcji jest ustawiany jawnie na poziomie sesji, czy jest używany niejawnie.
OD
Nie podnosi poziomu izolacji transakcji dla interpretowanych operacji Transact-SQL w tabelach zoptymalizowanych pod kątem pamięci.
Nie można zmienić stanu MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT, jeśli baza danych jest w trybie OFFLINE.
Opcja domyślna to WYŁĄCZONE.
Bieżące ustawienie tej opcji można określić, sprawdzając kolumnę is_memory_optimized_elevate_to_snapshot_on
w widoku katalogu sys.databases.
<sql_option> ::=
Steruje opcjami zgodności ANSI na poziomie bazy danych.
ANSI_NULL_DEFAULT { ON | WYŁ. }
Określa wartość domyślną NULL lub NOT NULL kolumny lub typu zdefiniowanego przez użytkownika CLR, dla którego wartość null nie jest jawnie zdefiniowana w instrukcjach CREATE TABLE lub ALTER TABLE. Kolumny zdefiniowane z ograniczeniami są zgodne z regułami ograniczeń, niezależnie od tego, jakie może być to ustawienie.
NA
Wartość domyślna niezdefiniowanej kolumny to NULL.
OD
Wartość domyślna dla niezdefiniowanej kolumny to NOT NULL.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie na poziomie bazy danych dla ANSI_NULL_DEFAULT. Klienci ODBC i OLE DB domyślnie wystawiają ustawienie instrukcji SET na poziomie połączenia ANSI_NULL_DEFAULT włączone dla sesji. Klienci uruchamiają instrukcję podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET ANSI_NULL_DFLT_ON.
W przypadku zgodności ze standardem ANSI ustawienie opcji bazy danych ANSI_NULL_DEFAULT na WŁ. powoduje zmianę domyślnej wartości null bazy danych.
Stan tej opcji można określić, sprawdzając kolumnę is_ansi_null_default_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsAnsiNullDefault
funkcji DATABASEPROPERTYEX.
ANSI_NULLS { ON | WYŁ. }
NA
Wszystkie porównania z wartością null mają wartość UNKNOWN.
OD
Porównania wartości innych niż Unicode z wartością null mają wartość TRUE, jeśli obie wartości mają wartość NULL.
Ważny
W przyszłej wersji programu SQL Server ANSI_NULLS zawsze będzie włączona, a wszystkie aplikacje, które jawnie ustawią opcję WYŁ., spowodują wystąpienie błędu. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie bazy danych dla ANSI_NULLS. Klienci ODBC i OLE DB domyślnie wystawiają ustawienie instrukcji SET na poziomie połączenia ANSI_NULLS włączone dla sesji. Klienci uruchamiają instrukcję podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET ANSI_NULLS.
Ważny
USTAW ANSI_NULLS należy również ustawić wartość WŁĄCZONE podczas tworzenia lub wprowadzania zmian w indeksach w obliczonych kolumnach lub indeksowanych widokach.
Stan tej opcji można określić, sprawdzając kolumnę is_ansi_nulls_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsAnsiNullsEnabled
funkcji DATABASEPROPERTYEX.
ANSI_PADDING { ON | WYŁ. }
NA
Ciągi są dopełniane tą samą długością przed konwersją. Ponadto dopełnione do tej samej długości przed wstawieniem do varchar lub nvarchar typu danych.
OD
Wstawia końcowe wartości puste w wartościach znaków do kolumn varchar lub nvarchar. Pozostawia również końcowe zera w wartościach binarnych wstawionych do kolumn . Wartości nie są dopełniane do długości kolumny.
Po określeniu opcji WYŁ. to ustawienie ma wpływ tylko na definicję nowych kolumn.
Ważny
W przyszłej wersji programu SQL Server ANSI_PADDING zawsze będzie włączona, a wszystkie aplikacje, które jawnie ustawią opcję WYŁ., spowodują wystąpienie błędu. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji. Zalecamy, aby zawsze ustawiać ANSI_PADDING na WŁ. ANSI_PADDING musi być włączony podczas tworzenia lub manipulowania indeksami w kolumnach obliczeniowych lub indeksowanych widokach.
char(n) i binary(n) kolumn, które zezwalają na wartości null, są dopełniane do długości kolumny, gdy ANSI_PADDING jest ustawiona na wartość WŁĄCZONE. Końcowe wartości puste i zera są przycinane, gdy ANSI_PADDING jest wyłączona. char(n) i binary(n) kolumn, które nie zezwalają na wartości null, są zawsze dopełniane długością kolumny.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie na poziomie bazy danych dla ANSI_PADDING. Klienci ODBC i OLE DB domyślnie wystawiają ustawienie instrukcji SET na poziomie połączenia ANSI_PADDING włączone dla sesji. Klienci uruchamiają instrukcję podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET ANSI_PADDING.
Stan tej opcji można określić, sprawdzając kolumnę is_ansi_padding_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsAnsiPaddingEnabled
funkcji DATABASEPROPERTYEX.
ANSI_WARNINGS { ON | WYŁ. }
NA
Błędy lub ostrzeżenia są wystawiane, gdy wystąpią warunki, takie jak dzielenie przez zero. Błędy i ostrzeżenia są również wystawiane, gdy wartości null są wyświetlane w funkcjach agregujących.
OD
Nie są wywoływane żadne ostrzeżenia, a wartości null są zwracane, gdy wystąpią warunki, takie jak dzielenie przez zero.
Ważny
Ustaw ANSI_WARNINGS należy ustawić wartość WŁĄCZONE podczas tworzenia lub wprowadzania zmian w indeksach w kolumnach obliczeniowych lub widokach indeksowanych.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie bazy danych dla ANSI_WARNINGS. Klienci ODBC i OLE DB domyślnie wystawiają ustawienie instrukcji SET na poziomie połączenia ANSI_WARNINGS włączone dla sesji. Klienci uruchamiają instrukcję podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET ANSI_WARNINGS.
Stan tej opcji można określić, sprawdzając kolumnę is_ansi_warnings_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsAnsiWarningsEnabled
funkcji DATABASEPROPERTYEX.
ARITHABORT { ON | WYŁ. }
NA
Zapytanie kończy się, gdy podczas wykonywania zapytania występuje błąd przepełnienia lub dzielenia przez zero.
OD
Gdy wystąpi jeden z tych błędów, zostanie wyświetlony komunikat ostrzegawczy. Zapytanie, wsadowe lub transakcje nadal przetwarza się tak, jakby nie wystąpił błąd, nawet jeśli zostanie wyświetlone ostrzeżenie.
Ważny
USTAWIENIE ARITHABORT musi być ustawione na WARTOŚĆ WŁĄCZONE podczas tworzenia lub wprowadzania zmian w indeksach dla obliczonych kolumn lub indeksowanych widoków.
Stan tej opcji można określić, sprawdzając kolumnę is_arithabort_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsArithmeticAbortEnabled
funkcji DATABASEPROPERTYEX.
COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Aby uzyskać więcej informacji, zobacz
CONCAT_NULL_YIELDS_NULL { ON | WYŁ. }
NA
Wynikiem operacji łączenia jest wartość NULL, gdy jeden z operandów ma wartość NULL. Na przykład łączenie ciągu znaków "To jest", a wartość NULL zwraca wartość NULL zamiast wartości "To jest".
OD
Wartość null jest traktowana jako pusty ciąg znaków.
Ważny
CONCAT_NULL_YIELDS_NULL należy ustawić wartość WŁĄCZONE podczas tworzenia lub wprowadzania zmian w indeksach w kolumnach obliczeniowych lub indeksowanych widokach.
W nadchodzących wersjach programu SQL Server CONCAT_NULL_YIELDS_NULL zawsze będzie włączona, a wszystkie aplikacje, które jawnie ustawiły opcję WYŁ., wyzwolą błąd. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie bazy danych dla CONCAT_NULL_YIELDS_NULL. Domyślnie klienci ODBC i OLE DB wystawiają ustawienie instrukcji SET na poziomie połączenia CONCAT_NULL_YIELDS_NULL na WŁ. dla sesji podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET CONCAT_NULL_YIELDS_NULL.
Stan tej opcji można określić, sprawdzając kolumnę is_concat_null_yields_null_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsNullConcat
funkcji DATABASEPROPERTYEX.
NUMERIC_ROUNDABORT { ON | WYŁ. }
NA
Błąd jest generowany, gdy w wyrażeniu występuje utrata precyzji.
OD
Utrata dokładności nie generuje komunikatu o błędzie, a wynik jest zaokrąglany do dokładności kolumny lub zmiennej przechowującej wynik.
Ważny
NUMERIC_ROUNDABORT należy ustawić wartość OFF podczas tworzenia lub wprowadzania zmian w indeksach w kolumnach obliczeniowych lub indeksowanych widokach.
Stan tej opcji można określić w kolumnie is_numeric_roundabort_on
w widoku katalogu sys.databases. Stan można również określić, sprawdzając właściwość IsNumericRoundAbortEnabled
funkcji DATABASEPROPERTYEX.
QUOTED_IDENTIFIER { ON | WYŁ. }
NA
Podwójnego cudzysłowu można używać do ujęć identyfikatorów rozdzielanych.
Wszystkie ciągi rozdzielone podwójnym cudzysłowem są interpretowane jako identyfikatory obiektów. Identyfikatory cytowane nie muszą być zgodne z regułami Transact-SQL dla identyfikatorów. Mogą to być słowa kluczowe i mogą zawierać znaki, które nie są dozwolone w identyfikatorach Transact-SQL. Jeśli podwójny cudzysłów (
"
) jest częścią identyfikatora, może być reprezentowany przez dwa podwójne cudzysłowy (""
).OD
Identyfikatory nie mogą być w cudzysłowie i muszą być zgodne ze wszystkimi regułami Transact-SQL dla identyfikatorów. Literały mogą być rozdzielane znakami pojedynczego lub podwójnego cudzysłowu.
Program SQL Server umożliwia również rozdzielenie identyfikatorów nawiasami kwadratowymi ([
i ]
). Identyfikatory w nawiasach mogą być zawsze używane, niezależnie od ustawienia QUOTED_IDENTIFIER. Aby uzyskać więcej informacji, zobacz Identyfikatory bazy danych.
Po utworzeniu tabeli opcja IDENTYFIKATOR CYTOWANY jest zawsze przechowywana jako WŁ. w metadanych tabeli. Opcja jest przechowywana nawet wtedy, gdy opcja jest ustawiona na WARTOŚĆ OFF podczas tworzenia tabeli.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie bazy danych dla QUOTED_IDENTIFIER. Klienci ODBC i OLE DB wystawiają ustawienie instrukcji SET na poziomie połączenia QUOTED_IDENTIFIER domyślnie włączone. Klienci uruchamiają instrukcję podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET QUOTED_IDENTIFIER.
Stan tej opcji można określić, sprawdzając kolumnę is_quoted_identifier_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsQuotedIdentifiersEnabled
funkcji DATABASEPROPERTYEX.
RECURSIVE_TRIGGERS { ON | WYŁ. }
NA
Rekursywne wypalanie wyzwalaczy AFTER jest dozwolone.
OD
Stan tej opcji można określić, sprawdzając kolumnę
is_recursive_triggers_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwośćIsRecursiveTriggersEnabled
funkcji DATABASEPROPERTYEX.
Nuta
Nie można zapobiegać rekursji bezpośredniej tylko wtedy, gdy RECURSIVE_TRIGGERS jest ustawiona na wartość OFF. Aby wyłączyć rekursję pośrednią, należy również ustawić opcję serwera wyzwalaczy zagnieżdżonych na 0.
Stan tej opcji można określić, sprawdzając kolumnę
<suspend_for_snapshot_backup> ::=
Dotyczy: SQL Server (począwszy od programu SQL Server 2022 (16.x))
Zawiesza bazy danych na potrzeby tworzenia kopii zapasowej migawek. Może zdefiniować grupę co najmniej jednej bazy danych. Może wyznaczyć tryb tylko do kopiowania.
SET SUSPEND_FOR_SNAPSHOT_BACKUP = { ON | OFF }
Zawiesza lub zawiesza bazy danych. Domyślnie WYŁĄCZONE.
MODE = COPY_ONLY
Fakultatywny. Używa trybu COPY_ONLY.
<target_recovery_time_option> ::=
Dotyczy: SQL Server (począwszy od programu SQL Server 2012 (11.x))
Określa częstotliwość pośrednich punktów kontrolnych dla poszczególnych baz danych. Począwszy od programu SQL Server 2016 (13.x), domyślną wartością dla nowych baz danych jest 1 minuta, co wskazuje, że baza danych używa pośrednich punktów kontrolnych. W przypadku starszych wersji wartość domyślna to 0, co oznacza, że baza danych używa automatycznych punktów kontrolnych, których częstotliwość zależy od ustawienia interwału odzyskiwania wystąpienia serwera. Firma Microsoft zaleca 1 minutę dla większości systemów.
TARGET_RECOVERY_TIME = target_recovery_time { S | MIN }
target_recovery_time
Określa maksymalną granicę czasu odzyskiwania określonej bazy danych w przypadku awarii. target_recovery_time jest typem int.
SEKUND
Wskazuje, że target_recovery_time jest wyrażona jako liczba sekund.
PROTOKÓŁ
Wskazuje, że target_recovery_time jest wyrażona jako liczba minut.
Aby uzyskać więcej informacji na temat pośrednich punktów kontrolnych, zobacz Database checkpoints.
Z kończeniem <> ::=
Określa, kiedy wycofać niekompletne transakcje, gdy baza danych zostanie przeniesiona z jednego stanu do innego. Jeśli klauzula zakończenia zostanie pominięta, instrukcja ALTER DATABASE czeka na czas nieokreślony, jeśli w bazie danych istnieje blokada. Można określić tylko jedną klauzulę zakończenia i jest zgodna z klauzulami SET.
Nuta
Nie wszystkie opcje bazy danych używają klauzuli WITH <zakończenie>. Aby uzyskać więcej informacji, zobacz tabelę w obszarze Opcje ustawień sekcji "Uwagi" tego artykułu.
WYCOFYWANIE PO liczbą całkowitą [SEKUNDY] | NATYCHMIASTOWE WYCOFANIE
Określa, czy należy wycofać się po określonej liczbie sekund, czy natychmiast.
NO_WAIT
Określa, że żądanie kończy się niepowodzeniem, jeśli żądany stan bazy danych lub zmiana opcji nie może zakończyć się natychmiast. Ukończenie natychmiast oznacza, że nie trzeba czekać na transakcje do zatwierdzenia lub wycofania na własną rękę.
Ustawianie opcji
Aby pobrać bieżące ustawienia opcji bazy danych, użyj widoku katalogu sys.databases lub DATABASEPROPERTYEX
Po ustawieniu opcji bazy danych nowe ustawienie zostanie zastosowane natychmiast.
Możesz zmienić wartości domyślne dla dowolnej z opcji bazy danych dla wszystkich nowo utworzonych baz danych. W tym celu zmień odpowiednią opcję bazy danych w bazie danych model
.
Nie wszystkie opcje bazy danych używają klauzuli> zakończenia WITH <lub można określić w połączeniu z innymi opcjami. W poniższej tabeli wymieniono te opcje oraz ich opcje i stan zakończenia.
Kategoria opcji | Można określić z innymi opcjami | Może używać klauzuli <zakończenia with> |
---|---|---|
<db_state_option> | Tak | Tak |
<db_user_access_option> | Tak | Tak |
<db_update_option> | Tak | Tak |
<delayed_durability_option> | Tak | Tak |
<external_access_option> | Tak | Nie |
<cursor_option> | Tak | Nie |
<auto_option> | Tak | Nie |
<sql_option> | Tak | Nie |
<recovery_option> | Tak | Nie |
<target_recovery_time_option> | Nie | Tak |
<database_mirroring_option> | Nie | Nie |
ALLOW_SNAPSHOT_ISOLATION | Nie | Nie |
READ_COMMITTED_SNAPSHOT | Nie | Tak |
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT | Tak | Tak |
<service_broker_option> | Tak | Nie |
DATE_CORRELATION_OPTIMIZATION | Tak | Tak |
<parameterization_option> | Tak | Tak |
<change_tracking_option> | Tak | Tak |
<db_encryption_option> | Tak | Nie |
<accelerated_database_recovery> | Tak | Tak |
Pamięć podręczna planu dla wystąpienia programu SQL Server jest czyszczone, ustawiając jedną z następujących opcji:
OFFLINE
ONLINE
MODIFY_NAME
COLLATE
READ_ONLY
READ_WRITE
MODYFIKOWANIE DOMYŚLNEJ GRUPY PLIKÓW
MODYFIKOWANIE READ_WRITE FILEGROUP
MODYFIKOWANIE READ_ONLY FILEGROUP
Pamięć podręczna planu jest również opróżniona w następujących scenariuszach.
- Baza danych ma opcję bazy danych AUTO_CLOSE ustawioną na WŁ. Jeśli żadne połączenie użytkownika nie odwołuje się do bazy danych ani nie korzysta z bazy danych, zadanie w tle próbuje zamknąć i zamknąć bazę danych automatycznie.
- Uruchamiasz kilka zapytań względem bazy danych, która ma opcje domyślne. Następnie baza danych zostanie porzucona.
- Migawka bazy danych źródłowej bazy danych została porzucona.
- Pomyślnie ponownie skompilujesz dziennik transakcji dla bazy danych.
- Przywracasz kopię zapasową bazy danych.
- Odłączasz bazę danych.
Wyczyszczenie pamięci podręcznej planu powoduje ponowne skompilowanie wszystkich kolejnych planów wykonywania i może spowodować nagłe, tymczasowe obniżenie wydajności zapytań. Dla każdego wyczyszczonego magazynu pamięci podręcznej w pamięci podręcznej planu dziennik błędów programu SQL Server zawiera następujący komunikat informacyjny: SQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations
. Ten komunikat jest rejestrowany co pięć minut, o ile pamięć podręczna jest opróżniona w tym przedziale czasu.
Przykłady
A. Ustawianie opcji w bazie danych
W poniższym przykładzie ustawiono opcje weryfikacji modelu odzyskiwania i strony danych dla przykładowej bazy danych AdventureWorks2022
.
USE master;
GO
ALTER DATABASE [database_name]
SET RECOVERY FULL PAGE_VERIFY CHECKSUM;
GO
B. Ustaw bazę danych na READ_ONLY
Zmiana stanu bazy danych lub grupy plików na READ_ONLY lub READ_WRITE wymaga wyłącznego dostępu do bazy danych. Poniższy przykład ustawia bazę danych na tryb SINGLE_USER
w celu uzyskania wyłącznego dostępu. Następnie przykład ustawia stan bazy danych AdventureWorks2022
na READ_ONLY
i zwraca dostęp do bazy danych wszystkim użytkownikom.
Nuta
W tym przykładzie użyto opcji zakończenia WITH ROLLBACK IMMEDIATE
w pierwszej instrukcji ALTER DATABASE
. Wszystkie niekompletne transakcje zostaną wycofane, a wszystkie inne połączenia z bazą danych AdventureWorks2022
zostaną natychmiast rozłączone.
USE master;
GO
ALTER DATABASE [database_name]
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE [database_name]
SET READ_ONLY
GO
ALTER DATABASE [database_name]
SET MULTI_USER;
GO
C. Włączanie izolacji migawek w bazie danych
W poniższym przykładzie jest włączona opcja struktury izolacji migawek dla bazy danych AdventureWorks2022
.
USE [database_name];
USE master;
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
-- Check the state of the snapshot_isolation_framework
-- in the database.
SELECT name, snapshot_isolation_state,
snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'[database_name]';
GO
Zestaw wyników pokazuje, że platforma izolacji migawek jest włączona.
nazwa | snapshot_isolation_state | opis |
---|---|---|
[database_name] | 1 | NA |
D. Włączanie, modyfikowanie lub wyłączanie śledzenia zmian
Poniższy przykład umożliwia śledzenie zmian dla bazy danych AdventureWorks2022
i ustawia okres przechowywania na 2
dni.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);
W poniższym przykładzie pokazano, jak zmienić okres przechowywania na 3
dni.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);
W poniższym przykładzie pokazano, jak wyłączyć śledzenie zmian dla bazy danych AdventureWorks2022
.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
E. Włączanie magazynu zapytań
Dotyczy: SQL Server (począwszy od programu SQL Server 2016 (13.x))
Poniższy przykład umożliwia magazyn zapytań i konfiguruje jego parametry.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
QUERY_CAPTURE_MODE = AUTO,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60
);
F. Włączanie magazynu zapytań ze statystykami oczekiwania
Dotyczy: SQL Server (począwszy od programu SQL Server 2017 (14.x))
Poniższy przykład umożliwia magazyn zapytań i konfiguruje jego parametry.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON,
);
G. Włączanie magazynu zapytań przy użyciu niestandardowych opcji zasad przechwytywania
Dotyczy: SQL Server (począwszy od programu SQL Server 2019 (15.x))
Poniższy przykład umożliwia magazyn zapytań i konfiguruje jego parametry.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON,
QUERY_CAPTURE_MODE = CUSTOM,
QUERY_CAPTURE_POLICY = (
STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
)
);
Powiązana zawartość
- statystyki
- DATABASEPROPERTYEX (Transact-SQL)
-
sys.databases - sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
poziomu zgodności z usługą ALTER DATABASE - dublowania bazy danych ALTER DATABASE
- ALTER DATABASE SET HADR
- CREATE DATABASE
- włączanie i wyłączanie śledzenia zmian (SQL Server)
- DROP DATABASE (Transact-SQL)
- USTAWIĆ POZIOM IZOLACJI TRANSAKCJI (Transact-SQL)
- sp_configure
- Najlepsze rozwiązania dotyczące monitorowania obciążeń za pomocą magazynu zapytań
* SQL Database *
usługi
Azure Synapse
analizy
SQL Database
Poziomy zgodności to
Nuta
Wiele opcji zestawu baz danych można skonfigurować dla bieżącej sesji przy użyciu instrukcji SET i są często konfigurowane przez aplikacje podczas nawiązywania połączenia. Opcje zestawu na poziomie sesji zastępują wartości ALTER DATABASE SET
. Opcje bazy danych opisane w poniższych sekcjach to wartości, które można ustawić dla sesji, które nie zapewniają jawnie innych wartości opcji zestawu.
Składnia
ALTER DATABASE { database_name | Current }
SET
{
<option_spec> [ ,...n ] [ WITH <termination> ]
}
;
<option_spec> ::=
{
<auto_option>
| <automatic_tuning_option>
| <change_tracking_option>
| <cursor_option>
| <db_encryption_option>
| <db_update_option>
| <db_user_access_option>
| <delayed_durability_option>
| <parameterization_option>
| <query_store_options>
| <snapshot_option>
| <sql_option>
| <target_recovery_time_option>
| <termination>
| <temporal_history_retention>
}
;
<auto_option> ::=
{
AUTO_CREATE_STATISTICS { OFF | ON [ ( INCREMENTAL = { ON | OFF } ) ] }
| AUTO_SHRINK { ON | OFF }
| AUTO_UPDATE_STATISTICS { ON | OFF }
| AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}
<automatic_tuning_option> ::=
{
AUTOMATIC_TUNING = { AUTO | INHERIT | CUSTOM }
| AUTOMATIC_TUNING ( CREATE_INDEX = { DEFAULT | ON | OFF } )
| AUTOMATIC_TUNING ( DROP_INDEX = { DEFAULT | ON | OFF } )
| AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF } )
}
<change_tracking_option> ::=
{
CHANGE_TRACKING
{
= OFF
| = ON [ ( <change_tracking_option_list > [,...n] ) ]
| ( <change_tracking_option_list> [,...n] )
}
}
<change_tracking_option_list> ::=
{
AUTO_CLEANUP = { ON | OFF }
| CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
}
<cursor_option> ::=
{
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
}
<db_encryption_option> ::=
ENCRYPTION { ON | OFF }
<db_update_option> ::=
{ READ_ONLY | READ_WRITE }
<db_user_access_option> ::=
{ RESTRICTED_USER | MULTI_USER }
<delayed_durability_option> ::= DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }
<parameterization_option> ::=
PARAMETERIZATION { SIMPLE | FORCED }
<query_store_options> ::=
{
QUERY_STORE
{
= OFF
| = ON [ ( <query_store_option_list> [,... n] ) ]
| ( < query_store_option_list> [,... n] )
| CLEAR [ ALL ]
}
}
<query_store_option_list> ::=
{
OPERATION_MODE = { READ_WRITE | READ_ONLY }
| CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = number )
| DATA_FLUSH_INTERVAL_SECONDS = number
| MAX_STORAGE_SIZE_MB = number
| INTERVAL_LENGTH_MINUTES = number
| SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
| QUERY_CAPTURE_MODE = { ALL | AUTO | CUSTOM | NONE }
| MAX_PLANS_PER_QUERY = number
| WAIT_STATS_CAPTURE_MODE = { ON | OFF }
| QUERY_CAPTURE_POLICY = ( <query_capture_policy_option_list> [,...n] )
}
<query_capture_policy_option_list> :: =
{
STALE_CAPTURE_POLICY_THRESHOLD = number { DAYS | HOURS }
| EXECUTION_COUNT = number
| TOTAL_COMPILE_CPU_TIME_MS = number
| TOTAL_EXECUTION_CPU_TIME_MS = number
}
<snapshot_option> ::=
{
ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
| READ_COMMITTED_SNAPSHOT { ON | OFF }
| MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }
}
<sql_option> ::=
{
ANSI_NULL_DEFAULT { ON | OFF }
| ANSI_NULLS { ON | OFF }
| ANSI_PADDING { ON | OFF }
| ANSI_WARNINGS { ON | OFF }
| ARITHABORT { ON | OFF }
| COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
| CONCAT_NULL_YIELDS_NULL { ON | OFF }
| NUMERIC_ROUNDABORT { ON | OFF }
| QUOTED_IDENTIFIER { ON | OFF }
| RECURSIVE_TRIGGERS { ON | OFF }
}
<termination>::=
{
ROLLBACK AFTER integer [ SECONDS ]
| ROLLBACK IMMEDIATE
| NO_WAIT
}
<temporal_history_retention>::=TEMPORAL_HISTORY_RETENTION { ON | OFF }
Argumenty
database_name
Nazwa bazy danych, która ma zostać zmodyfikowana.
AKTUALNY
CURRENT
uruchamia akcję w bieżącej bazie danych.CURRENT
nie jest obsługiwana dla wszystkich opcji we wszystkich kontekstach. JeśliCURRENT
się nie powiedzie, podaj nazwę bazy danych.
<auto_option> ::=
Steruje opcjami automatycznymi.
AUTO_CREATE_STATISTICS { ON | WYŁ. }
NA
Optymalizator zapytań tworzy statystyki dotyczące pojedynczych kolumn w predykatach zapytań, w razie potrzeby, aby poprawić plany zapytań i wydajność zapytań. Te statystyki jednokolumna są tworzone podczas kompilowania zapytań przez optymalizator zapytań. Statystyki z jedną kolumną są tworzone tylko w kolumnach, które nie są jeszcze pierwszą kolumną istniejącego obiektu statystyk.
Wartość domyślna to WŁĄCZONE. Zalecamy użycie domyślnego ustawienia dla większości baz danych.
OD
Optymalizator zapytań nie tworzy statystyk dotyczących pojedynczych kolumn w predykatach zapytań podczas kompilowania zapytań. Ustawienie tej opcji na wartość OFF może spowodować nieoptymalne plany zapytań i obniżoną wydajność zapytań.
Stan tej opcji można określić, sprawdzając kolumnę is_auto_create_stats_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsAutoCreateStatistics
funkcji DATABASEPROPERTYEX.
Aby uzyskać więcej informacji, zobacz sekcję "Opcje statystyk" w Statistics.
INCREMENTAL = ON | OD
Ustaw wartość AUTO_CREATE_STATISTICS na WŁ., a następnie ustaw wartość INCREMENTAL na WŁ. To ustawienie tworzy automatycznie utworzone statystyki jako przyrostowe zawsze, gdy są obsługiwane statystyki przyrostowe. Wartość domyślna to OFF. Aby uzyskać więcej informacji, zobacz CREATE STATISTICS.
AUTO_SHRINK { ON | WYŁ. }
NA
Pliki bazy danych są kandydatami do okresowego zmniejszania. Jeśli nie masz określonego wymagania, nie należy ustawiać opcji AUTO_SHRINK bazy danych na WŁ. Aby uzyskać więcej informacji, zobacz Zmniejszanie bazy danych.
Zarówno plik danych, jak i pliki dziennika mogą być automatycznie zmniejszane. AUTO_SHRINK zmniejsza rozmiar dziennika transakcji tylko w przypadku ustawienia bazy danych na model odzyskiwania SIMPLE lub kopii zapasowej dziennika. W przypadku ustawienia wyłączone pliki bazy danych nie są automatycznie zmniejszane podczas okresowych testów dla nieużywanego miejsca.
Opcja AUTO_SHRINK powoduje, że pliki są zmniejszane, gdy ponad 25 procent pliku zawiera nieużywane miejsce. Opcja powoduje zmniejszenie pliku do jednego z dwóch rozmiarów. Zmniejsza się w zależności od tego, co jest większe:
- Rozmiar, w którym 25 procent pliku jest nieużywane miejsce
- Rozmiar pliku podczas jego tworzenia
Nie można zmniejszyć bazy danych tylko do odczytu.
OD
Pliki bazy danych nie są automatycznie zmniejszane podczas okresowych testów dla nieużywanego miejsca.
Stan tej opcji można określić, sprawdzając kolumnę is_auto_shrink_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsAutoShrink
funkcji DATABASEPROPERTYEX.
Nuta
Opcja AUTO_SHRINK nie jest dostępna w zawartej bazie danych.
AUTO_UPDATE_STATISTICS { ON | WYŁ. }
NA
Określa, że optymalizator zapytań aktualizuje statystyki, gdy są używane przez zapytanie i kiedy mogą być nieaktualne. Statystyki stają się nieaktualne po wstawieniu, aktualizacji, usunięciu lub scalaniu operacji zmiany rozkładu danych w tabeli lub widoku indeksowanym. Optymalizator zapytań określa, kiedy statystyki mogą być nieaktualne, zliczając liczbę modyfikacji danych od ostatniej aktualizacji statystyk i porównując liczbę modyfikacji do progu. Próg jest oparty na liczbie wierszy w tabeli lub w widoku indeksowanym.
Optymalizator zapytań sprawdza nieaktualne statystyki przed skompilowanie zapytania i uruchomienie buforowanego planu zapytania. Optymalizator zapytań używa kolumn, tabel i indeksowanych widoków w predykacie zapytania, aby określić, które statystyki mogą być nieaktualne. Optymalizator zapytań określa te informacje przed skompilowanie zapytania. Przed uruchomieniem buforowanego planu zapytania aparat bazy danych sprawdza, czy plan zapytania odwołuje się up-to-date statistics.
Opcja AUTO_UPDATE_STATISTICS dotyczy statystyk utworzonych dla indeksów, pojedynczych kolumn w predykatach zapytań i statystyk tworzonych przy użyciu instrukcji CREATE STATISTICS. Ta opcja dotyczy również przefiltrowanych statystyk.
Wartość domyślna to WŁĄCZONE. Zalecamy użycie domyślnego ustawienia dla większości baz danych.
Użyj opcji AUTO_UPDATE_STATISTICS_ASYNC, aby określić, czy statystyki są aktualizowane synchronicznie, czy asynchronicznie.
OD
Określa, że optymalizator zapytań nie aktualizuje statystyk podczas ich użycia przez zapytanie. Optymalizator zapytań nie aktualizuje również statystyk, gdy mogą być nieaktualne. Ustawienie tej opcji na wartość OFF może spowodować nieoptymalne plany zapytań i obniżoną wydajność zapytań.
Stan tej opcji można określić, sprawdzając kolumnę
is_auto_update_stats_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwośćIsAutoUpdateStatistics
funkcji DATABASEPROPERTYEX.Aby uzyskać więcej informacji, zobacz sekcję "Opcje statystyk" w Statistics.
AUTO_UPDATE_STATISTICS_ASYNC { ON | WYŁ. }
NA
Określa, że aktualizacje statystyk dla opcji AUTO_UPDATE_STATISTICS są asynchroniczne. Optymalizator zapytań nie czeka na ukończenie aktualizacji statystyk przed skompilowanie zapytań.
Ustawienie tej opcji na WARTOŚĆ WŁĄCZONE nie ma wpływu, chyba że AUTO_UPDATE_STATISTICS jest ustawiona na WARTOŚĆ WŁĄCZONE.
Domyślnie opcja AUTO_UPDATE_STATISTICS_ASYNC jest ustawiona na WYŁĄCZONE, a optymalizator zapytań aktualizuje statystyki synchronicznie.
OD
Określa, że aktualizacje statystyk dla opcji AUTO_UPDATE_STATISTICS są synchroniczne. Optymalizator zapytań czeka na ukończenie aktualizacji statystyk przed skompilowanie zapytań.
Ustawienie tej opcji na WYŁ. nie ma wpływu, chyba że AUTO_UPDATE_STATISTICS jest ustawiona na WARTOŚĆ WŁĄCZONE.
Stan tej opcji można określić, sprawdzając kolumnę is_auto_update_stats_async_on
w widoku wykazu sys. databases.
Aby uzyskać więcej informacji opisujących, kiedy używać aktualizacji statystyk synchronicznych lub asynchronicznych, zobacz sekcję "Opcje statystyk" w Statistics.
<automatic_tuning_option> ::=
Steruje opcjami automatycznymi automatycznego dostrajania. Opcje następujących ustawień można wyświetlić w witrynie Azure Portal lub za pośrednictwem języka T-SQL w widoku sys.database_automatic_tuning_options
.
AUTOMATIC_TUNING = { AUTO | DZIEDZICZ | CUSTOM }
AUTOMATYCZNIE
Ustawienie wartości automatycznego dostrajania na wartość AUTO powoduje zastosowanie domyślnych ustawień konfiguracji platformy Azure na potrzeby automatycznego dostrajania. W witrynie Azure Portal odzwierciedla to opcję "Dziedzicz z: wartości domyślne platformy Azure".
ODZIEDZICZYĆ
Użycie wartości INHERIT dziedziczy domyślną konfigurację z serwera nadrzędnego. W witrynie Azure Portal odzwierciedla to opcję "Dziedzicz z: serwer". Jest to szczególnie przydatne, jeśli chcesz dostosować konfigurację automatycznego dostrajania na serwerze nadrzędnym i mieć wszystkie bazy danych na takim serwerze DZIEDZICZĄ te ustawienia niestandardowe. Aby dziedziczenie działało, trzy poszczególne opcje dostrajania FORCE_LAST_GOOD_PLAN, CREATE_INDEX i DROP_INDEX muszą być ustawione na WARTOŚĆ DOMYŚLNA w bazach danych.
ZWYCZAJ
Przy użyciu wartości CUSTOM należy skonfigurować każdą z opcji automatycznego dostrajania dostępnych w bazach danych. W witrynie Azure Portal odzwierciedla to opcję "Dziedzicz z: Nie dziedzicz".
CREATE_INDEX = { DEFAULT | WŁ. | WYŁ. }
Włącza lub wyłącza automatyczne zarządzanie indeksami CREATE_INDEX
opcji automatycznego dostrajania . Stan tej opcji można wyświetlić w witrynie Azure Portal lub za pośrednictwem języka T-SQL w widoku sys.database_automatic_tuning_options
.
DOMYŚLNY
Dziedziczy ustawienia domyślne z serwera. W takim przypadku opcje włączania lub wyłączania poszczególnych funkcji automatycznego dostrajania są definiowane na poziomie serwera.
NA
Po włączeniu brakujące indeksy są generowane automatycznie w bazie danych. Po utworzeniu indeksu są weryfikowane wzrosty wydajności obciążenia. Gdy taki utworzony indeks nie zapewnia już korzyści z wydajności obciążenia, zostanie on automatycznie przywrócony. Utworzone automatycznie indeksy są oflagowane jako indeksowane przez system.
OD
Nie generuje automatycznie brakujących indeksów w bazie danych.
DROP_INDEX = { DEFAULT | WŁ. | WYŁ. }
Włącza lub wyłącza automatyczne zarządzanie indeksami DROP_INDEX
opcji automatycznego dostrajania . Stan tej opcji można wyświetlić w witrynie Azure Portal lub za pośrednictwem języka T-SQL w widoku sys.database_automatic_tuning_options
.
DOMYŚLNY
Dziedziczy ustawienia domyślne z serwera. W takim przypadku opcje włączania lub wyłączania poszczególnych funkcji automatycznego dostrajania są definiowane na poziomie serwera.
NA
Automatycznie odrzuca zduplikowane lub nie są już przydatne indeksy do obciążenia wydajności.
OD
Nie usuwa automatycznie brakujących indeksów w bazie danych.
FORCE_LAST_GOOD_PLAN = { DEFAULT | WŁ. | WYŁ. }
Włącza lub wyłącza automatyczną korektę planu FORCE_LAST_GOOD_PLAN
opcji automatycznego dostrajania . Stan tej opcji można wyświetlić w witrynie Azure Portal lub za pośrednictwem języka T-SQL w widoku sys.database_automatic_tuning_options
.
DOMYŚLNY
Dziedziczy ustawienia domyślne z serwera. W takim przypadku opcje włączania lub wyłączania poszczególnych funkcji automatycznego dostrajania są definiowane na poziomie serwera. Jest to wartość domyślna. Wartość domyślna dla nowych serwerów Azure SQL jest włączona, co oznacza, że domyślnie nowe bazy danych dziedziczą ustawienie WŁĄCZONE.
NA
Aparat bazy danych automatycznie wymusza ostatni znany dobry plan na Transact-SQL zapytaniach, w których nowy plan zapytania powoduje regresję wydajności. Aparat bazy danych stale monitoruje wydajność zapytań Transact-SQL zapytania przy użyciu wymuszonego planu. Jeśli wystąpi wzrost wydajności, aparat bazy danych nadal korzysta z ostatniego znanego dobrego planu. Jeśli nie zostanie wykryty wzrost wydajności, aparat bazy danych utworzy nowy plan zapytania. Instrukcja kończy się niepowodzeniem, jeśli magazyn zapytań nie jest włączony lub nie jest w trybie odczytu i zapisu.
OD
Aparat bazy danych zgłasza potencjalne regresje wydajności zapytań spowodowane zmianami planu zapytań w widoku sys.dm_db_tuning_recommendations. Jednak te zalecenia nie są stosowane automatycznie. Użytkownicy mogą monitorować aktywne zalecenia i rozwiązywać zidentyfikowane problemy, stosując Transact-SQL skrypty wyświetlane w widoku.
<change_tracking_option> ::=
Steruje opcjami śledzenia zmian. Możesz włączyć śledzenie zmian, ustawić opcje, opcje zmiany i wyłączyć śledzenie zmian. Przykłady można znaleźć w sekcji przykłady w dalszej części tego artykułu.
NA
Włącza śledzenie zmian dla bazy danych. Po włączeniu śledzenia zmian można również ustawić opcje AUTOMATYCZNEGO OCZYSZCZANIA i PRZECHOWYWANIA ZMIAN.
AUTO_CLEANUP = { ON | WYŁ. }
NA
Informacje o śledzeniu zmian są automatycznie usuwane po określonym okresie przechowywania.
OD
Dane śledzenia zmian nie są usuwane z bazy danych.
CHANGE_RETENTION = retention_period { DAYS | GODZINY | MIN }
Określa minimalny okres przechowywania informacji o śledzeniu zmian w bazie danych. Dane są usuwane tylko wtedy, gdy wartość AUTO_CLEANUP jest włączona.
retention_period jest liczbą całkowitą określającą składnik liczbowy okresu przechowywania.
Domyślny okres przechowywania to 2 dni. Minimalny okres przechowywania wynosi 1 minutę. Domyślnym typem przechowywania jest DAYS.
OD
Wyłącza śledzenie zmian dla bazy danych. Wyłącz śledzenie zmian we wszystkich tabelach przed wyłączeniem śledzenia zmian w bazie danych.
<cursor_option> ::=
Steruje opcjami kursora.
CURSOR_CLOSE_ON_COMMIT { ON | WYŁ. }
NA
Wszystkie kursory otwierane po zatwierdzeniu lub wycofaniu transakcji zostaną zamknięte.
OD
Kursory pozostają otwarte po zatwierdzeniu transakcji; wycofywanie transakcji zamyka wszystkie kursory z wyjątkiem tych kursorów zdefiniowanych jako INSENSITIVE lub STATIC.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie bazy danych dla CURSOR_CLOSE_ON_COMMIT. Klienci ODBC i OLE DB domyślnie wystawiają ustawienie instrukcji SET na poziomie połączenia CURSOR_CLOSE_ON_COMMIT wyłączone dla sesji. Klienci uruchamiają instrukcję podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET CURSOR_CLOSE_ON_COMMIT.
Stan tej opcji można określić, sprawdzając kolumnę
<db_encryption_option> ::=
Steruje stanem szyfrowania bazy danych.
SZYFROWANIE { WŁĄCZONE | WYŁ. }
Ustawia bazę danych do szyfrowania (WŁ.) lub niezaszyfrowanej (OFF). Aby uzyskać więcej informacji na temat szyfrowania bazy danych, zobacz transparent data encryption (TDE)i Transparent Data Encryption for Azure SQL Database, Azure SQL Managed Instance i Azure Synapse Analytics.
Po włączeniu szyfrowania na poziomie bazy danych wszystkie grupy plików są szyfrowane. Wszystkie nowe grupy plików dziedziczą zaszyfrowaną właściwość. Jeśli jakiekolwiek grupy plików w bazie danych są ustawione na WARTOŚĆ TYLKO DO ODCZYTU, operacja szyfrowania bazy danych zakończy się niepowodzeniem.
Stan szyfrowania bazy danych można wyświetlić przy użyciu dynamicznego widoku zarządzania sys.dm_database_encryption_keys.
<db_update_option> ::=
Określa, czy aktualizacje są dozwolone w bazie danych.
READ_ONLY
Użytkownicy mogą odczytywać dane z bazy danych, ale nie modyfikować ich.
Nuta
Aby zwiększyć wydajność zapytań, zaktualizuj statystyki przed ustawieniem bazy danych na READ_ONLY. Jeśli dodatkowe statystyki są potrzebne po ustawieniu bazy danych na READ_ONLY, aparat bazy danych tworzy statystyki w
tempdb
. Aby uzyskać więcej informacji na temat statystyk dla bazy danych tylko do odczytu, zobacz Statistics.READ_WRITE
Baza danych jest dostępna dla operacji odczytu i zapisu.
Aby zmienić ten stan, musisz mieć wyłączny dostęp do bazy danych. Aby uzyskać więcej informacji, zobacz klauzulę SINGLE_USER.
Nuta
W federacyjnych bazach danych usługi Azure SQL Database SET { READ_ONLY | READ_WRITE }
jest wyłączona.
<db_user_access_option> ::=
Kontroluje dostęp użytkownika do bazy danych.
RESTRICTED_USER
Umożliwia łączenie się z bazą danych tylko członkom stałej roli bazy danych
db_owner
idbcreator
orazsysadmin
stałymi rolami serwera, ale nie ogranicza ich liczby. Wszystkie połączenia z bazą danych są rozłączane w przedziale czasu określonym przez klauzulę zakończenia instrukcji ALTER DATABASE. Po przejściu bazy danych do stanu RESTRICTED_USER próby nawiązania połączenia przez niekwalifikowanych użytkowników zostaną odrzucone. W usłudze Azure SQL Database należy wykonać polecenie z poziomu bazy danych użytkownika. W bazie danychmaster
może wystąpić komunikat o błędzieMsg 42008, Level 16, State 3, Line 1 ODBC error: State: 28000: Error: 18456 Message:'[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user '##MS_InstanceCertificate##'.'.
MULTI_USER
Wszyscy użytkownicy, którzy mają odpowiednie uprawnienia do nawiązywania połączenia z bazą danych, są dozwolone. Stan tej opcji można określić, sprawdzając kolumnę
w widoku katalogu sys.databases lub właściwość funkcji DATABASEPROPERTYEX . W usłudze Azure SQL Database należy wykonać polecenie z poziomu bazy danych użytkownika. W bazie danychmaster
może wystąpić komunikat o błędzieMsg 42008, Level 16, State 3, Line 1 ODBC error: State: 28000: Error: 18456 Message:'[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user '##MS_InstanceCertificate##'.'.
<delayed_durability_option> ::=
Określa, czy transakcje zatwierdzają w pełni trwałe, czy opóźnione.
NIEPEŁNOSPRAWNY
Wszystkie transakcje po
SET DISABLED
są w pełni trwałe. Wszelkie opcje trwałości ustawione w niepodzielnej instrukcji bloku lub zatwierdzenia są ignorowane.DOZWOLONE
Wszystkie transakcje po
SET ALLOWED
są w pełni trwałe lub opóźnione, w zależności od opcji trwałości ustawionej w instrukcji bloku atomowego lub zatwierdzenia.ZMUSZONA
Wszystkie transakcje po
SET FORCED
są opóźnione. Wszelkie opcje trwałości ustawione w niepodzielnej instrukcji bloku lub zatwierdzenia są ignorowane.
<PARAMETERIZATION_option> ::=
Steruje opcją parametryzacji.
PARAMETRYZACJA { SIMPLE | WYMUSZONE }
PROSTY
Zapytania są sparametryzowane na podstawie domyślnego zachowania bazy danych.
ZMUSZONA
Program SQL Server sparametryzuje wszystkie zapytania w bazie danych.
Bieżące ustawienie tej opcji można określić, sprawdzając kolumnę is_parameterization_forced
w widoku katalogu sys.databases.
<query_store_options> ::=
WŁ. | OFF | CLEAR [ WSZYSTKO ]
Określa, czy magazyn zapytań jest włączony w tej bazie danych, a także kontroluje usuwanie zawartości magazynu zapytań.
NA
Włącza magazyn zapytań. WARTOŚĆ DOMYŚLNa TO ON.
OD
Wyłącza magazyn zapytań.
Nuta
Nie można wyłączyć magazynu zapytań w pojedynczej bazie danych i puli elastycznej usługi Azure SQL Database. Wykonanie
ALTER DATABASE [database] SET QUERY_STORE = OFF
zwraca ostrzeżenie'QUERY_STORE=OFF' is not supported in this version of SQL Server.
.JASNY
Usuń zawartość magazynu zapytań.
OPERATION_MODE
Opisuje tryb działania magazynu zapytań. Prawidłowe wartości to READ_ONLY i READ_WRITE. W trybie READ_WRITE magazyn zapytań zbiera i utrzymuje informacje o statystykach wykonywania i planu zapytań. W trybie READ_ONLY informacje można odczytywać z magazynu zapytań, ale nie są dodawane nowe informacje. Jeśli wyczerpano maksymalną przydzieloną przestrzeń magazynu zapytań, magazyn zapytań zmieni tryb działania na READ_ONLY.
CLEANUP_POLICY
Opisuje zasady przechowywania danych magazynu zapytań. STALE_QUERY_THRESHOLD_DAYS określa liczbę dni, dla których informacje dotyczące zapytania są przechowywane w magazynie zapytań. STALE_QUERY_THRESHOLD_DAYS jest typem bigint. Wartość domyślna to 30. W przypadku wersji Podstawowa usługi SQL Database wartość domyślna to 7 dni.
DATA_FLUSH_INTERVAL_SECONDS
Określa częstotliwość, z jaką dane zapisywane w magazynie zapytań są utrwalane na dysku. Aby zoptymalizować wydajność, dane zebrane przez magazyn zapytań są asynchronicznie zapisywane na dysku. Częstotliwość, z jaką odbywa się ten transfer asynchroniczny, jest konfigurowana przy użyciu argumentu DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS jest typem bigint. Wartość domyślna to 900 (15 minut).
MAX_STORAGE_SIZE_MB
Określa miejsce przydzielone do magazynu zapytań. MAX_STORAGE_SIZE_MB jest typem bigint.
Nuta
W usłudze Azure SQL Database domyślna wartość MAX_STORAGE_SIZE_MB
różni się od warstwy usługi w następujący sposób: Premium, Krytyczne dla działania firmy i Hiperskala: 1024 MB; Standardowa i Ogólnego przeznaczenia: 100 MB; Podstawowa: 10 MB Maksymalna dozwolona wartość MAX_STORAGE_SIZE_MB
wynosi 10 240 MB.
Nuta
MAX_STORAGE_SIZE_MB
limit nie jest ściśle wymuszany. Rozmiar magazynu jest sprawdzany tylko wtedy, gdy magazyn zapytań zapisuje dane na dysku. Ten interwał jest ustawiany przez opcję DATA_FLUSH_INTERVAL_SECONDS
lub opcję okna dialogowego Magazyn zapytań programu Management Studio Interwał opróżniania danych. Wartość domyślna interwału to 900 sekund (lub 15 minut).
Jeśli magazyn zapytań naruszył limit MAX_STORAGE_SIZE_MB
między sprawdzaniem rozmiaru magazynu, przechodzi do trybu tylko do odczytu. Jeśli SIZE_BASED_CLEANUP_MODE
jest włączona, zostanie również wyzwolony mechanizm oczyszczania w celu wymuszenia limitu MAX_STORAGE_SIZE_MB
.
Po wyczyszczonej ilości miejsca tryb magazynu zapytań automatycznie przełącza się z powrotem do odczytu i zapisu.
Ważny
Jeśli uważasz, że przechwytywanie obciążenia wymaga więcej niż 10 GB miejsca na dysku, prawdopodobnie należy przemyśleć i zoptymalizować obciążenie w celu ponownego użycia planów zapytań (na przykład przy użyciu wymuszonej parametryzacjilub dostosować konfiguracje magazynu zapytań.
Począwszy od programu SQL Server 2019 (15.x) i usługi Azure SQL Database, można ustawić QUERY_CAPTURE_MODE
na WARTOŚĆ CUSTOM, aby uzyskać dodatkową kontrolę nad zasadami przechwytywania zapytań.
INTERVAL_LENGTH_MINUTES
Określa interwał czasu, w którym dane statystyk wykonywania środowiska uruchomieniowego są agregowane do magazynu zapytań. Aby zoptymalizować użycie miejsca, statystyki wykonywania środowiska uruchomieniowego w magazynie statystyk środowiska uruchomieniowego są agregowane w stałym przedziale czasu. To stałe okno czasowe jest konfigurowane przy użyciu argumentu INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES jest typem bigint. Wartość domyślna to 60.
SIZE_BASED_CLEANUP_MODE = { AUTO | WYŁ. }
Określa, czy czyszczenie jest automatycznie aktywowane, gdy łączna ilość danych zbliża się do maksymalnego rozmiaru.
OD
Czyszczenie oparte na rozmiarach nie jest automatycznie aktywowane.
AUTOMATYCZNIE
Czyszczenie oparte na rozmiarach jest automatycznie aktywowane, gdy rozmiar dysku osiągnie 90% max_storage_size_mb. Oczyszczanie oparte na rozmiarach usuwa najpierw najmniej kosztowne i najstarsze zapytania. Zatrzymuje się około 80% max_storage_size_mb. Jest to domyślna wartość konfiguracji.
SIZE_BASED_CLEANUP_MODE jest typem nvarchar.
QUERY_CAPTURE_MODE { ALL | AUTO | NIESTANDARDOWE | BRAK }
Wyznacza aktualnie aktywny tryb przechwytywania zapytań. Każdy tryb definiuje określone zasady przechwytywania zapytań.
Nuta
Kursory, zapytania wewnątrz procedur składowanych i natywnie skompilowane zapytania są zawsze przechwytywane, gdy tryb przechwytywania zapytania jest ustawiony na WSZYSTKIE, AUTOMATYCZNE lub NIESTANDARDOWE.
CAŁY
Przechwytuje wszystkie zapytania.
AUTOMATYCZNIE
Przechwyć odpowiednie zapytania na podstawie liczby wykonań i użycia zasobów. Jest to domyślna wartość konfiguracji usługi Azure SQL Database.
ŻADEN
Zatrzymaj przechwytywanie nowych zapytań. Magazyn zapytań nadal zbiera statystyki kompilacji i środowiska uruchomieniowego dla zapytań, które zostały już przechwycone. Użyj tej konfiguracji z ostrożnością, ponieważ możesz przegapić przechwytywanie ważnych zapytań.
ZWYCZAJ
Umożliwia kontrolę nad opcjami QUERY_CAPTURE_POLICY.
QUERY_CAPTURE_MODE jest typem nvarchar.
MAX_PLANS_PER_QUERY
Definiuje maksymalną liczbę planów obsługiwanych dla każdego zapytania. MAX_PLANS_PER_QUERY jest typem int. Wartość domyślna to 200.
WAIT_STATS_CAPTURE_MODE { ON | WYŁ. }
Określa, czy statystyki oczekiwania są przechwytywane na zapytanie.
NA
Przechwytywane są informacje statystyczne dotyczące oczekiwania na zapytanie. Ta wartość jest wartością domyślną konfiguracji.
OD
Informacje o statystykach oczekiwania na zapytanie nie są przechwytywane.
<query_capture_policy_option_list> :: =
Steruje opcjami zasad przechwytywania magazynu zapytań. Z wyjątkiem STALE_CAPTURE_POLICY_THRESHOLD te opcje definiują warunki OR, które muszą wystąpić, aby zapytania były przechwytywane w zdefiniowanej wartości progu nieodświeżania zasad przechwytywania.
STALE_CAPTURE_POLICY_THRESHOLD = liczba całkowita { DAYS | GODZINY }
Definiuje okres interwału oceny, aby określić, czy zapytanie powinno zostać przechwycone. Wartość domyślna to 1 dzień i można ją ustawić z zakresu od 1 godziny do siedmiu dni. liczba jest typem int.
EXECUTION_COUNT = liczba całkowita
Definiuje liczbę wykonań zapytania w okresie oceny. Wartość domyślna to 30, co oznacza, że dla domyślnego progu zasad przechwytywania nieaktualnego zapytanie musi wykonać co najmniej 30 razy w ciągu jednego dnia, aby utrwało się w magazynie zapytań. EXECUTION_COUNT jest typem int.
TOTAL_COMPILE_CPU_TIME_MS = liczba całkowita
Definiuje łączny czas kompilacji, który upłynął, używany przez zapytanie w okresie oceny. Wartość domyślna to 1000, co oznacza, że dla domyślnego progu zasad przechwytywania nieaktualnego zapytanie musi mieć łącznie co najmniej jedną sekundę czasu procesora CPU spędzonego podczas kompilacji zapytania w ciągu jednego dnia, aby utrwało się w magazynie zapytań. TOTAL_COMPILE_CPU_TIME_MS jest typem int.
TOTAL_EXECUTION_CPU_TIME_MS = liczba całkowita
Definiuje całkowity czas wykonywania, który upłynął, używany przez zapytanie w okresie oceny. Wartość domyślna to 100, co oznacza, że dla domyślnego progu zasad przechwytywania nieaktualnego zapytanie musi mieć łącznie co najmniej 100 ms czasu procesora CPU spędzonego podczas wykonywania w ciągu jednego dnia, aby utrwało się w magazynie zapytań. TOTAL_EXECUTION_CPU_TIME_MS jest typem int.
<snapshot_option> ::=
Określa poziom izolacji transakcji.
ALLOW_SNAPSHOT_ISOLATION { ON | WYŁ. }
NA
Włącza opcję Migawka na poziomie bazy danych. Po jej włączeniu instrukcje DML zaczynają generować wersje wierszy nawet wtedy, gdy żadna transakcja nie używa izolacji migawki. Po włączeniu tej opcji transakcje mogą określać poziom izolacji transakcji MIGAWKI. Gdy transakcja jest uruchamiana na poziomie izolacji migawki, wszystkie instrukcje widzą migawkę danych, ponieważ istnieją na początku transakcji. Jeśli transakcja uruchomiona na poziomie izolacji MIGAWKi uzyskuje dostęp do danych w wielu bazach danych, ALLOW_SNAPSHOT_ISOLATION musi być ustawiona na wartość WŁ. we wszystkich bazach danych lub każda instrukcja w transakcji musi używać wskazówek blokowania dla dowolnego odwołania w klauzuli FROM do tabeli w bazie danych, w której ALLOW_SNAPSHOT_ISOLATION jest wyłączona.
OD
Wyłącza opcję Migawka na poziomie bazy danych. Transakcje nie mogą określać poziomu izolacji transakcji SNAPSHOT.
Po ustawieniu ALLOW_SNAPSHOT_ISOLATION na nowy stan (od WŁ. do WYŁ. lub OD WŁ. do WŁ.), funkcja ALTER DATABASE nie zwraca kontroli do obiektu wywołującego, dopóki wszystkie istniejące transakcje w bazie danych nie zostaną zatwierdzone. Jeśli baza danych jest już w stanie określonym w instrukcji ALTER DATABASE, kontrolka jest natychmiast zwracana do wywołującego. Jeśli instrukcja ALTER DATABASE nie zwraca się szybko, użyj sys.dm_tran_active_snapshot_database_transactions, aby określić, czy istnieją długotrwałe transakcje. Jeśli instrukcja ALTER DATABASE zostanie anulowana, baza danych pozostaje w stanie, w którym została uruchomiona. Widok katalogu sys.databases wskazuje stan transakcji izolacji migawek w bazie danych. Jeśli snapshot_isolation_state_desc = IN_TRANSITION_TO_ON
, instrukcja ALTER DATABASE .... ALLOW_SNAPSHOT_ISOLATION OFF
wstrzymuje sześć sekund i ponawia próbę wykonania operacji.
Nie można zmienić stanu ALLOW_SNAPSHOT_ISOLATION, jeśli baza danych jest w trybie OFFLINE.
Jeśli ustawisz ALLOW_SNAPSHOT_ISOLATION w bazie danych READ_ONLY, ustawienie będzie zachowywane, jeśli baza danych zostanie później ustawiona na READ_WRITE.
Bieżące ustawienie tej opcji można określić, sprawdzając kolumnę snapshot_isolation_state
w widoku katalogu sys.databases.
READ_COMMITTED_SNAPSHOT { ON | WYŁ. }
NA
Włącza opcję migawki Read-Committed na poziomie bazy danych. Po jej włączeniu instrukcje DML zaczynają generować wersje wierszy nawet wtedy, gdy żadna transakcja nie używa izolacji migawki. Po włączeniu tej opcji transakcje określające poziom izolacji READ COMMITTED używają przechowywania wersji wierszy zamiast blokowania. Wszystkie instrukcje widzą migawkę danych, ponieważ istnieją na początku instrukcji, gdy transakcja jest uruchamiana na poziomie izolacji READ COMMITTED.
OD
Wyłącza opcję migawki Read-Committed na poziomie bazy danych. Transakcje określające poziom izolacji READ COMMITTED używają blokady.
Aby ustawić READ_COMMITTED_SNAPSHOT włączone lub wyłączone, nie musi istnieć żadne aktywne połączenia z bazą danych, z wyjątkiem połączenia z uruchomionym poleceniem ALTER DATABASE. Jednak baza danych nie musi być w trybie pojedynczego użytkownika. Nie można zmienić stanu tej opcji, gdy baza danych jest w trybie OFFLINE.
Jeśli ustawisz READ_COMMITTED_SNAPSHOT w bazie danych READ_ONLY, ustawienie będzie zachowywane, gdy baza danych zostanie później ustawiona na READ_WRITE.
READ_COMMITTED_SNAPSHOT nie można włączyć dla baz danych systemu master
, tempdb
lub msdb
. Jeśli zmienisz ustawienie dla model
, to ustawienie stanie się domyślne dla wszystkich nowych baz danych utworzonych, z wyjątkiem tempdb
.
Bieżące ustawienie tej opcji można określić, sprawdzając kolumnę is_read_committed_snapshot_on
w widoku katalogu sys.databases.
Ostrzeżenie
Gdy tabela zostanie utworzona przy użyciu DURABILITY = SCHEMA_ONLY
, a READ_COMMITTED_SNAPSHOT zostanie później zmieniona przy użyciu ALTER DATABASE
, dane w tabeli zostaną utracone.
Napiwek
W usłudze Azure SQL Database polecenie ALTER DATABASE
, aby ustawić READ_COMMITTED_SNAPSHOT włączone lub wyłączone dla bazy danych, należy wykonać w bazie danych master
.
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | WYŁ. }
NA
Gdy poziom izolacji transakcji jest ustawiony na dowolny poziom izolacji niższy niż SNAPSHOT, wszystkie interpretowane operacje Transact-SQL w tabelach zoptymalizowanych pod kątem pamięci są uruchamiane w ramach izolacji migawki. Przykłady poziomów izolacji niższych niż migawka to READ COMMITTED lub READ UNCOMMITTED. Te operacje są uruchamiane, czy poziom izolacji transakcji jest ustawiany jawnie na poziomie sesji, czy jest używany niejawnie.
OD
Nie podnosi poziomu izolacji transakcji dla interpretowanych operacji Transact-SQL w tabelach zoptymalizowanych pod kątem pamięci.
Nie można zmienić stanu MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT, jeśli baza danych jest w trybie OFFLINE.
Wartość domyślna to OFF.
Bieżące ustawienie tej opcji można określić, sprawdzając kolumnę is_memory_optimized_elevate_to_snapshot_on
w widoku katalogu sys.databases.
<sql_option> ::=
Steruje opcjami zgodności ANSI na poziomie bazy danych.
ANSI_NULL_DEFAULT { ON | WYŁ. }
Określa wartość domyślną NULL lub NOT NULL kolumny lub typu zdefiniowanego przez użytkownika CLR, dla którego wartość null nie jest jawnie zdefiniowana w instrukcjach CREATE TABLE lub ALTER TABLE. Kolumny zdefiniowane z ograniczeniami są zgodne z regułami ograniczeń, niezależnie od tego, jakie może być to ustawienie.
NA
Wartość domyślna to NULL.
OD
Wartość domyślna to NOT NULL.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie na poziomie bazy danych dla ANSI_NULL_DEFAULT. Klienci ODBC i OLE DB domyślnie wystawiają ustawienie instrukcji SET na poziomie połączenia ANSI_NULL_DEFAULT włączone dla sesji. Klienci uruchamiają instrukcję podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET ANSI_NULL_DFLT_ON.
W przypadku zgodności ze standardem ANSI ustawienie opcji bazy danych ANSI_NULL_DEFAULT na WŁ. powoduje zmianę domyślnej wartości null bazy danych.
Stan tej opcji można określić, sprawdzając kolumnę is_ansi_null_default_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsAnsiNullDefault
funkcji DATABASEPROPERTYEX.
ANSI_NULLS { ON | WYŁ. }
NA
Wszystkie porównania z wartością null mają wartość UNKNOWN.
OD
Porównania wartości innych niż Unicode z wartością null mają wartość TRUE, jeśli obie wartości mają wartość NULL.
Ważny
W przyszłej wersji programu SQL Server ANSI_NULLS zawsze będzie włączona, a wszystkie aplikacje, które jawnie ustawią opcję WYŁ., spowodują wystąpienie błędu. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie bazy danych dla ANSI_NULLS. Klienci ODBC i OLE DB domyślnie wystawiają ustawienie instrukcji SET na poziomie połączenia ANSI_NULLS włączone dla sesji. Klienci uruchamiają instrukcję podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET ANSI_NULLS.
Nuta
USTAW ANSI_NULLS należy również ustawić wartość WŁĄCZONE podczas tworzenia lub wprowadzania zmian w indeksach w obliczonych kolumnach lub indeksowanych widokach.
Stan tej opcji można określić, sprawdzając kolumnę is_ansi_nulls_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsAnsiNullsEnabled
funkcji DATABASEPROPERTYEX.
ANSI_PADDING { ON | WYŁ. }
NA
Ciągi są dopełniane tą samą długością przed konwersją. Ponadto dopełnione do tej samej długości przed wstawieniem do varchar lub nvarchar typu danych.
OD
Wstawia końcowe wartości puste w wartościach znaków do kolumn varchar lub nvarchar. Pozostawia również końcowe zera w wartościach binarnych wstawionych do kolumn . Wartości nie są dopełniane do długości kolumny.
Po określeniu opcji WYŁ. to ustawienie ma wpływ tylko na definicję nowych kolumn.
Ważny
W przyszłej wersji programu SQL Server ANSI_PADDING zawsze będzie włączona, a wszystkie aplikacje, które jawnie ustawią opcję WYŁ., spowodują wystąpienie błędu. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji. Zalecamy, aby zawsze ustawiać ANSI_PADDING na WŁ. ANSI_PADDING musi być włączony podczas tworzenia lub manipulowania indeksami w kolumnach obliczeniowych lub indeksowanych widokach.
char(n) i binary(n) kolumn, które zezwalają na wartości null, są dopełniane do długości kolumny, gdy ANSI_PADDING jest ustawiona na wartość WŁĄCZONE. Końcowe wartości puste i zera są przycinane, gdy ANSI_PADDING jest wyłączona. char(n) i binary(n) kolumn, które nie zezwalają na wartości null, są zawsze dopełniane długością kolumny.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie na poziomie bazy danych dla ANSI_PADDING. Klienci ODBC i OLE DB domyślnie wystawiają ustawienie instrukcji SET na poziomie połączenia ANSI_PADDING włączone dla sesji. Klienci uruchamiają instrukcję podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET ANSI_PADDING.
Stan tej opcji można określić, sprawdzając kolumnę is_ansi_padding_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsAnsiPaddingEnabled
funkcji DATABASEPROPERTYEX.
ANSI_WARNINGS { ON | WYŁ. }
NA
Błędy lub ostrzeżenia są wystawiane, gdy wystąpią warunki, takie jak dzielenie przez zero. Błędy i ostrzeżenia są również wystawiane, gdy wartości null są wyświetlane w funkcjach agregujących.
OD
Nie są wywoływane żadne ostrzeżenia, a wartości null są zwracane, gdy wystąpią warunki, takie jak dzielenie przez zero.
Nuta
Ustaw ANSI_WARNINGS należy ustawić wartość WŁĄCZONE podczas tworzenia lub wprowadzania zmian w indeksach w kolumnach obliczeniowych lub widokach indeksowanych.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie bazy danych dla ANSI_WARNINGS. Klienci ODBC i OLE DB domyślnie wystawiają ustawienie instrukcji SET na poziomie połączenia ANSI_WARNINGS włączone dla sesji. Klienci uruchamiają instrukcję podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET ANSI_WARNINGS.
Stan tej opcji można określić, sprawdzając kolumnę is_ansi_warnings_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsAnsiWarningsEnabled
funkcji DATABASEPROPERTYEX.
ARITHABORT { ON | WYŁ. }
NA
Zapytanie kończy się, gdy podczas wykonywania zapytania występuje błąd przepełnienia lub dzielenia przez zero.
OD
Gdy wystąpi jeden z tych błędów, zostanie wyświetlony komunikat ostrzegawczy. Zapytanie, wsadowe lub transakcje nadal przetwarza się tak, jakby nie wystąpił błąd, nawet jeśli zostanie wyświetlone ostrzeżenie.
Nuta
USTAWIENIE ARITHABORT musi być ustawione na WARTOŚĆ WŁĄCZONE podczas tworzenia lub wprowadzania zmian w indeksach dla obliczonych kolumn lub indeksowanych widoków.
Stan tej opcji można określić, sprawdzając kolumnę is_arithabort_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsArithmeticAbortEnabled
funkcji DATABASEPROPERTYEX.
COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Aby uzyskać więcej informacji, zobacz
CONCAT_NULL_YIELDS_NULL { ON | WYŁ. }
NA
Wynikiem operacji łączenia jest wartość NULL, gdy jeden z operandów ma wartość NULL. Na przykład łączenie ciągu znaków "To jest" i wartość NULL powoduje wartość NULL, zamiast wartości "To jest".
OD
Wartość null jest traktowana jako pusty ciąg znaków.
Nuta
CONCAT_NULL_YIELDS_NULL należy ustawić wartość WŁĄCZONE podczas tworzenia lub wprowadzania zmian w indeksach w kolumnach obliczeniowych lub indeksowanych widokach.
W przyszłej wersji programu SQL Server CONCAT_NULL_YIELDS_NULL zawsze będzie włączona, a wszystkie aplikacje, które jawnie ustawią opcję WYŁ., spowodują wystąpienie błędu. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie bazy danych dla CONCAT_NULL_YIELDS_NULL. Domyślnie klienci ODBC i OLE DB wystawiają ustawienie instrukcji SET na poziomie połączenia CONCAT_NULL_YIELDS_NULL na WŁ. dla sesji podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET CONCAT_NULL_YIELDS_NULL.
Stan tej opcji można określić, sprawdzając kolumnę is_concat_null_yields_null_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsNullConcat
funkcji DATABASEPROPERTYEX.
NUMERIC_ROUNDABORT { ON | WYŁ. }
NA
Błąd jest generowany, gdy w wyrażeniu występuje utrata precyzji.
OD
Utrata dokładności nie generuje komunikatu o błędzie, a wynik jest zaokrąglany do dokładności kolumny lub zmiennej przechowującej wynik.
Ważny
NUMERIC_ROUNDABORT należy ustawić wartość OFF podczas tworzenia lub wprowadzania zmian w indeksach w kolumnach obliczeniowych lub indeksowanych widokach.
Stan tej opcji można określić w kolumnie is_numeric_roundabort_on
w widoku katalogu sys.databases. Stan można również określić, sprawdzając właściwość IsNumericRoundAbortEnabled
funkcji DATABASEPROPERTYEX.
QUOTED_IDENTIFIER { ON | WYŁ. }
NA
Podwójnego cudzysłowu można używać do ujęć identyfikatorów rozdzielanych.
Wszystkie ciągi rozdzielone podwójnym cudzysłowem są interpretowane jako identyfikatory obiektów. Identyfikatory cytowane nie muszą być zgodne z regułami Transact-SQL dla identyfikatorów. Mogą to być słowa kluczowe i mogą zawierać znaki, które nie są dozwolone w identyfikatorach Transact-SQL. Jeśli podwójny cudzysłów (
"
) jest częścią identyfikatora, może być reprezentowany przez dwa podwójne cudzysłowy (""
).OD
Identyfikatory nie mogą być w cudzysłowie i muszą być zgodne ze wszystkimi regułami Transact-SQL dla identyfikatorów. Literały mogą być rozdzielane znakami pojedynczego lub podwójnego cudzysłowu.
Program SQL Server umożliwia również rozdzielenie identyfikatorów nawiasami kwadratowymi ([
i ]
). Identyfikatory w nawiasach mogą być zawsze używane, niezależnie od ustawienia QUOTED_IDENTIFIER. Aby uzyskać więcej informacji, zobacz Identyfikatory bazy danych.
Po utworzeniu tabeli opcja IDENTYFIKATOR CYTOWANY jest zawsze przechowywana jako WŁ. w metadanych tabeli. Opcja jest przechowywana nawet wtedy, gdy opcja jest ustawiona na WARTOŚĆ OFF podczas tworzenia tabeli.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie bazy danych dla QUOTED_IDENTIFIER. Klienci ODBC i OLE DB wystawiają ustawienie instrukcji SET na poziomie połączenia QUOTED_IDENTIFIER domyślnie włączone. Klienci uruchamiają instrukcję podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET QUOTED_IDENTIFIER.
Stan tej opcji można określić, sprawdzając kolumnę is_quoted_identifier_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsQuotedIdentifiersEnabled
funkcji DATABASEPROPERTYEX.
RECURSIVE_TRIGGERS { ON | WYŁ. }
NA
Rekursywne wypalanie wyzwalaczy AFTER jest dozwolone.
OD
Stan tej opcji można określić, sprawdzając kolumnę
is_recursive_triggers_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwośćIsRecursiveTriggersEnabled
funkcji DATABASEPROPERTYEX.
Nuta
Nie można zapobiegać rekursji bezpośredniej tylko wtedy, gdy RECURSIVE_TRIGGERS jest ustawiona na wartość OFF. Aby wyłączyć rekursję pośrednią, należy również ustawić opcję serwera wyzwalaczy zagnieżdżonych na 0.
Stan tej opcji można określić, sprawdzając kolumnę
<target_recovery_time_option> ::=
Określa częstotliwość pośrednich punktów kontrolnych dla poszczególnych baz danych. Począwszy od programu SQL Server 2016 (13.x), domyślną wartością dla nowych baz danych jest 1 minuta, co wskazuje, że baza danych używa pośrednich punktów kontrolnych. W przypadku starszych wersji wartość domyślna to 0, co oznacza, że baza danych używa automatycznych punktów kontrolnych, których częstotliwość zależy od ustawienia interwału odzyskiwania wystąpienia serwera. Firma Microsoft zaleca 1 minutę dla większości systemów.
TARGET_RECOVERY_TIME = target_recovery_time { S | MIN }
target_recovery_time
Określa maksymalną granicę czasu odzyskiwania określonej bazy danych w przypadku awarii. target_recovery_time jest typem int.
SEKUND
Wskazuje, że target_recovery_time jest wyrażona jako liczba sekund.
PROTOKÓŁ
Wskazuje, że target_recovery_time jest wyrażona jako liczba minut.
Aby uzyskać więcej informacji na temat pośrednich punktów kontrolnych, zobacz Database checkpoints.
Z kończeniem <> ::=
Określa, kiedy wycofać niekompletne transakcje, gdy baza danych zostanie przeniesiona z jednego stanu do innego. Jeśli klauzula zakończenia zostanie pominięta, instrukcja ALTER DATABASE czeka na czas nieokreślony, jeśli w bazie danych istnieje blokada. Można określić tylko jedną klauzulę zakończenia i jest zgodna z klauzulami SET.
Nuta
Nie wszystkie opcje bazy danych używają klauzuli WITH <zakończenie>. Aby uzyskać więcej informacji, zobacz tabelę w obszarze Opcje ustawień sekcji "Uwagi" tego artykułu.
WYCOFYWANIE PO liczbą całkowitą [SEKUNDY] | NATYCHMIASTOWE WYCOFANIE
Określa, czy należy wycofać się po określonej liczbie sekund, czy natychmiast.
NO_WAIT
Określa, że żądanie kończy się niepowodzeniem, jeśli żądany stan bazy danych lub zmiana opcji nie może zakończyć się natychmiast. Ukończenie natychmiast oznacza, że nie trzeba czekać na transakcje do zatwierdzenia lub wycofania na własną rękę.
<temporal_history_retention> ::=
TEMPORAL_HISTORY_RETENTION { ON | WYŁ. }
Domyślnie włączone, ale także automatycznie ustaw wartość OFF po operacji przywracania do punktu w czasie. Aby uzyskać więcej informacji, w tym sposób włączania tego ustawienia, zobacz Jak skonfigurować zasady przechowywania.
NA
Domyślny. Włącza zasady przechowywania tabel czasowych. Aby uzyskać więcej informacji, zobacz Zarządzanie przechowywaniem danych historycznych w tabelach czasowych z wersjami systemowymi.
OD
Nie wykonuj czasowych zasad przechowywania historycznego.
Ustawianie opcji
Aby pobrać bieżące ustawienia opcji bazy danych, użyj widoku katalogu sys.databases lub DATABASEPROPERTYEX
Po ustawieniu opcji bazy danych nowe ustawienie zostanie zastosowane natychmiast.
Możesz zmienić wartości domyślne dla dowolnej z opcji bazy danych dla wszystkich nowo utworzonych baz danych. W tym celu zmień odpowiednią opcję bazy danych w bazie danych model
.
Nie wszystkie opcje bazy danych używają klauzuli> zakończenia WITH <lub można określić w połączeniu z innymi opcjami. W poniższej tabeli wymieniono te opcje oraz ich opcje i stan zakończenia.
Kategoria opcji | Można określić z innymi opcjami | Może używać klauzuli <zakończenia with> |
---|---|---|
<auto_option> | Tak | Nie |
<change_tracking_option> | Tak | Tak |
<cursor_option> | Tak | Nie |
<db_encryption_option> | Tak | Nie |
<db_update_option> | Tak | Tak |
<db_user_access_option> | Tak | Tak |
<delayed_durability_option> | Tak | Tak |
<parameterization_option> | Tak | Tak |
ALLOW_SNAPSHOT_ISOLATION | Nie | Nie |
READ_COMMITTED_SNAPSHOT | Nie | Tak |
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT | Tak | Tak |
DATE_CORRELATION_OPTIMIZATION | Tak | Tak |
<sql_option> | Tak | Nie |
<target_recovery_time_option> | Nie | Tak |
Przykłady
A. Ustaw bazę danych na READ_ONLY
Zmiana stanu bazy danych lub grupy plików na READ_ONLY lub READ_WRITE wymaga wyłącznego dostępu do bazy danych i może potrwać kilka sekund. Poniższy przykład ustawia bazę danych na tryb RESTRICTED_USER
w celu ograniczenia dostępu. Następnie przykład ustawia stan bazy danych AdventureWorks2022
na READ_ONLY
i zwraca dostęp do bazy danych wszystkim użytkownikom.
--Connect to [database_name];
GO
ALTER DATABASE [database_name]
SET RESTRICTED_USER;
GO
ALTER DATABASE [database_name]
SET READ_ONLY
--`SET READ_ONLY` command might take a few seconds to complete.
GO
ALTER DATABASE [database_name]
SET MULTI_USER;
GO
Aby ustawić bazę danych z powrotem na tryb odczytu i zapisu:
--Connect to [database_name];
GO
ALTER DATABASE [database_name]
SET READ_WRITE
GO
Aby sprawdzić:
SELECT [name], user_access_desc, is_read_only FROM sys.databases
WHERE [name] = 'database_name'
GO
B. Włączanie izolacji migawek w bazie danych
W poniższym przykładzie jest włączona opcja struktury izolacji migawek dla bazy danych AdventureWorks2022
.
--Connect to [database_name]
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
Sprawdź stan snapshot_isolation_framework
w bazie danych.
--Connect to [database_name]
SELECT name, snapshot_isolation_state,
snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'database_name';
GO
Zestaw wyników pokazuje, że platforma izolacji migawek jest włączona.
nazwa | snapshot_isolation_state | opis |
---|---|---|
[database_name] | 1 | NA |
C. Włączanie, modyfikowanie lub wyłączanie śledzenia zmian
Poniższy przykład umożliwia śledzenie zmian dla bazy danych AdventureWorks2022
i ustawia okres przechowywania na 2
dni.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);
W poniższym przykładzie pokazano, jak zmienić okres przechowywania na 3 dni.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);
W poniższym przykładzie pokazano, jak wyłączyć śledzenie zmian dla bazy danych AdventureWorks2022
.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
D. Włączanie magazynu zapytań
Poniższy przykład umożliwia magazyn zapytań i konfiguruje parametry magazynu zapytań.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
QUERY_CAPTURE_MODE = AUTO,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60
);
E. Włączanie magazynu zapytań ze statystykami oczekiwania
Poniższy przykład umożliwia magazyn zapytań i konfiguruje jego parametry.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON
);
F. Włączanie magazynu zapytań przy użyciu niestandardowych opcji zasad przechwytywania
Poniższy przykład umożliwia magazyn zapytań i konfiguruje jego parametry.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON,
QUERY_CAPTURE_MODE = CUSTOM,
QUERY_CAPTURE_POLICY = (
STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
)
);
Powiązana zawartość
- statystyki
- DATABASEPROPERTYEX (Transact-SQL)
-
sys.databases - sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
poziomu zgodności z usługą ALTER DATABASE - dublowania bazy danych ALTER DATABASE
- CREATE DATABASE
- włączanie i wyłączanie śledzenia zmian (SQL Server)
- DROP DATABASE (Transact-SQL)
- USTAWIĆ POZIOM IZOLACJI TRANSAKCJI (Transact-SQL)
- sp_configure
- Najlepsze rozwiązania dotyczące monitorowania obciążeń za pomocą magazynu zapytań
- wskazówki dotyczące magazynu zapytań
usługi
* SQL Managed Instance *
Azure Synapse
analizy
Azure SQL Managed Instance
Poziomy zgodności to
Nuta
Wiele opcji zestawu baz danych można skonfigurować dla bieżącej sesji przy użyciu instrukcji SET i są często konfigurowane przez aplikacje podczas nawiązywania połączenia. Opcje zestawu na poziomie sesji zastępują wartości ALTER DATABASE SET
. Opcje bazy danych opisane w poniższych sekcjach to wartości, które można ustawić dla sesji, które nie zapewniają jawnie innych wartości opcji zestawu.
Składnia
ALTER DATABASE { database_name | Current }
SET
{
<optionspec> [ ,...n ]
}
;
<optionspec> ::=
{
<auto_option>
| <change_tracking_option>
| <cursor_option>
| <db_encryption_option>
| <delayed_durability_option>
| <parameterization_option>
| <query_store_options>
| <snapshot_option>
| <sql_option>
| <target_recovery_time_option>
| <termination>
| <temporal_history_retention>
}
;
<auto_option> ::=
{
AUTO_CREATE_STATISTICS { OFF | ON [ ( INCREMENTAL = { ON | OFF } ) ] }
| AUTO_SHRINK { ON | OFF }
| AUTO_UPDATE_STATISTICS { ON | OFF }
| AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}
<automatic_tuning_option> ::=
{
AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF } )
}
<change_tracking_option> ::=
{
CHANGE_TRACKING
{
= OFF
| = ON [ ( <change_tracking_option_list > [,...n] ) ]
| ( <change_tracking_option_list> [,...n] )
}
}
<change_tracking_option_list> ::=
{
AUTO_CLEANUP = { ON | OFF }
| CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
}
<cursor_option> ::=
{
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
}
<db_encryption_option> ::=
ENCRYPTION { ON | OFF }
<delayed_durability_option> ::=DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }
<parameterization_option> ::=
PARAMETERIZATION { SIMPLE | FORCED }
<query_store_options> ::=
{
QUERY_STORE
{
= OFF
| = ON [ ( <query_store_option_list> [,... n] ) ]
| ( < query_store_option_list> [,... n] )
| CLEAR [ ALL ]
}
}
<query_store_option_list> ::=
{
OPERATION_MODE = { READ_WRITE | READ_ONLY }
| CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = number )
| DATA_FLUSH_INTERVAL_SECONDS = number
| MAX_STORAGE_SIZE_MB = number
| INTERVAL_LENGTH_MINUTES = number
| SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
| QUERY_CAPTURE_MODE = { ALL | AUTO | CUSTOM | NONE }
| MAX_PLANS_PER_QUERY = number
| WAIT_STATS_CAPTURE_MODE = { ON | OFF }
| QUERY_CAPTURE_POLICY = ( <query_capture_policy_option_list> [,...n] )
}
<query_capture_policy_option_list> :: =
{
STALE_CAPTURE_POLICY_THRESHOLD = number { DAYS | HOURS }
| EXECUTION_COUNT = number
| TOTAL_COMPILE_CPU_TIME_MS = number
| TOTAL_EXECUTION_CPU_TIME_MS = number
}
<snapshot_option> ::=
{
ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
| READ_COMMITTED_SNAPSHOT { ON | OFF }
| MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }
}
<sql_option> ::=
{
ANSI_NULL_DEFAULT { ON | OFF }
| ANSI_NULLS { ON | OFF }
| ANSI_PADDING { ON | OFF }
| ANSI_WARNINGS { ON | OFF }
| ARITHABORT { ON | OFF }
| COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
| CONCAT_NULL_YIELDS_NULL { ON | OFF }
| NUMERIC_ROUNDABORT { ON | OFF }
| QUOTED_IDENTIFIER { ON | OFF }
| RECURSIVE_TRIGGERS { ON | OFF }
}
<temporal_history_retention>::= TEMPORAL_HISTORY_RETENTION { ON | OFF }
Argumenty
database_name
Nazwa bazy danych, która ma zostać zmodyfikowana.
AKTUALNY
CURRENT
uruchamia akcję w bieżącej bazie danych.
CURRENT
nie jest obsługiwana dla wszystkich opcji we wszystkich kontekstach. Jeśli CURRENT
się nie powiedzie, podaj nazwę bazy danych.
<auto_option> ::=
Steruje opcjami automatycznymi.
AUTO_CREATE_STATISTICS { ON | WYŁ. }
NA
Optymalizator zapytań tworzy statystyki dotyczące pojedynczych kolumn w predykatach zapytań, w razie potrzeby, aby poprawić plany zapytań i wydajność zapytań. Te statystyki jednokolumna są tworzone podczas kompilowania zapytań przez optymalizator zapytań. Statystyki z jedną kolumną są tworzone tylko w kolumnach, które nie są jeszcze pierwszą kolumną istniejącego obiektu statystyk.
Wartość domyślna to WŁĄCZONE. Zalecamy użycie domyślnego ustawienia dla większości baz danych.
OD
Optymalizator zapytań nie tworzy statystyk dotyczących pojedynczych kolumn w predykatach zapytań podczas kompilowania zapytań. Ustawienie tej opcji na wartość OFF może spowodować nieoptymalne plany zapytań i obniżoną wydajność zapytań.
Stan tej opcji można określić, sprawdzając kolumnę
is_auto_create_stats_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwośćIsAutoCreateStatistics
funkcji DATABASEPROPERTYEX.Aby uzyskać więcej informacji, zobacz sekcję "Opcje statystyk" w Statistics.
INCREMENTAL = ON | OD
Ustaw wartość AUTO_CREATE_STATISTICS na WŁ., a następnie ustaw wartość INCREMENTAL na WŁ. To ustawienie tworzy automatycznie utworzone statystyki jako przyrostowe zawsze, gdy są obsługiwane statystyki przyrostowe. Wartość domyślna to OFF. Aby uzyskać więcej informacji, zobacz CREATE STATISTICS.
AUTO_SHRINK { ON | WYŁ. }
NA
Pliki bazy danych są kandydatami do okresowego zmniejszania. Jeśli nie masz określonego wymagania, nie należy ustawiać opcji AUTO_SHRINK bazy danych na WŁ. Aby uzyskać więcej informacji, zobacz Zmniejszanie bazy danych.
Zarówno plik danych, jak i pliki dziennika mogą być automatycznie zmniejszane. AUTO_SHRINK zmniejsza rozmiar dziennika transakcji tylko w przypadku ustawienia bazy danych na model odzyskiwania SIMPLE lub kopii zapasowej dziennika. W przypadku ustawienia wyłączone pliki bazy danych nie są automatycznie zmniejszane podczas okresowych testów dla nieużywanego miejsca.
Opcja AUTO_SHRINK powoduje, że pliki są zmniejszane, gdy ponad 25 procent pliku zawiera nieużywane miejsce. Opcja powoduje zmniejszenie pliku do jednego z dwóch rozmiarów. Zmniejsza się w zależności od tego, co jest większe:
- Rozmiar, w którym 25 procent pliku jest nieużywane miejsce
- Rozmiar pliku podczas jego tworzenia
Nie można zmniejszyć bazy danych tylko do odczytu.
OD
Pliki bazy danych nie są automatycznie zmniejszane podczas okresowych testów dla nieużywanego miejsca.
Stan tej opcji można określić, sprawdzając kolumnę is_auto_shrink_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsAutoShrink
funkcji DATABASEPROPERTYEX.
Nuta
Opcja AUTO_SHRINK nie jest dostępna w zawartej bazie danych.
AUTO_UPDATE_STATISTICS { ON | WYŁ. }
NA
Określa, że optymalizator zapytań aktualizuje statystyki, gdy są używane przez zapytanie i kiedy mogą być nieaktualne. Statystyki stają się nieaktualne po wstawieniu, aktualizacji, usunięciu lub scalaniu operacji zmiany rozkładu danych w tabeli lub widoku indeksowanym. Optymalizator zapytań określa, kiedy statystyki mogą być nieaktualne, zliczając liczbę modyfikacji danych od ostatniej aktualizacji statystyk i porównując liczbę modyfikacji do progu. Próg jest oparty na liczbie wierszy w tabeli lub w widoku indeksowanym.
Optymalizator zapytań sprawdza nieaktualne statystyki przed skompilowanie zapytania i uruchomienie buforowanego planu zapytania. Optymalizator zapytań używa kolumn, tabel i indeksowanych widoków w predykacie zapytania, aby określić, które statystyki mogą być nieaktualne. Optymalizator zapytań określa te informacje przed skompilowanie zapytania. Przed uruchomieniem buforowanego planu zapytania aparat bazy danych sprawdza, czy plan zapytania odwołuje się up-to-date statistics.
Opcja AUTO_UPDATE_STATISTICS dotyczy statystyk utworzonych dla indeksów, pojedynczych kolumn w predykatach zapytań i statystyk tworzonych przy użyciu instrukcji CREATE STATISTICS. Ta opcja dotyczy również przefiltrowanych statystyk.
Wartość domyślna to WŁĄCZONE. Zalecamy użycie domyślnego ustawienia dla większości baz danych.
Użyj opcji AUTO_UPDATE_STATISTICS_ASYNC, aby określić, czy statystyki są aktualizowane synchronicznie, czy asynchronicznie.
OD
Określa, że optymalizator zapytań nie aktualizuje statystyk podczas ich użycia przez zapytanie. Optymalizator zapytań nie aktualizuje również statystyk, gdy mogą być nieaktualne. Ustawienie tej opcji na wartość OFF może spowodować nieoptymalne plany zapytań i obniżoną wydajność zapytań.
Stan tej opcji można określić, sprawdzając kolumnę is_auto_update_stats_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsAutoUpdateStatistics
funkcji DATABASEPROPERTYEX.
Aby uzyskać więcej informacji, zobacz sekcję "Korzystanie z opcji statystyk dotyczących całej bazy danych" w Statistics.
AUTO_UPDATE_STATISTICS_ASYNC { ON | WYŁ. }
NA
Określa, że aktualizacje statystyk dla opcji AUTO_UPDATE_STATISTICS są asynchroniczne. Optymalizator zapytań nie czeka na ukończenie aktualizacji statystyk przed skompilowanie zapytań.
Ustawienie tej opcji na WARTOŚĆ WŁĄCZONE nie ma wpływu, chyba że AUTO_UPDATE_STATISTICS jest ustawiona na WARTOŚĆ WŁĄCZONE.
Domyślnie opcja AUTO_UPDATE_STATISTICS_ASYNC jest ustawiona na WYŁĄCZONE, a optymalizator zapytań aktualizuje statystyki synchronicznie.
OD
Określa, że aktualizacje statystyk dla opcji AUTO_UPDATE_STATISTICS są synchroniczne. Optymalizator zapytań czeka na ukończenie aktualizacji statystyk przed skompilowanie zapytań.
Ustawienie tej opcji na WYŁ. nie ma wpływu, chyba że AUTO_UPDATE_STATISTICS jest ustawiona na WARTOŚĆ WŁĄCZONE.
Stan tej opcji można określić, sprawdzając kolumnę is_auto_update_stats_async_on
w widoku wykazu sys. databases.
Aby uzyskać więcej informacji opisujących, kiedy używać aktualizacji statystyk synchronicznych lub asynchronicznych, zobacz sekcję "Korzystanie z opcji statystyk dotyczących całej bazy danych" w Statistics.
<automatic_tuning_option> ::=
Steruje opcjami automatycznymi automatycznego dostrajania.
FORCE_LAST_GOOD_PLAN = { DEFAULT | WŁ. | WYŁ. }
Włącza lub wyłącza opcję automatycznego dostrajania
DOMYŚLNY
Wartość domyślna usługi Azure SQL Managed Instance to ON.
NA
Aparat bazy danych automatycznie wymusza ostatni znany dobry plan na Transact-SQL zapytaniach, w których nowy plan zapytania powoduje regresję wydajności. Aparat bazy danych stale monitoruje wydajność zapytań Transact-SQL zapytania przy użyciu wymuszonego planu. Jeśli wystąpi wzrost wydajności, aparat bazy danych nadal korzysta z ostatniego znanego dobrego planu. Jeśli nie zostanie wykryty wzrost wydajności, aparat bazy danych utworzy nowy plan zapytania. Instrukcja kończy się niepowodzeniem, jeśli magazyn zapytań nie jest włączony lub nie jest w trybie odczytu i zapisu. Jest to wartość domyślna.
OD
Aparat bazy danych zgłasza potencjalne regresje wydajności zapytań spowodowane zmianami planu zapytań w widoku sys.dm_db_tuning_recommendations. Jednak te zalecenia nie są stosowane automatycznie. Użytkownicy mogą monitorować aktywne zalecenia i rozwiązywać zidentyfikowane problemy, stosując Transact-SQL skrypty wyświetlane w widoku.
<change_tracking_option> ::=
Steruje opcjami śledzenia zmian. Możesz włączyć śledzenie zmian, ustawić opcje, opcje zmiany i wyłączyć śledzenie zmian. Przykłady można znaleźć w sekcji przykłady w dalszej części tego artykułu.
NA
Włącza śledzenie zmian dla bazy danych. Po włączeniu śledzenia zmian można również ustawić opcje AUTOMATYCZNEGO OCZYSZCZANIA i PRZECHOWYWANIA ZMIAN.
AUTO_CLEANUP = { ON | WYŁ. }
NA
Informacje o śledzeniu zmian są automatycznie usuwane po określonym okresie przechowywania.
OD
Dane śledzenia zmian nie są usuwane z bazy danych.
CHANGE_RETENTION = retention_period { DAYS | GODZINY | MIN }
Określa minimalny okres przechowywania informacji o śledzeniu zmian w bazie danych. Dane są usuwane tylko wtedy, gdy wartość AUTO_CLEANUP jest włączona.
retention_period jest liczbą całkowitą określającą składnik liczbowy okresu przechowywania.
Domyślny okres przechowywania to 2 dni. Minimalny okres przechowywania wynosi 1 minutę. Domyślnym typem przechowywania jest DAYS.
OD
Wyłącza śledzenie zmian dla bazy danych. Wyłącz śledzenie zmian we wszystkich tabelach przed wyłączeniem śledzenia zmian w bazie danych.
<cursor_option> ::=
Steruje opcjami kursora.
CURSOR_CLOSE_ON_COMMIT { ON | WYŁ. }
NA
Wszystkie kursory otwierane po zatwierdzeniu lub wycofaniu transakcji zostaną zamknięte.
OD
Kursory pozostają otwarte po zatwierdzeniu transakcji; wycofywanie transakcji zamyka wszystkie kursory z wyjątkiem tych zdefiniowanych jako INSENSITIVE lub STATIC.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie bazy danych dla CURSOR_CLOSE_ON_COMMIT. Klienci ODBC i OLE DB domyślnie wystawiają ustawienie instrukcji SET na poziomie połączenia CURSOR_CLOSE_ON_COMMIT wyłączone dla sesji. Klienci uruchamiają instrukcję podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET CURSOR_CLOSE_ON_COMMIT.
Stan tej opcji można określić, sprawdzając kolumnę is_cursor_close_on_commit_on
w widoku katalogu sys.databases lub właściwości IsCloseCursorsOnCommitEnabled funkcji DATABASEPROPERTYEX. Kursor jest niejawnie cofnięty tylko po rozłączeniu. Aby uzyskać więcej informacji, zobacz DECLARE CURSOR.
<db_encryption_option> ::=
Steruje stanem szyfrowania bazy danych.
SZYFROWANIE { WŁĄCZONE | WYŁ. }
Ustawia bazę danych do szyfrowania (WŁ.) lub niezaszyfrowanej (OFF). Aby uzyskać więcej informacji na temat szyfrowania bazy danych, zobacz transparent data encryption (TDE)i Transparent Data Encryption for Azure SQL Database, Azure SQL Managed Instance i Azure Synapse Analytics.
Po włączeniu szyfrowania na poziomie bazy danych wszystkie grupy plików są szyfrowane. Wszystkie nowe grupy plików dziedziczą zaszyfrowaną właściwość. Jeśli jakiekolwiek grupy plików w bazie danych są ustawione na WARTOŚĆ TYLKO DO ODCZYTU, operacja szyfrowania bazy danych zakończy się niepowodzeniem.
Stan szyfrowania bazy danych można wyświetlić przy użyciu dynamicznego widoku zarządzania sys.dm_database_encryption_keys.
<delayed_durability_option> ::=
Określa, czy transakcje zatwierdzają w pełni trwałe, czy opóźnione.
NIEPEŁNOSPRAWNY
Wszystkie transakcje po
SET DISABLED
są w pełni trwałe. Wszelkie opcje trwałości ustawione w niepodzielnej instrukcji bloku lub zatwierdzenia są ignorowane.DOZWOLONE
Wszystkie transakcje po
SET ALLOWED
są w pełni trwałe lub opóźnione, w zależności od opcji trwałości ustawionej w instrukcji bloku atomowego lub zatwierdzenia.ZMUSZONA
Wszystkie transakcje po
SET FORCED
są opóźnione. Wszelkie opcje trwałości ustawione w niepodzielnej instrukcji bloku lub zatwierdzenia są ignorowane.
<PARAMETERIZATION_option> ::=
Steruje opcją parametryzacji.
PARAMETRYZACJA { SIMPLE | WYMUSZONE }
PROSTY
Zapytania są sparametryzowane na podstawie domyślnego zachowania bazy danych.
ZMUSZONA
Program SQL Server sparametryzuje wszystkie zapytania w bazie danych.
Bieżące ustawienie tej opcji można określić, sprawdzając kolumnę is_parameterization_forced
w widoku katalogu sys.databases.
<query_store_options> ::=
WŁ. | OFF | CLEAR [ WSZYSTKO ]
Określa, czy magazyn zapytań jest włączony w tej bazie danych, a także kontroluje usuwanie zawartości magazynu zapytań.
NA
Włącza magazyn zapytań.
OD
Wyłącza magazyn zapytań. Jest to wartość domyślna.
JASNY
Usuń zawartość magazynu zapytań.
OPERATION_MODE
Opisuje tryb działania magazynu zapytań. Prawidłowe wartości to READ_ONLY i READ_WRITE. W trybie READ_WRITE magazyn zapytań zbiera i utrzymuje informacje o statystykach wykonywania i planu zapytań. W trybie READ_ONLY informacje można odczytywać z magazynu zapytań, ale nie są dodawane nowe informacje. Jeśli wyczerpano maksymalną przydzieloną przestrzeń magazynu zapytań, magazyn zapytań zmieni tryb działania na READ_ONLY.
CLEANUP_POLICY
Opisuje zasady przechowywania danych magazynu zapytań. STALE_QUERY_THRESHOLD_DAYS określa liczbę dni, dla których informacje dotyczące zapytania są przechowywane w magazynie zapytań. STALE_QUERY_THRESHOLD_DAYS jest typem bigint. Wartość domyślna to 30. W przypadku wersji Podstawowa usługi SQL Database wartość domyślna to 7 dni.
DATA_FLUSH_INTERVAL_SECONDS
Określa częstotliwość, z jaką dane zapisywane w magazynie zapytań są utrwalane na dysku. Aby zoptymalizować wydajność, dane zebrane przez magazyn zapytań są asynchronicznie zapisywane na dysku. Częstotliwość, z jaką odbywa się ten transfer asynchroniczny, jest konfigurowana przy użyciu argumentu DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS jest typem bigint. Wartość domyślna to 900 (15 minut).
MAX_STORAGE_SIZE_MB
Określa miejsce przydzielone do magazynu zapytań. MAX_STORAGE_SIZE_MB jest typem bigint. Wartość domyślna to 100 MB.
MAX_STORAGE_SIZE_MB
limit nie jest ściśle wymuszany. Rozmiar magazynu jest sprawdzany tylko wtedy, gdy magazyn zapytań zapisuje dane na dysku. Ten interwał jest ustawiany przez opcję DATA_FLUSH_INTERVAL_SECONDS
lub opcję okna dialogowego Magazyn zapytań programu Management Studio Interwał opróżniania danych. Wartość domyślna interwału to 900 sekund (lub 15 minut).
Jeśli magazyn zapytań naruszył limit MAX_STORAGE_SIZE_MB
między sprawdzaniem rozmiaru magazynu, przechodzi do trybu tylko do odczytu. Jeśli SIZE_BASED_CLEANUP_MODE
jest włączona, zostanie również wyzwolony mechanizm oczyszczania w celu wymuszenia limitu MAX_STORAGE_SIZE_MB
.
Po wyczyszczonej ilości miejsca tryb magazynu zapytań automatycznie przełącza się z powrotem do odczytu i zapisu.
Ważny
- Jeśli uważasz, że przechwytywanie obciążenia wymaga więcej niż 10 GB miejsca na dysku, prawdopodobnie należy przemyśleć i zoptymalizować obciążenie w celu ponownego użycia planów zapytań (na przykład przy użyciu wymuszonej parametryzacjilub dostosować konfiguracje magazynu zapytań.
- Począwszy od programu SQL Server 2019 (15.x) i usługi Azure SQL Database, można ustawić
QUERY_CAPTURE_MODE
na WARTOŚĆ CUSTOM, aby uzyskać dodatkową kontrolę nad zasadami przechwytywania zapytań. -
MAX_STORAGE_SIZE_MB
ustawienie limitu wynosi 10 240 MB w usłudze Azure SQL Managed Instance.
INTERVAL_LENGTH_MINUTES
Określa interwał czasu, w którym dane statystyk wykonywania środowiska uruchomieniowego są agregowane do magazynu zapytań. Aby zoptymalizować użycie miejsca, statystyki wykonywania środowiska uruchomieniowego w magazynie statystyk środowiska uruchomieniowego są agregowane w stałym przedziale czasu. To stałe okno czasowe jest konfigurowane przy użyciu argumentu INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES jest typem bigint. Wartość domyślna to 60.
SIZE_BASED_CLEANUP_MODE = { AUTO | WYŁ. }
Określa, czy czyszczenie jest automatycznie aktywowane, gdy łączna ilość danych zbliża się do maksymalnego rozmiaru.
OD
Czyszczenie oparte na rozmiarach nie jest automatycznie aktywowane.
AUTOMATYCZNIE
Czyszczenie oparte na rozmiarach jest automatycznie aktywowane, gdy rozmiar dysku osiągnie 90% max_storage_size_mb. Oczyszczanie oparte na rozmiarach usuwa najpierw najmniej kosztowne i najstarsze zapytania. Zatrzymuje się około 80% max_storage_size_mb. Jest to domyślna wartość konfiguracji.
SIZE_BASED_CLEANUP_MODE jest typem nvarchar.
QUERY_CAPTURE_MODE { ALL | AUTO | NIESTANDARDOWE | BRAK }
Wyznacza aktualnie aktywny tryb przechwytywania zapytań.
CAŁY
Wszystkie zapytania są przechwytywane.
AUTOMATYCZNIE
Przechwyć odpowiednie zapytania na podstawie liczby wykonań i użycia zasobów. Jest to domyślna wartość konfiguracji usługi Azure SQL Database.
ŻADEN
Zatrzymaj przechwytywanie nowych zapytań. Magazyn zapytań nadal zbiera statystyki kompilacji i środowiska uruchomieniowego dla zapytań, które zostały już przechwycone. Użyj tej konfiguracji z ostrożnością, ponieważ możesz przegapić przechwytywanie ważnych zapytań.
QUERY_CAPTURE_MODE jest typem nvarchar.
MAX_PLANS_PER_QUERY
Liczba całkowita reprezentująca maksymalną liczbę planów obsługiwanych dla każdego zapytania. MAX_PLANS_PER_QUERY jest typem int. Wartość domyślna to 200.
WAIT_STATS_CAPTURE_MODE { ON | WYŁ. }
Określa, czy statystyki oczekiwania są przechwytywane na zapytanie.
NA
Przechwytywane są informacje statystyczne dotyczące oczekiwania na zapytanie. Ta wartość jest wartością domyślną konfiguracji.
OD
Informacje o statystykach oczekiwania na zapytanie nie są przechwytywane.
<query_capture_policy_option_list> :: =
Steruje opcjami zasad przechwytywania magazynu zapytań. Z wyjątkiem STALE_CAPTURE_POLICY_THRESHOLD te opcje definiują warunki OR, które muszą wystąpić, aby zapytania były przechwytywane w zdefiniowanej wartości progu nieodświeżania zasad przechwytywania.
STALE_CAPTURE_POLICY_THRESHOLD = liczba całkowita { DAYS | GODZINY }
Definiuje okres interwału oceny, aby określić, czy zapytanie powinno zostać przechwycone. Wartość domyślna to 1 dzień i można ją ustawić z zakresu od 1 godziny do siedmiu dni.
EXECUTION_COUNT = liczba całkowita
Definiuje liczbę wykonań zapytania w okresie oceny. Wartość domyślna to 30, co oznacza, że dla domyślnego progu zasad przechwytywania nieaktualnego zapytanie musi wykonać co najmniej 30 razy w ciągu jednego dnia, aby utrwało się w magazynie zapytań. EXECUTION_COUNT jest typem int.
TOTAL_COMPILE_CPU_TIME_MS = liczba całkowita
Definiuje łączny czas kompilacji, który upłynął, używany przez zapytanie w okresie oceny. Wartość domyślna to 1000, co oznacza, że dla domyślnego progu zasad przechwytywania nieaktualnego zapytanie musi mieć łącznie co najmniej jedną sekundę czasu procesora CPU spędzonego podczas kompilacji zapytania w ciągu jednego dnia, aby utrwało się w magazynie zapytań. TOTAL_COMPILE_CPU_TIME_MS jest typem int.
TOTAL_EXECUTION_CPU_TIME_MS = liczba całkowita
Definiuje całkowity czas wykonywania, który upłynął, używany przez zapytanie w okresie oceny. Wartość domyślna to 100, co oznacza, że dla domyślnego progu zasad przechwytywania nieaktualnego zapytanie musi mieć łącznie co najmniej 100 ms czasu procesora CPU spędzonego podczas wykonywania w ciągu jednego dnia, aby utrwało się w magazynie zapytań. TOTAL_EXECUTION_CPU_TIME_MS jest typem int.
<snapshot_option> ::=
Określa poziom izolacji transakcji.
ALLOW_SNAPSHOT_ISOLATION { ON | WYŁ. }
NA
Włącza opcję Migawka na poziomie bazy danych. Po jej włączeniu instrukcje DML zaczynają generować wersje wierszy nawet wtedy, gdy żadna transakcja nie używa izolacji migawki. Po włączeniu tej opcji transakcje mogą określać poziom izolacji transakcji MIGAWKI. Gdy transakcja jest uruchamiana na poziomie izolacji migawki, wszystkie instrukcje widzą migawkę danych, ponieważ istnieją na początku transakcji. Jeśli transakcja uruchomiona na poziomie izolacji MIGAWKi uzyskuje dostęp do danych w wielu bazach danych, ALLOW_SNAPSHOT_ISOLATION musi być ustawiona na wartość WŁ. we wszystkich bazach danych lub każda instrukcja w transakcji musi używać wskazówek blokowania dla dowolnego odwołania w klauzuli FROM do tabeli w bazie danych, w której ALLOW_SNAPSHOT_ISOLATION jest wyłączona.
OD
Wyłącza opcję Migawka na poziomie bazy danych. Transakcje nie mogą określać poziomu izolacji transakcji SNAPSHOT.
Po ustawieniu ALLOW_SNAPSHOT_ISOLATION na nowy stan (od WŁ. do WYŁ. lub OD WŁ. do WŁ.), funkcja ALTER DATABASE nie zwraca kontroli do obiektu wywołującego, dopóki wszystkie istniejące transakcje w bazie danych nie zostaną zatwierdzone. Jeśli baza danych jest już w stanie określonym w instrukcji ALTER DATABASE, kontrolka jest natychmiast zwracana do wywołującego. Jeśli instrukcja ALTER DATABASE nie zwraca się szybko, użyj sys.dm_tran_active_snapshot_database_transactions, aby określić, czy istnieją długotrwałe transakcje. Jeśli instrukcja ALTER DATABASE zostanie anulowana, baza danych pozostaje w stanie, w którym została uruchomiona. Widok katalogu sys.databases wskazuje stan transakcji izolacji migawek w bazie danych. Jeśli snapshot_isolation_state_desc = IN_TRANSITION_TO_ON, instrukcja ALTER DATABASE ... ALLOW_SNAPSHOT_ISOLATION OFF
wstrzymuje sześć sekund i spróbuj ponownie wykonać operację.
Nie można zmienić stanu ALLOW_SNAPSHOT_ISOLATION, jeśli baza danych jest w trybie OFFLINE.
Możesz zmienić ustawienia ALLOW_SNAPSHOT_ISOLATION dla baz danych master
, model
, msdb
i tempdb
. To ustawienie jest zachowywane za każdym razem, gdy wystąpienie aparatu bazy danych zostanie zatrzymane i ponownie uruchomione, jeśli zmienisz ustawienie dla tempdb
. Jeśli zmienisz ustawienie dla systemu model
bazy danych, to ustawienie stanie się domyślne dla wszystkich nowych baz danych, z wyjątkiem tempdb
.
Opcja jest domyślnie włączona dla baz danych master
i msdb
.
Bieżące ustawienie tej opcji można określić, sprawdzając kolumnę snapshot_isolation_state
w widoku katalogu sys.databases.
READ_COMMITTED_SNAPSHOT { ON | WYŁ. }
NA
Włącza opcję migawki Read-Committed na poziomie bazy danych. Po jej włączeniu instrukcje DML zaczynają generować wersje wierszy nawet wtedy, gdy żadna transakcja nie używa izolacji migawki. Po włączeniu tej opcji transakcje określające poziom izolacji READ COMMITTED używają przechowywania wersji wierszy zamiast blokowania. Wszystkie instrukcje widzą migawkę danych, ponieważ istnieją na początku instrukcji, gdy transakcja jest uruchamiana na poziomie izolacji READ COMMITTED.
OD
Wyłącza opcję migawki Read-Committed na poziomie bazy danych. Transakcje określające poziom izolacji READ COMMITTED używają blokady.
Aby ustawić READ_COMMITTED_SNAPSHOT na WŁ. lub WYŁĄCZONE, nie musi istnieć żadne aktywne połączenia z bazą danych, z wyjątkiem połączenia z uruchomionym poleceniem ALTER DATABASE. Jednak baza danych nie musi być w trybie pojedynczego użytkownika. Nie można zmienić stanu tej opcji, gdy baza danych jest w trybie OFFLINE.
READ_COMMITTED_SNAPSHOT nie można włączyć dla baz danych systemu master
, tempdb
lub msdb
. Jeśli zmienisz ustawienie dla systemu model
bazy danych, to ustawienie stanie się domyślne dla wszystkich nowych baz danych utworzonych, z wyjątkiem tempdb
.
Bieżące ustawienie tej opcji można określić, sprawdzając kolumnę is_read_committed_snapshot_on
w widoku katalogu sys.databases.
Ostrzeżenie
Po utworzeniu tabeli z TRWAŁOŚCI = SCHEMA_ONLY, a READ_COMMITTED_SNAPSHOT zostanie następnie zmieniona przy użyciu ALTER DATABASE, dane w tabeli zostaną utracone.
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | WYŁ. }
NA
Gdy poziom izolacji transakcji jest ustawiony na dowolny poziom izolacji niższy niż SNAPSHOT, wszystkie interpretowane operacje Transact-SQL w tabelach zoptymalizowanych pod kątem pamięci są uruchamiane w ramach izolacji migawki. Przykłady poziomów izolacji niższych niż migawka to READ COMMITTED lub READ UNCOMMITTED. Te operacje są uruchamiane, czy poziom izolacji transakcji jest ustawiany jawnie na poziomie sesji, czy jest używany niejawnie.
OD
Nie podnosi poziomu izolacji transakcji dla interpretowanych operacji Transact-SQL w tabelach zoptymalizowanych pod kątem pamięci.
Nie można zmienić stanu MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT, jeśli baza danych jest w trybie OFFLINE.
Wartość domyślna to OFF.
Bieżące ustawienie tej opcji można określić, sprawdzając kolumnę is_memory_optimized_elevate_to_snapshot_on
w widoku katalogu sys.databases.
<sql_option> ::=
Steruje opcjami zgodności ANSI na poziomie bazy danych.
ANSI_NULL_DEFAULT { ON | WYŁ. }
Określa wartość domyślną NULL lub NOT NULL kolumny lub typu zdefiniowanego przez użytkownika CLR, dla którego wartość null nie jest jawnie zdefiniowana w instrukcjach CREATE TABLE lub ALTER TABLE. Kolumny zdefiniowane z ograniczeniami są zgodne z regułami ograniczeń, niezależnie od tego, jakie może być to ustawienie.
NA
Wartość domyślna to NULL.
OD
Wartość domyślna to NOT NULL.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie na poziomie bazy danych dla ANSI_NULL_DEFAULT. Klienci ODBC i OLE DB domyślnie wystawiają ustawienie instrukcji SET na poziomie połączenia ANSI_NULL_DEFAULT włączone dla sesji. Klienci uruchamiają instrukcję podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET ANSI_NULL_DFLT_ON.
W przypadku zgodności ze standardem ANSI ustawienie opcji bazy danych ANSI_NULL_DEFAULT na WŁ. powoduje zmianę domyślnej wartości null bazy danych.
Stan tej opcji można określić, sprawdzając kolumnę is_ansi_null_default_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsAnsiNullDefault
funkcji DATABASEPROPERTYEX.
ANSI_NULLS { ON | WYŁ. }
NA
Wszystkie porównania z wartością null mają wartość UNKNOWN.
OD
Porównania wartości innych niż Unicode z wartością null mają wartość TRUE, jeśli obie wartości mają wartość NULL.
Ważny
W przyszłej wersji programu SQL Server ANSI_NULLS zawsze będzie włączona, a wszystkie aplikacje, które jawnie ustawią opcję WYŁ., spowodują wystąpienie błędu. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie bazy danych dla ANSI_NULLS. Klienci ODBC i OLE DB domyślnie wystawiają ustawienie instrukcji SET na poziomie połączenia ANSI_NULLS włączone dla sesji. Klienci uruchamiają instrukcję podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET ANSI_NULLS.
Ważny
USTAW ANSI_NULLS należy również ustawić wartość WŁĄCZONE podczas tworzenia lub wprowadzania zmian w indeksach w obliczonych kolumnach lub indeksowanych widokach.
Stan tej opcji można określić, sprawdzając kolumnę is_ansi_nulls_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsAnsiNullsEnabled
funkcji DATABASEPROPERTYEX.
ANSI_PADDING { ON | WYŁ. }
NA
Ciągi są dopełniane tą samą długością przed konwersją. Ponadto dopełnione do tej samej długości przed wstawieniem do varchar lub nvarchar typu danych.
OD
Wstawia końcowe wartości puste w wartościach znaków do kolumn varchar lub nvarchar. Pozostawia również końcowe zera w wartościach binarnych wstawionych do kolumn . Wartości nie są dopełniane do długości kolumny.
Po określeniu opcji WYŁ. to ustawienie ma wpływ tylko na definicję nowych kolumn.
Ważny
W przyszłej wersji programu SQL Server ANSI_PADDING zawsze będzie włączona, a wszystkie aplikacje, które jawnie ustawią opcję WYŁ., spowodują wystąpienie błędu. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji. Zalecamy, aby zawsze ustawiać ANSI_PADDING na WŁ. ANSI_PADDING musi być włączony podczas tworzenia lub manipulowania indeksami w kolumnach obliczeniowych lub indeksowanych widokach.
char(n) i binary(n) kolumn, które zezwalają na wartości null, są dopełniane do długości kolumny, gdy ANSI_PADDING jest ustawiona na wartość WŁĄCZONE. Końcowe wartości puste i zera są przycinane, gdy ANSI_PADDING jest wyłączona. char(n) i binary(n) kolumn, które nie zezwalają na wartości null, są zawsze dopełniane długością kolumny.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie na poziomie bazy danych dla ANSI_PADDING. Klienci ODBC i OLE DB domyślnie wystawiają ustawienie instrukcji SET na poziomie połączenia ANSI_PADDING włączone dla sesji. Klienci uruchamiają instrukcję podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET ANSI_PADDING.
Stan tej opcji można określić, sprawdzając kolumnę is_ansi_padding_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsAnsiPaddingEnabled
funkcji DATABASEPROPERTYEX.
ANSI_WARNINGS { ON | WYŁ. }
NA
Błędy lub ostrzeżenia są wystawiane, gdy wystąpią warunki, takie jak dzielenie przez zero. Błędy i ostrzeżenia są również wystawiane, gdy wartości null są wyświetlane w funkcjach agregujących.
OD
Nie są wywoływane żadne ostrzeżenia, a wartości null są zwracane, gdy wystąpią warunki, takie jak dzielenie przez zero.
Ważny
Ustaw ANSI_WARNINGS należy ustawić wartość WŁĄCZONE podczas tworzenia lub wprowadzania zmian w indeksach w kolumnach obliczeniowych lub widokach indeksowanych.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie bazy danych dla ANSI_WARNINGS. Klienci ODBC i OLE DB domyślnie wystawiają ustawienie instrukcji SET na poziomie połączenia ANSI_WARNINGS włączone dla sesji. Klienci uruchamiają instrukcję podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET ANSI_WARNINGS.
Stan tej opcji można określić, sprawdzając kolumnę is_ansi_warnings_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsAnsiWarningsEnabled
funkcji DATABASEPROPERTYEX.
ARITHABORT { ON | WYŁ. }
NA
Zapytanie kończy się, gdy podczas wykonywania zapytania występuje błąd przepełnienia lub dzielenia przez zero.
OD
Gdy wystąpi jeden z tych błędów, zostanie wyświetlony komunikat ostrzegawczy. Zapytanie, wsadowe lub transakcje nadal przetwarza się tak, jakby nie wystąpił błąd, nawet jeśli zostanie wyświetlone ostrzeżenie.
Ważny
USTAWIENIE ARITHABORT musi być ustawione na WARTOŚĆ WŁĄCZONE podczas tworzenia lub wprowadzania zmian w indeksach dla obliczonych kolumn lub indeksowanych widoków.
Stan tej opcji można określić, sprawdzając kolumnę is_arithabort_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsArithmeticAbortEnabled
funkcji DATABASEPROPERTYEX.
COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Aby uzyskać więcej informacji, zobacz
CONCAT_NULL_YIELDS_NULL { ON | WYŁ. }
NA
Wynikiem operacji łączenia jest wartość NULL, gdy jeden z operandów ma wartość NULL. Na przykład łączenie ciągu znaków "To jest" i wartość NULL powoduje wartość NULL, zamiast wartości "To jest".
OD
Wartość null jest traktowana jako pusty ciąg znaków.
Ważny
CONCAT_NULL_YIELDS_NULL należy ustawić wartość WŁĄCZONE podczas tworzenia lub wprowadzania zmian w indeksach w kolumnach obliczeniowych lub indeksowanych widokach.
W przyszłej wersji programu SQL Server CONCAT_NULL_YIELDS_NULL zawsze będzie włączona, a wszystkie aplikacje, które jawnie ustawią opcję WYŁ., spowodują wystąpienie błędu. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie bazy danych dla CONCAT_NULL_YIELDS_NULL. Domyślnie klienci ODBC i OLE DB wystawiają ustawienie instrukcji SET na poziomie połączenia CONCAT_NULL_YIELDS_NULL na WŁ. dla sesji podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET CONCAT_NULL_YIELDS_NULL.
Stan tej opcji można określić, sprawdzając kolumnę is_concat_null_yields_null_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsNullConcat
funkcji DATABASEPROPERTYEX.
NUMERIC_ROUNDABORT { ON | WYŁ. }
NA
Błąd jest generowany, gdy w wyrażeniu występuje utrata precyzji.
OD
Utrata dokładności nie generuje komunikatu o błędzie, a wynik jest zaokrąglany do dokładności kolumny lub zmiennej przechowującej wynik.
Ważny
NUMERIC_ROUNDABORT należy ustawić wartość OFF podczas tworzenia lub wprowadzania zmian w indeksach w kolumnach obliczeniowych lub indeksowanych widokach.
Stan tej opcji można określić w kolumnie is_numeric_roundabort_on
w widoku katalogu sys.databases. Stan można również określić, sprawdzając właściwość IsNumericRoundAbortEnabled
funkcji DATABASEPROPERTYEX.
QUOTED_IDENTIFIER { ON | WYŁ. }
NA
Podwójnego cudzysłowu można używać do ujęć identyfikatorów rozdzielanych.
Wszystkie ciągi rozdzielone podwójnym cudzysłowem są interpretowane jako identyfikatory obiektów. Identyfikatory cytowane nie muszą być zgodne z regułami Transact-SQL dla identyfikatorów. Mogą to być słowa kluczowe i mogą zawierać znaki, które nie są dozwolone w identyfikatorach Transact-SQL. Jeśli podwójny cudzysłów (
"
) jest częścią identyfikatora, może być reprezentowany przez dwa podwójne cudzysłowy (""
).OD
Identyfikatory nie mogą być w cudzysłowie i muszą być zgodne ze wszystkimi regułami Transact-SQL dla identyfikatorów. Literały mogą być rozdzielane znakami pojedynczego lub podwójnego cudzysłowu.
Program SQL Server umożliwia również rozdzielenie identyfikatorów nawiasami kwadratowymi ([
i ]
). Identyfikatory w nawiasach mogą być zawsze używane, niezależnie od ustawienia QUOTED_IDENTIFIER. Aby uzyskać więcej informacji, zobacz Identyfikatory bazy danych.
Po utworzeniu tabeli opcja IDENTYFIKATOR CYTOWANY jest zawsze przechowywana jako WŁ. w metadanych tabeli. Opcja jest przechowywana nawet wtedy, gdy opcja jest ustawiona na WARTOŚĆ OFF podczas tworzenia tabeli.
Ustawienia na poziomie połączenia ustawione przy użyciu instrukcji SET zastępują domyślne ustawienie bazy danych dla QUOTED_IDENTIFIER. Klienci ODBC i OLE DB wystawiają ustawienie instrukcji SET na poziomie połączenia QUOTED_IDENTIFIER domyślnie włączone. Klienci uruchamiają instrukcję podczas nawiązywania połączenia z wystąpieniem programu SQL Server. Aby uzyskać więcej informacji, zobacz SET QUOTED_IDENTIFIER.
Stan tej opcji można określić, sprawdzając kolumnę is_quoted_identifier_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsQuotedIdentifiersEnabled
funkcji DATABASEPROPERTYEX.
RECURSIVE_TRIGGERS { ON | WYŁ. }
NA
Rekursywne wypalanie wyzwalaczy AFTER jest dozwolone.
OD
Stan tej opcji można określić, sprawdzając kolumnę
is_recursive_triggers_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwośćIsRecursiveTriggersEnabled
funkcji DATABASEPROPERTYEX.Nuta
Nie można zapobiegać rekursji bezpośredniej tylko wtedy, gdy RECURSIVE_TRIGGERS jest ustawiona na wartość OFF. Aby wyłączyć rekursję pośrednią, należy również ustawić opcję serwera wyzwalaczy zagnieżdżonych na 0.
Stan tej opcji można określić, sprawdzając kolumnę
<target_recovery_time_option> ::=
target_recovery_time_option nie jest obsługiwana w usłudze Azure SQL Managed Instance.
Określa częstotliwość pośrednich punktów kontrolnych dla poszczególnych baz danych. Począwszy od programu SQL Server 2016 (13.x), wartość domyślna dla nowych baz danych to 1 minuta, co wskazuje, że baza danych używa pośrednich punktów kontrolnych. W przypadku starszych wersji wartość domyślna to 0, co oznacza, że baza danych używa automatycznych punktów kontrolnych, których częstotliwość zależy od ustawienia interwału odzyskiwania wystąpienia serwera. Firma Microsoft zaleca 1 minutę dla większości systemów.
Z kończeniem <> ::=
Określa, kiedy wycofać niekompletne transakcje, gdy baza danych zostanie przeniesiona z jednego stanu do innego. Jeśli klauzula zakończenia zostanie pominięta, instrukcja ALTER DATABASE czeka na czas nieokreślony, jeśli w bazie danych istnieje blokada. Można określić tylko jedną klauzulę zakończenia i jest zgodna z klauzulami SET.
Nuta
Nie wszystkie opcje bazy danych używają klauzuli WITH <zakończenie>. Aby uzyskać więcej informacji, zobacz tabelę w obszarze Opcje ustawień sekcji "Uwagi" tego artykułu.
WYCOFYWANIE PO liczbą całkowitą [SEKUNDY] | NATYCHMIASTOWE WYCOFANIE
Określa, czy należy wycofać się po określonej liczbie sekund, czy natychmiast.
NO_WAIT
Określa, że żądanie kończy się niepowodzeniem, jeśli żądany stan bazy danych lub zmiana opcji nie może zakończyć się natychmiast. Ukończenie natychmiast oznacza, że nie trzeba czekać na transakcje do zatwierdzenia lub wycofania na własną rękę.
<temporal_history_retention> ::=
TEMPORAL_HISTORY_RETENTION { ON | WYŁ. }
Domyślnie włączone, ale także automatycznie ustaw wartość OFF po operacji przywracania do punktu w czasie. Aby uzyskać więcej informacji, w tym sposób włączania tego ustawienia, zobacz Jak skonfigurować zasady przechowywania.
NA
Domyślny. Włącza zasady przechowywania tabel czasowych. Aby uzyskać więcej informacji, zobacz Zarządzanie przechowywaniem danych historycznych w tabelach czasowych z wersjami systemowymi.
OD
Nie wykonuj czasowych zasad przechowywania historycznego.
Ustawianie opcji
Aby pobrać bieżące ustawienia opcji bazy danych, użyj widoku katalogu sys.databases lub DATABASEPROPERTYEX
Po ustawieniu opcji bazy danych nowe ustawienie zostanie zastosowane natychmiast.
Możesz zmienić wartości domyślne dla dowolnej z opcji bazy danych dla wszystkich nowo utworzonych baz danych. W tym celu zmień odpowiednią opcję bazy danych w bazie danych systemu model
.
Przykłady
A. Włączanie izolacji migawek w bazie danych
W poniższym przykładzie jest włączona opcja struktury izolacji migawek dla bazy danych AdventureWorks2022
.
USE master;
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
-- Check the state of the snapshot_isolation_framework
-- in the database.
SELECT name, snapshot_isolation_state,
snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'[database_name]';
GO
Zestaw wyników pokazuje, że platforma izolacji migawek jest włączona.
nazwa | snapshot_isolation_state | opis |
---|---|---|
[database_name] | 1 | NA |
B. Włączanie, modyfikowanie lub wyłączanie śledzenia zmian
Poniższy przykład umożliwia śledzenie zmian dla bazy danych AdventureWorks2022
i ustawia okres przechowywania na 2
dni.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);
W poniższym przykładzie pokazano, jak zmienić okres przechowywania na 3
dni.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);
W poniższym przykładzie pokazano, jak wyłączyć śledzenie zmian dla bazy danych AdventureWorks2022
.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
C. Włączanie magazynu zapytań
Poniższy przykład umożliwia magazyn zapytań i konfiguruje parametry magazynu zapytań.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
QUERY_CAPTURE_MODE = AUTO,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60
);
D. Włączanie magazynu zapytań ze statystykami oczekiwania
Poniższy przykład umożliwia magazyn zapytań i konfiguruje jego parametry.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON
);
E. Włączanie magazynu zapytań przy użyciu niestandardowych opcji zasad przechwytywania
Poniższy przykład umożliwia magazyn zapytań i konfiguruje jego parametry.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON,
QUERY_CAPTURE_MODE = CUSTOM,
QUERY_CAPTURE_POLICY = (
STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
)
);
Powiązana zawartość
- statystyki
- DATABASEPROPERTYEX (Transact-SQL)
-
sys.databases - sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
poziomu zgodności z usługą ALTER DATABASE - dublowania bazy danych ALTER DATABASE
- CREATE DATABASE
- włączanie i wyłączanie śledzenia zmian (SQL Server)
- DROP DATABASE (Transact-SQL)
- USTAWIĆ POZIOM IZOLACJI TRANSAKCJI (Transact-SQL)
- sp_configure
- Najlepsze rozwiązania dotyczące monitorowania obciążeń za pomocą magazynu zapytań
usługi
usługi
* Azure Synapse
Analiza *
Azure Synapse Analytics
Składnia
ALTER DATABASE { database_name }
SET
{
<optionspec> [ ,...n ]
}
;
<option_spec>::=
{
<auto_option>
| <db_encryption_option>
| <query_store_options>
| <result_set_caching>
| <snapshot_option>
}
;
<auto_option> ::=
{
AUTO_CREATE_STATISTICS { OFF | ON }
}
<db_encryption_option> ::=
{
ENCRYPTION { ON | OFF }
}
<query_store_option> ::=
{
QUERY_STORE { OFF | ON }
}
<result_set_caching_option> ::=
{
RESULT_SET_CACHING { ON | OFF }
}
<snapshot_option> ::=
{
READ_COMMITTED_SNAPSHOT { ON | OFF }
}
Argumenty
database_name
Nazwa bazy danych, która ma zostać zmodyfikowana.
<auto_option> ::=
Steruje opcjami automatycznymi.
AUTO_CREATE_STATISTICS { ON | WYŁ. }
NA
Optymalizator zapytań tworzy statystyki dotyczące pojedynczych kolumn w predykatach zapytań, w razie potrzeby, aby poprawić plany zapytań i wydajność zapytań. Te statystyki jednokolumna są tworzone podczas kompilowania zapytań przez optymalizator zapytań. Statystyki z jedną kolumną są tworzone tylko w kolumnach, które nie są jeszcze pierwszą kolumną istniejącego obiektu statystyk.
Wartość domyślna to WŁĄCZONE. Zalecamy użycie domyślnego ustawienia dla większości baz danych.
OD
Optymalizator zapytań nie tworzy statystyk dotyczących pojedynczych kolumn w predykatach zapytań podczas kompilowania zapytań. Ustawienie tej opcji na wartość OFF może spowodować nieoptymalne plany zapytań i obniżoną wydajność zapytań.
To polecenie musi być uruchamiane podczas nawiązywania połączenia z bazą danych użytkownika.
Stan tej opcji można określić, sprawdzając kolumnę is_auto_create_stats_on
w widoku wykazu sys. databases. Stan można również określić, sprawdzając właściwość IsAutoCreateStatistics
funkcji DATABASEPROPERTYEX.
Aby uzyskać więcej informacji, zobacz sekcję "Korzystanie z opcji statystyk dotyczących całej bazy danych" w Statistics.
<db_encryption_option> ::=
Steruje stanem szyfrowania bazy danych.
SZYFROWANIE { WŁĄCZONE | WYŁ. }
NA
Ustawia bazę danych do szyfrowania.
OD
Ustawia bazę danych na nieszyfrowaną.
Aby uzyskać więcej informacji na temat szyfrowania bazy danych, zobacz transparent data encryption (TDE)i Transparent Data Encryption for Azure SQL Database, Azure SQL Managed Instance i Azure Synapse Analytics.
Po włączeniu szyfrowania na poziomie bazy danych wszystkie grupy plików są szyfrowane. Wszystkie nowe grupy plików dziedziczą zaszyfrowaną właściwość. Jeśli jakiekolwiek grupy plików w bazie danych są ustawione na WARTOŚĆ TYLKO DO ODCZYTU, operacja szyfrowania bazy danych zakończy się niepowodzeniem.
Stan szyfrowania bazy danych i stan skanowania szyfrowania można zobaczyć przy użyciu dynamicznego widoku zarządzania sys.dm_database_encryption_keys
.
<query_store_option> ::=
Określa, czy magazyn zapytań jest włączony w tym magazynie danych.
QUERY_STORE { ON | WYŁ. }
NA
Włącza magazyn zapytań.
OD
Wyłącza magazyn zapytań. Off jest wartością domyślną.
Nuta
W przypadku usługi Azure Synapse Analytics należy wykonać ALTER DATABASE SET QUERY_STORE
z bazy danych użytkowników. Wykonywanie instrukcji z innego wystąpienia magazynu danych nie jest obsługiwane.
Nuta
W przypadku usługi Azure Synapse Analytics magazyn zapytań można włączyć tak jak na innych platformach, ale dodatkowe opcje konfiguracji nie są obsługiwane.
<result_set_caching_option> ::=
Dotyczy: Azure Synapse Analytics
Określa, czy wynik zapytania jest buforowany w bazie danych.
RESULT_SET_CACHING { ON | WYŁ. }
NA
Określa, że zestawy wyników zapytania zwracane z tej bazy danych są buforowane w bazie danych.
OD
Określa, że zestawy wyników zapytania zwrócone z tej bazy danych nie są buforowane w bazie danych.
To polecenie musi być uruchamiane podczas nawiązywania połączenia z bazą danych master
. Zmiana tego ustawienia bazy danych jest obowiązuje natychmiast. Koszty magazynu są naliczane przez buforowanie zestawów wyników zapytań. Po wyłączeniu buforowania wyników dla bazy danych wcześniej utrwalonej pamięci podręcznej wyników zostanie natychmiast usunięta z magazynu usługi Azure Synapse.
Uruchom to polecenie, aby sprawdzić konfigurację buforowania zestawu wyników bazy danych. Jeśli buforowanie zestawu wyników jest włączone, is_result_set_caching_on
zwraca wartość 1.
SELECT name, is_result_set_caching_on FROM sys.databases
WHERE name = <'Your_Database_Name'>
Uruchom to polecenie, aby sprawdzić, czy zapytanie zostało wykonane przy użyciu buforowanego wyniku. Kolumna result_cache_hit
zwraca wartość 1 dla trafienia pamięci podręcznej, 0 w przypadku braku pamięci podręcznej i wartości ujemnych z powodów, dla których buforowanie zestawu wyników nie zostało użyte. Aby uzyskać szczegółowe informacje, sprawdź sys.dm_pdw_exec_requests.
SELECT request_id, command, result_cache_hit FROM sys.dm_pdw_exec_requests
WHERE request_id = <'Your_Query_Request_ID'>
Nuta
Buforowanie zestawu wyników nie powinno być używane w połączeniu z DECRYPTBYKEY. Jeśli ta funkcja kryptograficzna musi być używana, upewnij się, że buforowanie zestawu wyników jest wyłączone (na poziomie sesji lub na poziomie bazy danych) w czasie wykonywania.
Ważny
Operacje tworzenia pamięci podręcznej zestawu wyników i pobierania danych z pamięci podręcznej są wykonywane w węźle kontrolnym wystąpienia magazynu danych. Gdy buforowanie zestawu wyników jest włączone, uruchamianie zapytań, które zwracają duży zestaw wyników (na przykład >1 milion wierszy), może spowodować wysokie użycie procesora CPU w węźle kontrolnym i spowolnić ogólną odpowiedź na zapytanie w wystąpieniu. Te zapytania są często używane podczas eksploracji danych lub operacji ETL. Aby uniknąć przeciążenia węzła sterowania i spowodować problem z wydajnością, użytkownicy powinni wyłączyć buforowanie zestawu wyników w bazie danych przed uruchomieniem tych typów zapytań.
Aby uzyskać szczegółowe informacje na temat dostrajania wydajności za pomocą buforowania zestawu wyników, zobacz wskazówki dotyczące dostrajania wydajności.
Uprawnienia
Aby ustawić opcję RESULT_SET_CACHING, użytkownik musi zalogować się na poziomie serwera (utworzony przez proces aprowizacji) lub być członkiem roli bazy danych dbmanager
.
<snapshot_option> ::=
Dotyczy: Azure Synapse Analytics
Steruje poziomem izolacji transakcji bazy danych.
READ_COMMITTED_SNAPSHOT { ON | WYŁ. }
NA
Włącza opcję READ_COMMITTED_SNAPSHOT na poziomie bazy danych.
OD
Wyłącz opcję READ_COMMITTED_SNAPSHOT na poziomie bazy danych.
To polecenie musi być uruchamiane podczas nawiązywania połączenia z bazą danych master
. Włączenie lub wyłączenie READ_COMMITTED_SNAPSHOT dla bazy danych użytkownika powoduje zabicie wszystkich otwartych połączeń z tą bazą danych. Należy wprowadzić tę zmianę w oknie obsługi bazy danych lub poczekać, aż nie będzie aktywnego połączenia z bazą danych, z wyjątkiem połączenia z uruchomionym poleceniem ALTER DATABASE. Baza danych nie musi być w trybie pojedynczego użytkownika. Zmiana ustawienia READ_COMMITTED_SNAPSHOT na poziomie sesji nie jest obsługiwana. Aby sprawdzić to ustawienie dla bazy danych, sprawdź kolumnę is_read_committed_snapshot_on
w sys.databases
.
W bazie danych z włączoną READ_COMMITTED_SNAPSHOT zapytania mogą mieć niższą wydajność ze względu na skanowanie wersji, jeśli istnieje wiele wersji danych. Długotrwałe transakcje mogą również spowodować wzrost rozmiaru bazy danych. Ten problem występuje, jeśli istnieją zmiany danych przez te transakcje, które blokują czyszczenie wersji.
Uprawnienia
Aby ustawić opcję READ_COMMITTED_SNAPSHOT, użytkownik musi mieć uprawnienie ALTER w bazie danych.
Przykłady
Sprawdzanie ustawienia statystyk dla bazy danych
SELECT name, is_auto_create_stats_on FROM sys.databases
Włączanie magazynu zapytań dla bazy danych
ALTER DATABASE [database_name]
SET QUERY_STORE = ON;
Włączanie buforowania zestawu wyników dla bazy danych
-- Run this command when connecting to the MASTER database
ALTER DATABASE [database_name]
SET RESULT_SET_CACHING ON;
Sprawdzanie ustawienia buforowania zestawu wyników dla bazy danych
SELECT name, is_result_set_caching_on
FROM sys.databases;
Włączanie opcji Read_Committed_Snapshot dla bazy danych
Uruchom to polecenie podczas nawiązywania połączenia z bazą danych master
.
ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON;
Powiązana zawartość
usługi
usługi
Azure Synapse
analizy
microsoft fabric
Microsoft Fabric
Użyj ALTER DATABASE ... SET
do zarządzania magazynem usługi Microsoft Fabric Warehouse.
Składnia
-- Microsoft Fabric
ALTER DATABASE { warehouse_name | CURRENT }
SET
{
<option_spec> [ ,...n ]
}
<option_spec> ::=
{
<data_lake_log_publishing>
| <vorder>
}
;
<data_lake_log_publishing> ::=
{
DATA_LAKE_LOG_PUBLISHING { PAUSED | AUTO }
}
<vorder> ::=
{
VORDER = OFF
}
Uwagi
Obecnie wstrzymując publikowanie dzienników usługi Delta Lake i wyłączanie zachowania orderów wirtualnych w magazynie są jedynymi zastosowaniami ALTER DATABASE ... SET
w usłudze Microsoft Fabric.
Uprawnienia
Użytkownik musi być członkiem ról Administrator, Członek lub Współautor w obszarze roboczym Sieć szkieletowa.
Przykłady
A. Wstrzymanie publikowania dzienników usługi Delta Lake
Następujące polecenie języka T-SQL wstrzymuje publikowanie dzienników usługi Delta Lake w bieżącym kontekście magazynu.
ALTER DATABASE CURRENT SET DATA_LAKE_LOG_PUBLISHING = PAUSED;
Aby sprawdzić bieżący stan publikowania dziennika usługi Delta Lake we wszystkich magazynach w obszarze roboczym, użyj następującego kodu T-SQL, aby wysłać zapytanie do sys.databases w nowym oknie zapytania:
SELECT [name], [DATA_LAKE_LOG_PUBLISHING_DESC] FROM sys.databases;