Udostępnij za pośrednictwem


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 SQL Database

usługi SQL Managed Instance

 

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ę w widoku katalogu sys.databases lub właściwość funkcji DATABASEPROPERTYEX.

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 . Stan tej opcji można wyświetlić w widoku 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ę w widoku katalogu sys.databases lub właściwość funkcji DATABASEPROPERTYEX.

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.

<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:

  1. Ustaw wartość AUTO_UPDATE_STATISTICS_ASYNC na WYŁ.

  2. 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, modeli 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 danych tempdb 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 danych tempdb.

  • 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:

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 i CONTROL 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ład MyStretchDatabaseServer.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 lub sysadmin 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, msdbi 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, tempdblub 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 poziom zgodności ALTER DATABASE.

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ę w widoku katalogu sys.databases lub właściwość funkcji DATABASEPROPERTYEX.

<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
      )
    );

* SQL Database *  

usługi SQL Managed Instance

 

SQL Database

Poziomy zgodności to opcje, ale są opisane w poziom zgodności ALTER DATABASE.

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ś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ę "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ę w widoku katalogu sys.databases lub właściwość 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.

<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 i dbcreator oraz sysadmin 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 danych master może wystąpić komunikat o błędzie Msg 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 danych master może wystąpić komunikat o błędzie Msg 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, tempdblub 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 poziom zgodności ALTER DATABASE.

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ę w widoku katalogu sys.databases lub właściwość funkcji DATABASEPROPERTYEX.

<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> ::=

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
      )
    );

usługi SQL Database

* SQL Managed Instance *  

 

Azure SQL Managed Instance

Poziomy zgodności to opcje, ale są opisane w poziom zgodności ALTER DATABASE.

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, msdbi 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, tempdblub 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 poziom zgodności ALTER DATABASE.

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ę w widoku katalogu sys.databases lub właściwość funkcji DATABASEPROPERTYEX.

<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> ::=

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
      )
    );

usługi SQL Database

usługi SQL Managed Instance

* 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;

usługi SQL Database

usługi SQL Managed Instance

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;