Bagikan melalui


OPSI ALTER DATABASE SET (Transact-SQL)

Mengatur opsi database di Microsoft SQL Server, Azure SQL Database, dan Azure Synapse Analytics. Untuk opsi UBAH DATABASE lainnya, lihat MENGUBAH DATABASE.

Catatan

Mengatur beberapa opsi dengan ALTER DATABASE mungkin memerlukan akses database eksklusif. Jika pernyataan ALTER DATABASE tidak selesai tepat waktu, periksa untuk melihat apakah sesi lain dalam database memblokir sesi ALTER DATABASE.

Untuk informasi selengkapnya tentang konvensi sintaks, lihat Konvensi sintaks transact-SQL.

Pilih produk

Di baris berikut, pilih nama produk mana pun yang Anda minati. Melakukan itu menampilkan isi yang berbeda di sini pada halaman web ini, sesuai untuk produk mana pun yang Anda pilih.

* SQL Server *  

 

SQL Server

Pencerminan database, grup ketersediaan AlwaysOn, dan tingkat kompatibilitas adalah SET opsi tetapi dijelaskan dalam artikel terpisah karena panjangnya. Untuk informasi selengkapnya, lihat MENGUBAH Pencerminan Database DATABASE, MENGUBAH HADR SET DATABASE, dan MENGUBAH tingkat kompatibilitas DATABASE.

Konfigurasi terlingkup database digunakan untuk mengatur beberapa konfigurasi database di tingkat database individual. Untuk informasi selengkapnya, lihat MENGUBAH KONFIGURASI CAKUPAN DATABASE.

Catatan

Banyak opsi kumpulan database dapat dikonfigurasi untuk sesi saat ini dengan menggunakan pernyataan SET dan sering dikonfigurasi oleh aplikasi saat terhubung. Opsi set tingkat sesi mengambil alih ALTER DATABASE SET nilai. Opsi database yang dijelaskan di bagian berikut ini adalah nilai yang bisa Anda atur untuk sesi yang tidak secara eksplisit menyediakan nilai opsi set lainnya.

Sintaks

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

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

Argumen

database_name

Nama database yang akan dimodifikasi.

CURRENT

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))

Menjalankan tindakan dalam database saat ini. CURRENT tidak didukung untuk semua opsi dalam semua konteks. Jika CURRENT gagal, berikan nama database.

<> accelerated_database_recovery ::=

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2019 (15.x))

Mengaktifkan pemulihan database terakselerasi (ADR) per database. ADR diatur ke NONAKTIF secara default di SQL Server 2019 (15.x). Dengan menggunakan sintaks ini, Anda dapat menunjuk grup file tertentu untuk data Penyimpanan Versi Persisten (PVS). Jika tidak ada grup file yang ditentukan, PVS akan disimpan dalam grup file PRIMER. Untuk contoh dan informasi selengkapnya, lihat Pemulihan database yang dipercepat.

<> auto_option ::=

Mengontrol opsi otomatis.

AUTO_CLOSE { ON | NONAKTIF }

  • AKTIF

    Database dimatikan dengan bersih dan sumber dayanya dibebaskan setelah pengguna terakhir keluar.

    Database secara otomatis dibuka kembali saat pengguna mencoba menggunakan database lagi. Misalnya, perilaku buka kembali ini terjadi saat pengguna mengeluarkan USE database_name pernyataan. Database dapat dimatikan dengan bersih dengan AUTO_CLOSE diatur ke AKTIF. Jika demikian, database tidak terbuka kembali sampai pengguna mencoba menggunakan database saat mesin Database dimulai ulang.

    Setelah database dimatikan, saat aplikasi mencoba menggunakan database, database harus dibuka terlebih dahulu, lalu status berubah menjadi online. Ini mungkin memakan waktu dan dapat mengakibatkan batas waktu aplikasi.

  • TIDAK AKTIF

    Database tetap terbuka setelah pengguna terakhir keluar.

    Opsi AUTO_CLOSE berguna untuk database desktop karena memungkinkan file database dikelola sebagai file reguler. Mereka dapat dipindahkan, disalin untuk membuat cadangan, atau bahkan dikirim melalui email ke pengguna lain. Proses AUTO_CLOSE asinkron; berulang kali membuka dan menutup database tidak mengurangi performa.

Catatan

Opsi AUTO_CLOSE tidak tersedia dalam database mandiri atau di SQL Database. Anda dapat menentukan status opsi ini dengan memeriksa is_auto_close_on kolom dalam tampilan katalog sys.databases atau IsAutoClose properti fungsi DATABASEPROPERTYEX .

Saat AUTO_CLOSE diatur ke AKTIF, beberapa kolom dalam tampilan katalog sys.databases dan fungsi DATABASEPROPERTYEX akan mengembalikan NULL karena database tidak tersedia untuk mengambil data. Untuk mengatasi masalah ini, jalankan pernyataan USE untuk membuka database.

Pencerminan database memerlukan AUTO_CLOSE diatur ke NONAKTIF.

Ketika database diatur ke AUTOCLOSE = ON, operasi yang memulai pematian database otomatis akan menghapus cache paket untuk instans SQL Server. Menghapus cache rencana menyebabkan kompilasi ulang semua rencana eksekusi berikutnya dan dapat menyebabkan penurunan performa kueri secara tiba-tiba dan sementara. Dimulai dengan Paket Layanan SQL Server 2005 (9.x) 2, untuk setiap penyimpanan cache yang dihapus dalam cache paket, log kesalahan SQL Server berisi pesan informasi berikut: 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. Pesan ini dicatat setiap lima menit selama cache dihapus dalam interval waktu tersebut.

Pengaturan AUTO_CLOSE dapat menjadi fitur yang berguna dalam beberapa situasi langka, misalnya, dalam instans SQL Server tanpa memori yang cukup untuk beroperasi dengan jumlah database yang besar, atau untuk instans SQL Server 32-bit warisan dengan sejumlah besar database. Dalam skenario seperti itu, mungkin berguna untuk mengaktifkan AUTO_CLOSE dan menghemat sumber daya memori yang diperlukan untuk menjaga database tetap terbuka ketika tidak ada aplikasi yang menggunakan database. Ketika database terbuka, beberapa alokasi memori default diperlukan (misalnya, struktur internal untuk mewakili berbagai objek metadata database dan buffer log transaksi).

AUTO_CREATE_STATISTICS { ON | NONAKTIF }

  • AKTIF

    Pengoptimal Kueri membuat statistik pada kolom tunggal dalam predikat kueri, seperlunya, untuk meningkatkan rencana kueri dan performa kueri. Statistik kolom tunggal ini dibuat saat Pengoptimal Kueri mengkompilasi kueri. Statistik kolom tunggal dibuat hanya pada kolom yang belum menjadi kolom pertama dari objek statistik yang ada.

    Pengaturan defaultnya adalah AKTIF. Kami menyarankan agar Anda menggunakan pengaturan default untuk sebagian besar database.

  • TIDAK AKTIF

    Pengoptimal Kueri tidak membuat statistik pada satu kolom dalam predikat kueri saat mengkompilasi kueri. Mengatur opsi ini ke NONAKTIF dapat menyebabkan rencana kueri suboptimal dan performa kueri yang terdegradasi.

Anda dapat menentukan status opsi ini dengan memeriksa is_auto_create_stats_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAutoCreateStatistics properti fungsi DATABASEPROPERTYEX .

Untuk informasi selengkapnya, lihat bagian "Menggunakan opsi statistik seluruh Database" dalam Statistik.

INKREMENTAL = AKTIF | OFF

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2014 (12.x)) dan Azure SQL Database

Atur AUTO_CREATE_STATISTICS ke AKTIF, dan atur INCREMENTAL ke AKTIF. Set ini secara otomatis membuat statistik sebagai bertahap setiap kali statistik inkremental didukung. Nilai defaultnya adalah NONAKTIF. Untuk informasi selengkapnya, lihat MEMBUAT STATISTIK.

AUTO_SHRINK { ON | NONAKTIF }

  • AKTIF

    File database adalah kandidat untuk penyusutan berkala. Kecuali Anda memiliki persyaratan tertentu, jangan atur opsi database AUTO_SHRINK ke AKTIF. Untuk informasi selengkapnya, lihat Menyusutkan database.

    File data dan file log dapat disusutkan secara otomatis. AUTO_SHRINK mengurangi ukuran log transaksi hanya jika Anda mengatur database ke model pemulihan SIMPLE atau jika Anda mencadangkan log. Saat Anda mengatur AUTO_SHRINK ke NONAKTIF, file database tidak secara otomatis menyusut selama pemeriksaan berkala untuk ruang yang tidak digunakan.

    Opsi AUTO_SHRINK menyusutkan file ketika lebih dari 25 persen file berisi ruang yang tidak digunakan. Ini menyusutkan file ke salah satu dari dua ukuran (mana yang lebih besar):

    • Ukuran di mana 25 persen dari file adalah ruang yang tidak digunakan
    • Ukuran file ketika dibuat

    Anda tidak dapat menyusutkan database baca-saja.

  • TIDAK AKTIF

    File database tidak disusutkan secara otomatis selama pemeriksaan berkala untuk ruang yang tidak digunakan.

Anda dapat menentukan status opsi ini dengan memeriksa is_auto_shrink_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAutoShrink properti fungsi DATABASEPROPERTYEX .

Catatan

Opsi AUTO_SHRINK tidak tersedia dalam Database Terkandung.

AUTO_UPDATE_STATISTICS { ON | NONAKTIF }

  • AKTIF

    Menentukan bahwa Pengoptimal Kueri memperbarui statistik saat digunakan oleh kueri dan kapan mungkin sudah kedaluarsa. Statistik menjadi kedaluarsa setelah operasi sisipkan, perbarui, hapus, atau gabungkan mengubah distribusi data dalam tabel atau tampilan terindeks. Pengoptimal Kueri menentukan kapan statistik mungkin kedaluarsa dengan menghitung jumlah modifikasi data sejak pembaruan statistik terakhir dan membandingkan jumlah modifikasi dengan ambang batas. Ambang didasarkan pada jumlah baris dalam tabel atau tampilan terindeks.

    Pengoptimal Kueri memeriksa statistik yang sudah kedaluwarsa sebelum mengkompilasi kueri dan menjalankan rencana kueri yang di-cache. Pengoptimal Kueri menggunakan kolom, tabel, dan tampilan terindeks dalam predikat kueri untuk menentukan statistik mana yang mungkin sudah kedaluarsa. Pengoptimal Kueri menentukan informasi ini sebelum mengkompilasi kueri. Sebelum menjalankan rencana kueri yang di-cache, Mesin Database memverifikasi bahwa rencana kueri mereferensikan statistik terbaru.

    Opsi AUTO_UPDATE_STATISTICS berlaku untuk statistik yang dibuat untuk indeks, kolom tunggal dalam predikat kueri, dan statistik yang dibuat dengan menggunakan pernyataan CREATE STATISTICS. Opsi ini juga berlaku untuk statistik yang difilter.

    Defaultnya adalah ON. Kami menyarankan agar Anda menggunakan pengaturan default untuk sebagian besar database.

    Gunakan opsi AUTO_UPDATE_STATISTICS_ASYNC untuk menentukan apakah statistik diperbarui secara sinkron atau asinkron.

  • TIDAK AKTIF

    Menentukan bahwa Pengoptimal Kueri tidak memperbarui statistik saat digunakan oleh kueri. Pengoptimal Kueri juga tidak memperbarui statistik saat mungkin sudah kedaluarsa. Mengatur opsi ini ke NONAKTIF dapat menyebabkan rencana kueri suboptimal dan performa kueri yang terdegradasi.

Anda dapat menentukan status opsi ini dengan memeriksa is_auto_update_stats_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAutoUpdateStatistics properti fungsi DATABASEPROPERTYEX .

Untuk informasi selengkapnya, lihat bagian "Menggunakan opsi statistik seluruh Database" dalam Statistik.

AUTO_UPDATE_STATISTICS_ASYNC { ON | NONAKTIF }

  • AKTIF

    Menentukan bahwa pembaruan statistik untuk opsi AUTO_UPDATE_STATISTICS tidak sinkron. Pengoptimal Kueri tidak menunggu pembaruan statistik selesai sebelum mengkompilasi kueri.

    Mengatur opsi ini ke AKTIF tidak berpengaruh kecuali AUTO_UPDATE_STATISTICS diatur ke AKTIF.

    Secara default, opsi AUTO_UPDATE_STATISTICS_ASYNC NONAKTIF, dan Pengoptimal Kueri memperbarui statistik secara sinkron.

  • TIDAK AKTIF

    Menentukan bahwa pembaruan statistik untuk opsi AUTO_UPDATE_STATISTICS sinkron. Pengoptimal Kueri menunggu pembaruan statistik selesai sebelum mengkompilasi kueri.

    Catatan

    Mengatur opsi ini ke NONAKTIF tidak berpengaruh kecuali AUTO_UPDATE_STATISTICS diatur ke AKTIF.

Anda dapat menentukan status opsi ini dengan memeriksa is_auto_update_stats_async_on kolom dalam tampilan katalog sys.databases .

Untuk informasi selengkapnya yang menjelaskan kapan harus menggunakan pembaruan statistik sinkron atau asinkron, lihat bagian "Opsi statistik" di Statistik.

<> automatic_tuning_option ::=

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2017 (14.x))

Mengaktifkan atau menonaktifkan FORCE_LAST_GOOD_PLAN opsi Penyetelan otomatis. Anda dapat melihat status opsi ini dalam tampilan sys.database_automatic_tuning_options.

FORCE_LAST_GOOD_PLAN = { DEFAULT | AKTIF | NONAKTIF }

  • DEFAULT

    Nilai default untuk SQL Server NONAKTIF.

  • AKTIF

    Mesin Database secara otomatis memaksa rencana baik terakhir yang diketahui pada kueri Transact-SQL di mana rencana kueri baru menyebabkan regresi performa. Mesin Database terus memantau performa kueri kueri Transact-SQL dengan paket paksa.

    Jika terdapat peningkatan performa, Mesin Database akan terus menggunakan rencana optimal terakhir yang diketahui. Jika tidak terdapat peningkatan performa, Mesin Database akan menghasilkan rencana kueri baru. Pernyataan akan gagal jika Penyimpanan Kueri tidak diaktifkan atau jika Penyimpanan Kueri tidak dalam mode Baca-Tulis .

  • TIDAK AKTIF

    Mesin Database melaporkan potensi regresi performa kueri yang disebabkan oleh perubahan rencana kueri dalam tampilan sys.dm_db_tuning_recommendations . Namun, rekomendasi ini tidak diterapkan secara otomatis. Pengguna dapat memantau rekomendasi aktif dan memperbaiki masalah yang diidentifikasi dengan menerapkan skrip Transact-SQL yang ditampilkan dalam tampilan. Nilai defaultnya adalah NONAKTIF.

<> change_tracking_option ::=

Berlaku untuk: SQL Server dan Azure SQL Database

Mengontrol opsi pelacakan perubahan. Anda dapat mengaktifkan pelacakan perubahan, mengatur opsi, mengubah opsi, dan menonaktifkan pelacakan perubahan. Misalnya, lihat bagian Contoh nanti di artikel ini.

  • AKTIF

    Mengaktifkan pelacakan perubahan untuk database. Saat mengaktifkan pelacakan perubahan, Anda juga dapat mengatur opsi PEMBERSIHAN OTOMATIS dan UBAH RETENSI.

  • AUTO_CLEANUP = { AKTIF | NONAKTIF }

    • AKTIF

      Informasi pelacakan perubahan dihapus secara otomatis setelah periode retensi yang ditentukan.

    • TIDAK AKTIF

      Data pelacakan perubahan tidak dihapus secara otomatis dari database.

  • CHANGE_RETENTION = retention_period { DAYS | JAM | MENIT }

    Menentukan periode minimum untuk menyimpan informasi pelacakan perubahan dalam database. Data dihapus hanya ketika nilai AUTO_CLEANUP AKTIF.

    retention_period adalah bilangan bulat yang menentukan komponen numerik dari periode retensi.

    Periode retensi default adalah 2 hari. Periode retensi minimum adalah 1 menit. Jenis retensi default adalah DAYS.

  • NONAKTIF Menonaktifkan pelacakan perubahan untuk database. Nonaktifkan pelacakan perubahan pada semua tabel sebelum Anda menonaktifkan pelacakan perubahan dari database.

<> containment_option ::=

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))

Mengontrol opsi penampungan database.

CONTAINMENT = { NONE | PARSIAL}

  • NONE

    Database bukan database yang terkandung.

  • SEBAGIAN

    Database adalah database mandiri. Mengatur penahanan database ke parsial akan gagal jika database memiliki replikasi, mengubah penangkapan data, atau mengaktifkan pelacakan perubahan. Pemeriksaan kesalahan berhenti setelah satu kegagalan. Untuk informasi selengkapnya tentang database yang terkandung, lihat Database Terkandung.

<> cursor_option ::=

Mengontrol opsi kursor.

CURSOR_CLOSE_ON_COMMIT { ON | NONAKTIF }

  • AKTIF

    Setiap kursor terbuka saat Anda menerapkan atau mengembalikan transaksi ditutup.

  • TIDAK AKTIF

    Kursor tetap terbuka ketika transaksi dilakukan; mengembalikan transaksi menutup kursor apa pun kecuali yang didefinisikan sebagai INSENSITIVE atau STATIC.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk CURSOR_CLOSE_ON_COMMIT. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi CURSOR_CLOSE_ON_COMMIT ke NONAKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR CURSOR_CLOSE_ON_COMMIT.

Anda dapat menentukan status opsi ini dengan memeriksa is_cursor_close_on_commit_on kolom dalam tampilan katalog sys.databases atau IsCloseCursorsOnCommitEnabled properti fungsi DATABASEPROPERTYEX .

CURSOR_DEFAULT { LOCAL | GLOBAL }

Berlaku untuk: SQL Server

Mengontrol apakah cakupan kursor menggunakan LOKAL atau GLOBAL.

  • LOKAL

    Saat Anda menentukan LOCAL dan tidak menentukan kursor sebagai GLOBAL saat Anda membuat kursor, cakupan kursor bersifat lokal. Secara khusus, cakupan bersifat lokal untuk batch, prosedur tersimpan, atau pemicu tempat Anda membuat kursor. Nama kursor hanya valid dalam lingkup ini.

    Kursor dapat dirujuk oleh variabel kursor lokal dalam batch, prosedur tersimpan, atau pemicu, atau parameter OUTPUT prosedur tersimpan. Kursor secara implisit dibatalkan alokasinya ketika batch, prosedur tersimpan, atau pemicu berakhir. Kursor dibatalkan alokasinya kecuali diteruskan kembali dalam parameter OUTPUT. Kursor mungkin diteruskan kembali dalam parameter OUTPUT. Jika kursor melewati kembali dengan cara ini, kursor dibatalkan alokasinya ketika variabel terakhir yang mereferensikan kursor dibatalkan alokasinya atau keluar dari cakupan.

  • GLOBAL

    Ketika GLOBAL ditentukan, dan kursor tidak didefinisikan sebagai LOKAL saat dibuat, cakupan kursor bersifat global ke koneksi. Nama kursor dapat dirujuk dalam prosedur tersimpan atau batch apa pun yang dijalankan oleh koneksi.

    Kursor secara implisit dibatalkan alokasinya hanya pada pemutusan sambungan. Untuk informasi selengkapnya, lihat MENDEKLARASIKAN KURSOR.

Anda dapat menentukan status opsi ini dengan memeriksa is_local_cursor_default kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsLocalCursorsDefault properti fungsi DATABASEPROPERTYEX .

<> temporal_history_retention ::=

TEMPORAL_HISTORY_RETENTION { ON | NONAKTIF }

AKTIF secara default tetapi juga secara otomatis diatur ke NONAKTIF setelah operasi pemulihan titik waktu. Untuk informasi selengkapnya termasuk cara mengaktifkan pengaturan ini, lihat Cara mengonfigurasi kebijakan penyimpanan.

  • AKTIF

    Default. Mengaktifkan kebijakan penyimpanan tabel temporal. Untuk informasi selengkapnya, lihat Mengelola retensi data historis dalam tabel temporal versi sistem.

  • TIDAK AKTIF

    Jangan melakukan kebijakan penyimpanan historis temporal.

<> data_retention_policy ::=

Berlaku untuk: Azure SQL Edge Saja

DATA_RETENTION { ON | NONAKTIF }

  • AKTIF

    Mengaktifkan pembersihan berbasis kebijakan Penyimpanan Data pada database.

  • TIDAK AKTIF

    Menonaktifkan pembersihan berbasis kebijakan Penyimpanan Data pada database.

<database_mirroring>

Berlaku untuk: SQL Server

Untuk deskripsi argumen, lihat MENGUBAH Pencerminan Database DATABASE.

<> date_correlation_optimization_option ::=

Berlaku untuk: SQL Server

Mengontrol opsi date_correlation_optimization.

DATE_CORRELATION_OPTIMIZATION { ON | NONAKTIF }

  • AKTIF

    SQL Server mempertahankan statistik korelasi di mana batasan KUNCI ASING menautkan dua tabel dalam database dan tabel memiliki kolom tanggalwaktu .

  • TIDAK AKTIF

    Statistik korelasi tidak dipertahankan.

Untuk mengatur DATE_CORRELATION_OPTIMIZATION ke AKTIF, tidak boleh ada koneksi aktif ke database kecuali untuk koneksi yang menjalankan pernyataan ALTER DATABASE. Setelah itu, beberapa koneksi didukung.

Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa is_date_correlation_on kolom dalam tampilan katalog sys.databases .

<> db_encryption_option ::=

Mengontrol status enkripsi database.

ENKRIPSI { AKTIF | NONAKTIF | TANGGUHKAN | LANJUTKAN }

  • AKTIF

    Mengatur database yang akan dienkripsi.

  • TIDAK AKTIF

    Mengatur database agar tidak dienkripsi.

  • MENANGGUHKAN

    Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2019 (15.x))

    Dapat digunakan untuk menjeda pemindaian enkripsi setelah enkripsi data transparan diaktifkan atau dinonaktifkan, atau setelah kunci enkripsi diubah.

  • MELANJUTKAN

    Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2019 (15.x))

    Dapat digunakan untuk melanjutkan pemindaian enkripsi yang dijeda sebelumnya.

Untuk informasi selengkapnya tentang enkripsi database, lihat Enkripsi Data Transparan, dan Enkripsi Data Transparan dengan Azure SQL Database.

Ketika enkripsi diaktifkan di tingkat database, semua grup file akan dienkripsi. Setiap grup file baru akan mewarisi properti terenkripsi. Jika ada grup file dalam database yang diatur ke BACA SAJA, operasi enkripsi database akan gagal.

Anda dapat melihat status enkripsi database dan status pemindaian enkripsi dengan menggunakan tampilan manajemen dinamis sys.dm_database_encryption_keys .

<> db_state_option ::=

Berlaku untuk: SQL Server

Mengontrol status database.

  • LURING

    Database ditutup, dimatikan dengan bersih, dan ditandai offline. Database tidak dapat dimodifikasi saat sedang offline.

  • DARING

    Database terbuka dan tersedia untuk digunakan.

  • DARURAT

    Database ditandai READ_ONLY, pengelogan dinonaktifkan, dan akses terbatas pada anggota peran server tetap sysadmin. EMERGENCY terutama digunakan untuk tujuan pemecahan masalah. Misalnya, database yang ditandai sebagai tersangka karena file log yang rusak dapat diatur ke status DARURAT. Pengaturan ini dapat mengaktifkan akses baca-saja administrator sistem ke database. Hanya anggota peran server tetap sysadmin yang dapat mengatur database ke status DARURAT.

ALTER DATABASE Memerlukan izin untuk database subjek, untuk mengubah database ke status offline atau darurat, dan izin tingkat ALTER ANY DATABASE server untuk memindahkan database dari offline ke online.

Anda dapat menentukan status opsi ini dengan memeriksa state kolom dan state_desc dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa Status properti fungsi DATABASEPROPERTYEX . Untuk informasi selengkapnya, lihat Status Database.

Database yang ditandai sebagai PEMULIHAN tidak dapat diatur ke OFFLINE, ONLINE, atau DARURAT. Database mungkin dalam status PEMULIHAN selama operasi pemulihan aktif atau ketika operasi pemulihan database atau file log gagal karena file cadangan yang rusak.

<> db_update_option ::=

Mengontrol apakah pembaruan diizinkan pada database.

  • READ_ONLY

    Pengguna dapat membaca data dari database tetapi tidak mengubahnya.

    Catatan

    Untuk meningkatkan performa kueri, perbarui statistik sebelum mengatur database ke READ_ONLY. Jika statistik tambahan diperlukan setelah database diatur ke READ_ONLY, Mesin Database akan membuat statistik dalam tempdb database sistem. Untuk informasi selengkapnya tentang statistik untuk database baca-saja, lihat Statistik.

  • BACA_TULIS

    Database tersedia untuk operasi baca dan tulis.

Untuk mengubah status ini, Anda harus memiliki akses eksklusif ke database. Untuk informasi selengkapnya, lihat klausa SINGLE_USER.

Catatan

Pada database federasi Azure SQL Database, SET { READ_ONLY | READ_WRITE } dinonaktifkan.

<> db_user_access_option ::=

Mengontrol akses pengguna ke database.

SINGLE_USER

Berlaku untuk: SQL Server

Menentukan bahwa hanya satu pengguna pada satu waktu yang dapat mengakses database. Jika Anda menentukan SINGLE_USER dan pengguna lain tersambung ke database, pernyataan ALTER DATABASE diblokir hingga semua pengguna terputus dari database yang ditentukan. Untuk mengambil alih perilaku ini, lihat klausul penghentian> WITH<.

Database tetap dalam mode SINGLE_USER meskipun pengguna yang mengatur opsi keluar. Pada saat itu, pengguna yang berbeda, tetapi hanya satu, yang dapat tersambung ke database.

Sebelum Anda mengatur database ke SINGLE_USER, verifikasi opsi AUTO_UPDATE_STATISTICS_ASYNC diatur ke NONAKTIF. Saat diatur ke AKTIF, utas latar belakang yang digunakan untuk memperbarui statistik mengambil koneksi terhadap database, dan Anda tidak akan dapat mengakses database dalam mode pengguna tunggal. Untuk menampilkan status opsi ini, kueri is_auto_update_stats_async_on kolom dalam tampilan katalog sys.databases . Jika opsi diatur ke AKTIF, lakukan tugas berikut:

  1. Atur AUTO_UPDATE_STATISTICS_ASYNC ke NONAKTIF.

  2. Periksa pekerjaan statistik asinkron aktif dengan mengkueri tampilan manajemen dinamis sys.dm_exec_background_job_queue .

Jika ada pekerjaan aktif, izinkan pekerjaan untuk menyelesaikan atau mengakhirinya secara manual dengan menggunakan KILL STATS JOB.

RESTRICTED_USER

Hanya memungkinkan anggota db_owner peran database tetap dan dbcreator peran sysadmin server tetap untuk menyambungkan ke database. RESTRICTED_USER tidak membatasi jumlahnya. Putuskan sambungan semua koneksi ke database menggunakan jangka waktu yang ditentukan oleh klausa penghentian pernyataan ALTER DATABASE. Setelah database beralih ke status RESTRICTED_USER, upaya koneksi oleh pengguna yang tidak memenuhi syarat ditolak.

MULTI_USER

Semua pengguna yang memiliki izin yang sesuai untuk menyambungkan ke database diizinkan. Anda dapat menentukan status opsi ini dengan memeriksa user_access kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa UserAccess properti fungsi DATABASEPROPERTYEX .

<> delayed_durability_option ::=

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2014 (12.x))

Mengontrol apakah transaksi berkomitmen sepenuhnya tahan lama atau tertunda tahan lama.

  • DINONAKTIFKAN

    Semua transaksi berikut SET DISABLED sepenuhnya tahan lama. Setiap opsi durabilitas yang diatur dalam blok atom atau pernyataan penerapan diabaikan.

  • DIPERBOLEHKAN

    Semua transaksi berikut SET ALLOWED sepenuhnya tahan lama atau tertunda tahan lama, tergantung pada opsi durabilitas yang ditetapkan dalam blok atom atau pernyataan penerapan.

  • DIPAKSA

    Semua transaksi berikut SET FORCED tertunda tahan lama. Setiap opsi durabilitas yang diatur dalam blok atom atau pernyataan penerapan diabaikan.

<> external_access_option ::=

Berlaku untuk: SQL Server

Mengontrol apakah database dapat diakses oleh sumber daya eksternal, seperti objek dari database lain.

DB_CHAINING { ON | NONAKTIF }

  • AKTIF

    Database dapat menjadi sumber atau target rantai kepemilikan lintas database.

  • TIDAK AKTIF

    Database tidak dapat berpartisipasi dalam rantai kepemilikan lintas database.

Penting

Instans SQL Server akan mengenali pengaturan ini ketika opsi server rantai kepemilikan silang db adalah 0 (NONAKTIF). Ketika rantai kepemilikan lintas db adalah 1 (AKTIF), semua database pengguna dapat berpartisipasi dalam rantai kepemilikan lintas database, terlepas dari nilai opsi ini. Opsi ini diatur dengan menggunakan sp_configure.

Untuk mengatur opsi ini, memerlukan CONTROL SERVER izin pada database.

Opsi DB_CHAINING tidak dapat diatur pada masterdatabase sistem , model, dan tempdb .

Anda dapat menentukan status opsi ini dengan memeriksa is_db_chaining_on kolom dalam tampilan katalog sys.databases .

DAPAT DIPERCAYA { AKTIF | NONAKTIF }

  • AKTIF

    Modul database (misalnya, fungsi yang ditentukan pengguna atau prosedur tersimpan) yang menggunakan konteks peniruan dapat mengakses sumber daya di luar database.

  • TIDAK AKTIF

    Modul database dalam konteks peniruan tidak dapat mengakses sumber daya di luar database.

    TRUSTWORTHY diatur ke NONAKTIF setiap kali database dilampirkan.

Secara default, semua database sistem kecuali msdb database memiliki TRUSTWORTHY yang diatur ke NONAKTIF. Nilai tidak dapat diubah untuk model database dan tempdb . Kami menyarankan agar Anda tidak pernah mengatur opsi TRUSTWORTHY ke AKTIF untuk master database.

Untuk mengatur opsi ini, memerlukan CONTROL SERVER izin pada database.

Anda dapat menentukan status opsi ini dengan memeriksa is_trustworthy_on kolom dalam tampilan katalog sys.databases .

DEFAULT_FULLTEXT_LANGUAGE

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))

Menentukan nilai bahasa default untuk kolom terindeks teks lengkap.

Penting

Opsi ini hanya diperbolehkan ketika CONTAINMENT telah diatur ke PARSIAL. Jika CONTAINMENT diatur ke NONE, kesalahan akan terjadi.

DEFAULT_LANGUAGE

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))

Menentukan bahasa default untuk semua login yang baru dibuat. Bahasa dapat ditentukan dengan memberikan ID lokal (lcid), nama bahasa, atau alias bahasa. Untuk daftar nama bahasa dan alias yang dapat diterima, lihat sys.syslanguages. Opsi ini hanya diperbolehkan ketika CONTAINMENT telah diatur ke PARSIAL. Jika CONTAINMENT diatur ke NONE, kesalahan akan terjadi.

NESTED_TRIGGERS

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))

Menentukan apakah pemicu AFTER dapat berskala; yaitu, melakukan tindakan yang memulai pemicu lain, yang memulai pemicu lain, dan sebagainya. Opsi ini hanya diperbolehkan ketika CONTAINMENT telah diatur ke PARSIAL. Jika CONTAINMENT diatur ke NONE, kesalahan akan terjadi.

TRANSFORM_NOISE_WORDS

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))

Digunakan untuk menekan pesan kesalahan jika kata kebisingan, atau stopword, menyebabkan operasi Boolean pada kueri teks lengkap gagal. Opsi ini hanya diperbolehkan ketika CONTAINMENT telah diatur ke PARSIAL. Jika CONTAINMENT diatur ke NONE, kesalahan akan terjadi.

TWO_DIGIT_YEAR_CUTOFF

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))

Menentukan bilangan bulat dari 1753 hingga 9999 yang mewakili tahun cutoff untuk menafsirkan tahun dua digit sebagai tahun empat digit. Opsi ini hanya diperbolehkan ketika CONTAINMENT telah diatur ke PARSIAL. Jika CONTAINMENT diatur ke NONE, kesalahan akan terjadi.

<> FILESTREAM_option ::=

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))

Mengontrol pengaturan untuk FileTables.

NON_TRANSACTED_ACCESS = { NONAKTIF | READ_ONLY | PENUH }

  • TIDAK AKTIF

    Akses non-transaksional ke data FileTable dinonaktifkan.

  • READ_ONLY

    Data FILESTREAM dalam FileTables dalam database ini dapat dibaca oleh proses non-transaksi.

  • FULL

    Mengaktifkan akses penuh non-transaksi ke data FILESTREAM di FileTables diaktifkan.

DIRECTORY_NAME = <directory_name>

Nama direktori yang kompatibel dengan Windows. Nama ini harus unik di antara semua nama direktori tingkat database dalam instans SQL Server. Perbandingan keunikan tidak peka huruf besar/kecil, terlepas dari pengaturan kolase. Opsi ini harus diatur sebelum membuat FileTable dalam database ini.

<> HADR_options ::=

Berlaku untuk: SQL Server

Lihat MENGUBAH HADR KUMPULAN DATABASE.

<> mixed_page_allocation_option ::=

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2016 (13.x))

Mengontrol apakah database dapat membuat halaman awal menggunakan tingkat campuran untuk delapan halaman pertama tabel atau indeks.

MIXED_PAGE_ALLOCATION { NONAKTIF | ON }

  • TIDAK AKTIF

    Database selalu membuat halaman awal menggunakan tingkat seragam. OFF adalah nilai default.

  • AKTIF

    Database dapat membuat halaman awal menggunakan tingkat campuran.

Pengaturan ini AKTIF untuk semua database sistem. Database tempdb sistem adalah satu-satunya database sistem yang mendukung NONAKTIF.

<> PARAMETERIZATION_option ::=

Mengontrol opsi parameterisasi. Untuk informasi selengkapnya tentang parameterisasi, lihat Panduan Arsitektur Pemrosesan Kueri.

PARAMETERISASI { SEDERHANA | FORCED }

  • SEDERHANA

    Kueri diparameterkan berdasarkan perilaku default database.

  • DIPAKSA

    SQL Server membuat parameter semua kueri dalam database.

Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa is_parameterization_forced kolom dalam tampilan katalog sys.databases .

<> query_store_options ::=

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2016 (13.x))

AKTIF | OFF [ ( PAKSA ) ] | JELAS [ SEMUA ]

Mengontrol apakah Penyimpanan Kueri diaktifkan dalam database ini, dan juga mengontrol penghapusan konten Penyimpanan Kueri. Untuk informasi selengkapnya, lihat Skenario Penggunaan Penyimpanan Kueri.

  • AKTIF

    Mengaktifkan Penyimpanan Kueri.

    Banyak fitur performa baru SQL Server 2022 (16.x) seperti petunjuk Penyimpanan Kueri, Umpan Balik CE, umpan balik Tingkat Paralelisme (DOP), dan persistensi Umpan balik Pemberian Memori (MGF) yang diperlukan Penyimpanan Kueri untuk diaktifkan. Untuk database yang telah dipulihkan dari instans SQL Server lainnya dan untuk database yang ditingkatkan dari peningkatan di tempat ke SQL Server 2022 (16.x), database ini akan mempertahankan pengaturan Penyimpanan Kueri sebelumnya. Jika ada kekhawatiran tentang Overhead Query Store dapat diperkenalkan, administrator dapat memanfaatkan kebijakan penangkapan kustom dengan QUERY_CAPTURE_MODE = CUSTOM. Untuk contoh cara mengaktifkan Penyimpanan Kueri dengan opsi kebijakan penangkapan kustom, lihat bagian Contoh nanti di artikel ini.

  • OFF [ ( PAKSA ) ]

    Menonaktifkan Penyimpanan Kueri. FORCED bersifat opsional. FORCED membatalkan semua tugas latar belakang Penyimpanan Kueri yang berjalan, dan melewati flush sinkron saat Penyimpanan Kueri dinonaktifkan. Menyebabkan Penyimpanan Kueri dimatikan secepat mungkin. FORCED berlaku untuk SQL Server 2016 (13.x) SP2 CU14, SQL Server 2017 (14.x) CU21, SQL Server 2019 (15.x) CU6, dan build yang lebih baru.

    Catatan

    Penyimpanan Kueri tidak dapat dinonaktifkan di database tunggal Azure SQL Database dan Kumpulan Elastis. ALTER DATABASE [database] SET QUERY_STORE = OFF Menjalankan akan mengembalikan peringatan 'QUERY_STORE=OFF' is not supported in this version of SQL Server..

  • JELAS [ SEMUA ]

    Menghapus data terkait kueri dari Penyimpanan Kueri. ALL bersifat opsional. SEMUA menghapus data dan metadata terkait kueri dari Penyimpanan Kueri.

OPERATION_MODE { READ_ONLY | READ_WRITE }

Menjelaskan mode operasi Penyimpanan Kueri.

BACA_TULIS

Penyimpanan Kueri mengumpulkan dan mempertahankan rencana kueri dan informasi statistik eksekusi runtime.

READ_ONLY

Informasi dapat dibaca dari Penyimpanan Kueri, tetapi informasi baru tidak ditambahkan. Jika ruang maksimum yang dikeluarkan dari Penyimpanan Kueri telah habis, Penyimpanan Kueri akan berubah adalah mode operasi menjadi READ_ONLY.

CLEANUP_POLICY

Menjelaskan kebijakan penyimpanan data Penyimpanan Kueri. STALE_QUERY_THRESHOLD_DAYS menentukan jumlah hari di mana informasi untuk kueri disimpan di Penyimpanan Kueri. STALE_QUERY_THRESHOLD_DAYS jenis besar. Nilai default adalah 30.

DATA_FLUSH_INTERVAL_SECONDS

Menentukan frekuensi di mana data yang ditulis ke Penyimpanan Kueri dipertahankan ke disk. Untuk mengoptimalkan performa, data yang dikumpulkan oleh Penyimpanan Kueri ditulis secara asinkron ke disk. Frekuensi di mana transfer asinkron ini terjadi dikonfigurasi dengan menggunakan argumen DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS jenis besar. Nilai defaultnya adalah 900 (15 menit).

MAX_STORAGE_SIZE_MB

Menentukan ruang yang dikeluarkan untuk Penyimpanan Kueri. MAX_STORAGE_SIZE_MB adalah jenis bigint. Nilai defaultnya adalah 100 MB untuk SQL Server (SQL Server 2016 (13.x) melalui SQL Server 2017 (14.x)). Dimulai dengan SQL Server 2019 (15.x), nilai defaultnya adalah 1000 MB.

MAX_STORAGE_SIZE_MB batas tidak diberlakukan secara ketat. Ukuran penyimpanan dicentang hanya saat Penyimpanan Kueri menulis data ke disk. Interval ini diatur oleh DATA_FLUSH_INTERVAL_SECONDS opsi atau opsi dialog Penyimpanan Kueri Studio Manajemen Interval Flush Data. Nilai default interval adalah 900 detik (atau 15 menit).

Jika Penyimpanan Kueri telah melanggar MAX_STORAGE_SIZE_MB batas antara pemeriksaan ukuran penyimpanan, penyimpanan akan beralih ke mode baca-saja. Jika SIZE_BASED_CLEANUP_MODE diaktifkan, mekanisme pembersihan untuk memberlakukan MAX_STORAGE_SIZE_MB batas juga dipicu.

Setelah cukup ruang dibersihkan, mode Penyimpanan Kueri akan secara otomatis beralih kembali ke baca-tulis.

Penting

Jika Anda berpikir bahwa pengambilan beban kerja Anda akan membutuhkan lebih dari 10 GB ruang disk, Anda mungkin harus memikirkan kembali dan mengoptimalkan beban kerja Anda untuk menggunakan kembali rencana kueri (misalnya menggunakan parameterisasi paksa, atau menyesuaikan konfigurasi Penyimpanan Kueri. Dimulai dengan SQL Server 2019 (15.x) dan di Azure SQL Database, Anda dapat mengatur QUERY_CAPTURE_MODE ke KUSTOM untuk kontrol tambahan atas kebijakan pengambilan kueri.

INTERVAL_LENGTH_MINUTES

Menentukan interval waktu di mana data statistik eksekusi runtime dikumpulkan ke dalam Penyimpanan Kueri. Untuk mengoptimalkan penggunaan ruang, statistik eksekusi runtime di penyimpanan statistik runtime dikumpulkan selama jendela waktu tetap. Jendela waktu tetap ini dikonfigurasi dengan menggunakan argumen INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES jenis besar. Nilai defaultnya adalah 60.

SIZE_BASED_CLEANUP_MODE { AUTO | NONAKTIF }

Mengontrol apakah pembersihan diaktifkan secara otomatis ketika jumlah total data mendekati ukuran maksimum.

  • AUTO

    Pembersihan berbasis ukuran akan diaktifkan secara otomatis ketika ukuran pada disk mencapai 90% dari MAX_STORAGE_SIZE_MB. Pembersihan berbasis ukuran menghapus kueri yang paling murah dan terlama terlebih dahulu. Ini berhenti pada sekitar 80% dari MAX_STORAGE_SIZE_MB. Nilai ini adalah nilai konfigurasi default.

  • TIDAK AKTIF

    Pembersihan berbasis ukuran tidak akan diaktifkan secara otomatis.

SIZE_BASED_CLEANUP_MODE adalah jenis nvarchar.

QUERY_CAPTURE_MODE { ALL | AUTO | KUSTOM | TIDAK ADA }

Menunjuk mode pengambilan kueri yang saat ini aktif. Setiap mode menentukan kebijakan pengambilan kueri tertentu. QUERY_CAPTURE_MODE adalah jenis nvarchar.

Catatan

Kursor, kueri di dalam Prosedur Tersimpan, dan Kueri yang dikompilasi secara asli selalu diambil saat mode pengambilan kueri diatur ke SEMUA, OTOMATIS, atau KUSTOM.

  • SEMUA

    Mengambil semua kueri. ALL adalah nilai konfigurasi default untuk SQL Server (SQL Server 2016 (13.x) melalui SQL Server 2017 (14.x)).

  • AUTO

    Tangkap kueri yang relevan berdasarkan jumlah eksekusi dan konsumsi sumber daya. Ini adalah nilai konfigurasi default untuk SQL Server (Dimulai dengan SQL Server 2019 (15.x)) dan Azure SQL Database.

  • NONE

    Berhenti mengambil kueri baru. Penyimpanan Kueri akan terus mengumpulkan statistik kompilasi dan runtime untuk kueri yang sudah diambil. Gunakan konfigurasi ini dengan hati-hati karena Anda mungkin kehilangan pengambilan kueri penting.

  • KUSTOM

    Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2019 (15.x))

    Memungkinkan kontrol atas opsi QUERY_CAPTURE_POLICY. Kebijakan penangkapan kustom dapat membantu Penyimpanan Kueri mengambil kueri terpenting dalam beban kerja Anda. <Lihat query_capture_policy_option_list> untuk opsi yang dapat disesuaikan.

MAX_PLANS_PER_QUERY

Menentukan jumlah maksimum paket yang dipertahankan untuk setiap kueri. MAX_PLANS_PER_QUERY adalah tipe int. Nilai defaultnya adalah 200.

WAIT_STATS_CAPTURE_MODE { ON | NONAKTIF }

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2017 (14.x)))

Mengontrol apakah statistik tunggu akan diambil per kueri.

  • AKTIF

    Informasi statistik tunggu per kueri diambil. Nilai ini adalah nilai konfigurasi default.

  • TIDAK AKTIF

    Informasi statistik tunggu per kueri tidak akan diambil.

<> query_capture_policy_option_list :: =

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2019 (15.x))

Mengontrol opsi kebijakan penangkapan Penyimpanan Kueri. Kecuali untuk STALE_CAPTURE_POLICY_THRESHOLD, opsi ini menentukan kondisi OR yang perlu terjadi agar kueri diambil dalam nilai Ambang Kebijakan Pengambilan Kedaluarsa yang ditentukan.

Dimulai dengan SQL Server 2019 (15.x), QUERY_CAPTURE_MODE = AUTO pengaturan mengambil detail Penyimpanan Kueri saat salah satu ambang batas berikut terpaut:

  • EXECUTION_COUNT = 30 eksekusi = jumlah eksekusi
  • TOTAL_COMPILE_CPU_TIME_MS = 1 detik = waktu kompilasi dalam milidetik
  • TOTAL_EXECUTION_CPU_TIME_MS = 100 md = waktu CPU eksekusi dalam milidetik

Contohnya:

EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100

Anda dapat menyesuaikan opsi ini dengan QUERY_CAPTURE_MODE = CUSTOM:

  • STALE_CAPTURE_POLICY_THRESHOLD = bilangan bulat { DAYS | JAM }

    Menentukan periode interval evaluasi untuk menentukan apakah kueri harus diambil. Defaultnya adalah 1 hari, dan dapat diatur dari 1 jam hingga tujuh hari.

  • EXECUTION_COUNT = bilangan bulat

    Menentukan berapa kali kueri dijalankan selama periode evaluasi. Defaultnya adalah 30, yang berarti bahwa untuk Ambang Kebijakan Pengambilan Kedaluarsa default, kueri harus dijalankan setidaknya 30 kali dalam satu hari untuk dipertahankan di Penyimpanan Kueri. EXECUTION_COUNT adalah jenis int.

  • TOTAL_COMPILE_CPU_TIME_MS = bilangan bulat

    Menentukan total waktu CPU kompilasi yang berlalu yang digunakan oleh kueri selama periode evaluasi. Defaultnya adalah 1000, yang berarti bahwa untuk Ambang Kebijakan Pengambilan Kedaluarsa default, kueri harus memiliki total setidaknya satu detik waktu CPU yang dihabiskan selama kompilasi kueri dalam satu hari untuk dipertahankan di Penyimpanan Kueri. TOTAL_COMPILE_CPU_TIME_MS adalah tipe int.

  • TOTAL_EXECUTION_CPU_TIME_MS = bilangan bulat

    Menentukan total waktu CPU eksekusi yang berlalu yang digunakan oleh kueri selama periode evaluasi. Defaultnya adalah 100 yang berarti bahwa untuk Ambang Kebijakan Pengambilan Kedaluarsa default, kueri harus memiliki total setidaknya 100 md waktu CPU yang dihabiskan selama eksekusi dalam satu hari untuk dipertahankan di Penyimpanan Kueri. TOTAL_EXECUTION_CPU_TIME_MS adalah jenis int.

<> recovery_option ::=

Berlaku untuk: SQL Server

Mengontrol opsi pemulihan database dan pemeriksaan kesalahan I/O disk.

  • FULL

    Menyediakan pemulihan penuh setelah kegagalan media dengan menggunakan pencadangan log transaksi. Jika file data rusak, pemulihan media dapat memulihkan semua transaksi yang dilakukan. Untuk informasi selengkapnya, lihat Model Pemulihan.

  • BULK_LOGGED

    Menyediakan pemulihan setelah kegagalan media. Menggabungkan performa terbaik dan jumlah penggunaan ruang log paling sedikit untuk operasi skala besar atau massal tertentu. Untuk informasi tentang operasi apa yang dapat dicatat secara minimal, lihat Log Transaksi. Di bawah model pemulihan BULK_LOGGED, pengelogan untuk operasi ini minimal. Untuk informasi selengkapnya, lihat Model Pemulihan.

  • SEDERHANA

    Strategi pencadangan sederhana yang menggunakan ruang log minimal disediakan. Ruang log dapat digunakan kembali secara otomatis saat tidak lagi diperlukan untuk pemulihan kegagalan server. Untuk informasi selengkapnya, lihat Model Pemulihan.

    Penting

    Model pemulihan sederhana lebih mudah dikelola daripada dua model lainnya tetapi dengan mengorbankan paparan kehilangan data yang lebih besar jika file data rusak. Semua perubahan karena database terbaru atau cadangan database diferensial hilang dan harus masuk kembali secara manual.

Model pemulihan default ditentukan oleh model model pemulihan database sistem. Untuk informasi selengkapnya tentang memilih model pemulihan yang sesuai, lihat Model Pemulihan.

Anda dapat menentukan status opsi ini dengan memeriksa recovery_model kolom dan recovery_model_desc dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa Recovery properti fungsi DATABASEPROPERTYEX .

TORN_PAGE_DETECTION { ON | NONAKTIF }

  • AKTIF

    Halaman yang tidak lengkap dapat dideteksi oleh Mesin Database.

  • TIDAK AKTIF

    Halaman yang tidak lengkap tidak dapat dideteksi oleh Mesin Database.

Penting

Struktur sintaks TORN_PAGE_DETECTION ON | OFF akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan struktur sintaks ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan struktur sintaks. Gunakan opsi PAGE_VERIFY sebagai gantinya.

PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | TIDAK ADA }

Menemukan halaman database yang rusak yang disebabkan oleh kesalahan jalur I/O disk. Kesalahan jalur I/O disk dapat menjadi penyebab masalah kerusakan database. Kesalahan ini paling sering disebabkan oleh kegagalan daya atau kegagalan perangkat keras disk yang terjadi pada saat halaman ditulis ke disk.

  • CHECKSUM

    Menghitung checksum atas konten seluruh halaman dan menyimpan nilai di header halaman saat halaman ditulis ke disk. Ketika halaman dibaca dari disk, checksum dikomputasi ulang dan dibandingkan dengan nilai checksum yang disimpan di header halaman. Jika nilai tidak cocok, pesan kesalahan 824 (menunjukkan kegagalan checksum) dilaporkan ke log kesalahan SQL Server dan log peristiwa Windows. Kegagalan checksum menunjukkan masalah jalur I/O. Untuk menentukan akar penyebab memerlukan penyelidikan perangkat keras, driver firmware, BIOS, driver filter (seperti perangkat lunak virus), dan komponen jalur I/O lainnya.

  • TORN_PAGE_DETECTION

    Menyimpan pola 2-bit tertentu untuk setiap sektor 512-byte di halaman database 8 kilobyte (KB) dan disimpan di header halaman database saat halaman ditulis ke disk. Ketika halaman dibaca dari disk, bit robek yang disimpan di header halaman dibandingkan dengan informasi sektor halaman aktual.

    Nilai yang tidak cocok menunjukkan bahwa hanya sebagian halaman yang ditulis ke disk. Dalam situasi ini, pesan kesalahan 824 (menunjukkan kesalahan halaman yang robek) dilaporkan ke log kesalahan SQL Server dan log peristiwa Windows. Halaman robek biasanya terdeteksi oleh pemulihan database jika benar-benar penulisan halaman yang tidak lengkap. Namun, kegagalan jalur I/O lainnya dapat menyebabkan halaman robek kapan saja.

  • NONE

    Penulisan halaman database tidak akan menghasilkan nilai CHECKSUM atau TORN_PAGE_DETECTION. SQL Server tidak akan memverifikasi checksum atau halaman robek selama baca meskipun nilai CHECKSUM atau TORN_PAGE_DETECTION ada di header halaman.

Pertimbangkan poin penting berikut saat Anda menggunakan opsi PAGE_VERIFY:

  • Defaultnya adalah CHECKSUM.

  • Ketika database pengguna atau sistem ditingkatkan ke SQL Server 2005 (9.x) atau versi yang lebih baru, nilai PAGE_VERIFY (TIDAK ADA atau TORN_PAGE_DETECTION) tidak diubah. Kami menyarankan agar Anda mengubah ke CHECKSUM.

    Catatan

    Di versi SQL Server yang lebih lama, opsi database PAGE_VERIFY diatur ke NONE untuk tempdb database dan tidak dapat dimodifikasi. Dimulai dengan SQL Server 2008 (10.0.x), nilai default untuk tempdb database adalah CHECKSUM untuk penginstalan baru SQL Server. Saat meningkatkan penginstalan SQL Server, nilai default tetap TIDAK ADA. Opsi dapat dimodifikasi. Kami menyarankan agar Anda menggunakan CHECKSUM untuk tempdb database.

  • TORN_PAGE_DETECTION dapat menggunakan lebih sedikit sumber daya tetapi memberikan subset minimal dari perlindungan CHECKSUM.

  • PAGE_VERIFY dapat diatur tanpa membuat database offline, mengunci database, atau menghambat konkurensi pada database tersebut.

  • CHECKSUM saling eksklusif untuk TORN_PAGE_DETECTION. Kedua opsi tidak dapat diaktifkan secara bersamaan.

Ketika halaman robek atau kegagalan checksum terdeteksi, Anda dapat memulihkan dengan memulihkan data atau berpotensi membangun kembali indeks jika kegagalan hanya terbatas pada halaman indeks. Jika Anda mengalami kegagalan checksum, untuk menentukan jenis halaman database atau halaman yang terpengaruh, jalankan DBCC CHECKDB. Untuk informasi selengkapnya tentang opsi pemulihan, lihat PULIHKAN Argumen. Meskipun memulihkan data akan menyelesaikan masalah kerusakan data, akar penyebabnya, misalnya, kegagalan perangkat keras disk, harus didiagnosis dan diperbaiki sesegera mungkin untuk mencegah kesalahan yang berkelanjutan.

SQL Server akan mencoba kembali setiap bacaan yang gagal dengan checksum, halaman robek, atau kesalahan I/O lainnya empat kali. Jika baca berhasil dalam salah satu upaya coba lagi, pesan ditulis ke log kesalahan. Perintah yang memicu bacaan akan berlanjut. Perintah akan gagal dengan pesan kesalahan 824 jika upaya coba lagi gagal.

Untuk informasi selengkapnya tentang pesan kesalahan 823, 824, dan 825, lihat:

Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa page_verify_option kolom dalam tampilan katalog sys.databases atau IsTornPageDetectionEnabled properti fungsi DATABASEPROPERTYEX .

<> remote_data_archive_option ::=

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2016 (13.x))

Mengaktifkan atau menonaktifkan Stretch Database untuk database. Untuk informasi selengkapnya, lihat Stretch Database.

Penting

Stretch Database tidak digunakan lagi di SQL Server 2022 (16.x) dan Azure SQL Database. Fitur ini akan dihapus dalam versi Mesin Database di masa mendatang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.

REMOTE_DATA_ARCHIVE = { ON ( SERVER = <server_name>, { CREDENTIAL = <db_scoped_credential_name> | FEDERATED_SERVICE_ACCOUNT = AKTIF | NONAKTIF } ) | OFF

  • AKTIF

    Mengaktifkan Stretch Database untuk database. Untuk informasi selengkapnya, termasuk prasyarat tambahan, lihat Mengaktifkan Stretch Database untuk database.

    db_owner Memerlukan izin untuk mengaktifkan Stretch Database untuk tabel. db_owner Memerlukan izin dan CONTROL DATABASE untuk mengaktifkan Stretch Database untuk database.

    • SERVER = <server_name>

      Menentukan alamat server Azure. Sertakan .database.windows.net bagian nama. Contohnya,MyStretchDatabaseServer.database.windows.net.

    • INFO MASUK = <db_scoped_credential_name>

      Menentukan kredensial cakupan database yang digunakan instans SQL Server untuk menyambungkan ke server Azure. Pastikan kredensial ada sebelum Anda menjalankan perintah ini. Untuk informasi selengkapnya, lihat MEMBUAT KREDENSIAL CAKUPAN DATABASE.

    • FEDERATED_SERVICE_ACCOUNT = { AKTIF | NONAKTIF }

      Anda dapat menggunakan akun layanan federasi untuk SQL Server lokal untuk berkomunikasi dengan server Azure jarak jauh saat kondisi berikut ini semuanya benar.

      • Akun layanan tempat instans SQL Server berjalan adalah akun domain.
      • Akun domain milik domain yang Direktori Aktifnya digabungkan dengan ID Microsoft Entra (sebelumnya Azure Active Directory).
      • Server Azure jarak jauh dikonfigurasi untuk mendukung autentikasi Microsoft Entra.
      • Akun layanan tempat instans SQL Server berjalan harus dikonfigurasi sebagai dbmanager akun atau sysadmin di server Azure jarak jauh.

      Jika Anda menentukan bahwa akun layanan federasi AKTIF, Anda juga tidak dapat menentukan argumen KREDENSIAL. Berikan argumen INFO MASUK jika Anda menentukan NONAKTIF.

  • TIDAK AKTIF

    Menonaktifkan Stretch Database untuk database. Untuk informasi selengkapnya, lihat Menonaktifkan Stretch Database dan membawa kembali data jarak jauh.

    Anda hanya bisa menonaktifkan Stretch Database untuk database setelah database tidak lagi berisi tabel apa pun yang diaktifkan untuk Stretch Database. Setelah Anda menonaktifkan Stretch Database, migrasi data berhenti. Selain itu, hasil kueri tidak lagi menyertakan hasil dari tabel jarak jauh.

    Menonaktifkan Stretch Database tidak menghapus database jarak jauh. Untuk menghapus database jarak jauh, letakkan dengan menggunakan portal Azure.

<> service_broker_option ::=

Berlaku untuk: SQL Server

Mengontrol opsi Service Broker berikut: mengaktifkan atau menonaktifkan pengiriman pesan, mengatur pengidentifikasi Service Broker baru, atau mengatur prioritas percakapan ke AKTIF atau NONAKTIF.

ENABLE_BROKER

Menentukan bahwa Service Broker diaktifkan untuk database yang ditentukan. Pengiriman pesan dimulai, dan is_broker_enabled bendera diatur ke true dalam tampilan katalog sys.databases . Database menyimpan pengidentifikasi Service Broker yang ada. Broker layanan tidak dapat diaktifkan saat database adalah prinsipal dalam konfigurasi pencerminan database.

Catatan

ENABLE_BROKER memerlukan kunci database eksklusif. Jika sesi lain telah mengunci sumber daya dalam database, ENABLE_BROKER akan menunggu hingga sesi lain melepaskan kuncinya. Untuk mengaktifkan Service Broker dalam database pengguna, pastikan bahwa tidak ada sesi lain yang menggunakan database sebelum Anda menjalankan ALTER DATABASE SET ENABLE_BROKER pernyataan, seperti dengan menempatkan database dalam mode pengguna tunggal. Untuk mengaktifkan Service Broker dalam database, pertama-tama msdb hentikan SQL Server Agent sehingga Service Broker dapat memperoleh kunci yang diperlukan.

DISABLE_BROKER

Menentukan bahwa Service Broker dinonaktifkan untuk database yang ditentukan. Pengiriman pesan dihentikan, dan is_broker_enabled bendera diatur ke false dalam tampilan katalog sys.databases . Database menyimpan pengidentifikasi Service Broker yang ada.

NEW_BROKER

Menentukan bahwa database harus menerima pengidentifikasi broker baru. Database bertindak sebagai broker layanan baru. Dengan demikian, semua percakapan yang ada dalam database segera dihapus tanpa menghasilkan pesan dialog akhir. Rute apa pun yang mereferensikan pengidentifikasi Service Broker lama harus dibuat ulang dengan pengidentifikasi baru.

ERROR_BROKER_CONVERSATIONS

Menentukan bahwa pengiriman pesan Service Broker diaktifkan. Pengaturan ini mempertahankan pengidentifikasi Service Broker yang ada untuk database. Service Broker mengakhiri semua percakapan dalam database dengan kesalahan. Pengaturan ini memungkinkan aplikasi menjalankan pembersihan reguler untuk percakapan yang ada.

HONOR_BROKER_PRIORITY { ON | NONAKTIF }

  • AKTIF

    Operasi pengiriman mempertimbangkan tingkat prioritas yang ditetapkan ke percakapan. Pesan dari percakapan yang memiliki tingkat prioritas tinggi dikirim sebelum pesan dari percakapan yang diberi tingkat prioritas rendah.

  • TIDAK AKTIF

    Operasi pengiriman berjalan seolah-olah semua percakapan memiliki tingkat prioritas default.

Perubahan pada opsi HONOR_BROKER_PRIORITY berlaku segera untuk dialog atau dialog baru yang tidak memiliki pesan yang menunggu untuk dikirim. Dialog dengan pesan yang akan dikirim ketika ALTER DATABASE dijalankan tidak akan mengambil pengaturan baru hingga beberapa pesan untuk dialog dikirim. Jumlah waktu sebelum semua dialog mulai menggunakan pengaturan baru dapat sangat bervariasi.

Pengaturan properti ini saat ini dilaporkan dalam is_broker_priority_honored kolom dalam tampilan katalog sys.databases .

<> snapshot_option ::=

Menghitung tingkat isolasi transaksi.

ALLOW_SNAPSHOT_ISOLATION { ON | NONAKTIF }

  • AKTIF

    Mengaktifkan opsi Rekam Jepret di tingkat database. Saat diaktifkan, pernyataan DML mulai menghasilkan versi baris bahkan ketika tidak ada transaksi yang menggunakan Isolasi Rekam Jepret. Setelah opsi ini diaktifkan, transaksi dapat menentukan tingkat isolasi transaksi SNAPSHOT. Ketika transaksi berjalan di tingkat isolasi SNAPSHOT, semua pernyataan melihat rekam jepret data seperti yang ada di awal transaksi. Jika transaksi yang berjalan di tingkat isolasi SNAPSHOT mengakses data dalam beberapa database, baik ALLOW_SNAPSHOT_ISOLATION harus diatur ke AKTIF di semua database, atau setiap pernyataan dalam transaksi harus menggunakan petunjuk penguncian pada referensi apa pun dalam klausul FROM ke tabel dalam database di mana ALLOW_SNAPSHOT_ISOLATION NONAKTIF.

  • TIDAK AKTIF

    Menonaktifkan opsi Rekam Jepret di tingkat database. Transaksi tidak dapat menentukan tingkat isolasi transaksi SNAPSHOT.

Saat Anda mengatur ALLOW_SNAPSHOT_ISOLATION ke status baru (dari AKTIF ke NONAKTIF, atau dari NONAKTIF ke AKTIF), ALTER DATABASE tidak mengembalikan kontrol ke pemanggil hingga semua transaksi yang ada dalam database diterapkan. Jika database sudah dalam status yang ditentukan dalam pernyataan ALTER DATABASE, kontrol akan segera dikembalikan ke pemanggil. Jika pernyataan ALTER DATABASE tidak ditampilkan dengan cepat, gunakan sys.dm_tran_active_snapshot_database_transactions untuk menentukan apakah ada transaksi yang berjalan lama. Jika pernyataan ALTER DATABASE dibatalkan, database tetap dalam status saat ALTER DATABASE dimulai. Tampilan katalog sys.databases menunjukkan status transaksi isolasi rekam jepret dalam database. Jika snapshot_isolation_state_desc = IN_TRANSITION_TO_ON, perintah ALTER DATABASE ... ALLOW_SNAPSHOT_ISOLATION OFF akan menjeda enam detik dan mencoba kembali operasi.

Anda tidak dapat mengubah status ALLOW_SNAPSHOT_ISOLATION jika database OFFLINE.

Jika Anda mengatur ALLOW_SNAPSHOT_ISOLATION dalam database READ_ONLY, pengaturan akan disimpan jika database nanti diatur ke READ_WRITE.

Anda dapat mengubah pengaturan ALLOW_SNAPSHOT_ISOLATION untuk masterdatabase , , modelmsdb, dan tempdb . Pengaturan disimpan setiap kali instans Mesin Database dihentikan dan dimulai ulang jika Anda mengubah pengaturan untuk tempdb. Jika Anda mengubah pengaturan untuk model, pengaturan tersebut menjadi default untuk database baru apa pun yang dibuat, kecuali untuk tempdb.

Opsinya adalah AKTIF secara default untuk master database dan msdb .

Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa snapshot_isolation_state kolom dalam tampilan katalog sys.databases .

READ_COMMITTED_SNAPSHOT { ON | NONAKTIF }

  • AKTIF

    Mengaktifkan opsi Rekam Jepret Yang Diterapkan Baca di tingkat database. Saat diaktifkan, pernyataan DML mulai menghasilkan versi baris bahkan ketika tidak ada transaksi yang menggunakan Isolasi Rekam Jepret. Setelah opsi ini diaktifkan, transaksi yang menentukan tingkat isolasi yang diterapkan baca menggunakan penerapan versi baris alih-alih mengunci. Semua pernyataan melihat rekam jepret data seperti yang ada di awal pernyataan saat transaksi berjalan di tingkat isolasi READ COMMITTED.

  • TIDAK AKTIF

    Menonaktifkan opsi Rekam Jepret Yang Diterapkan Baca di tingkat database. Transaksi yang menentukan tingkat isolasi READ COMMITTED menggunakan penguncian.

Untuk mengatur READ_COMMITTED_SNAPSHOT AKTIF atau NONAKTIF, tidak boleh ada koneksi aktif ke database kecuali untuk koneksi yang menjalankan perintah ALTER DATABASE. Namun, database tidak harus dalam mode pengguna tunggal. Anda tidak dapat mengubah status opsi ini saat database OFFLINE.

Jika Anda mengatur READ_COMMITTED_SNAPSHOT dalam database READ_ONLY, pengaturan akan disimpan saat database nanti diatur ke READ_WRITE.

READ_COMMITTED_SNAPSHOT tidak dapat diaktifkan untuk masterdatabase sistem , , tempdbatau msdb . Jika Anda mengubah pengaturan untuk model, pengaturan tersebut menjadi default untuk database baru yang dibuat, kecuali untuk tempdb.

Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa is_read_committed_snapshot_on kolom dalam tampilan katalog sys.databases .

Peringatan

Saat tabel dibuat dengan DURABILITY = SCHEMA_ONLY, dan READ_COMMITTED_SNAPSHOT kemudian diubah menggunakan ALTER DATABASE, data dalam tabel akan hilang.

MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | NONAKTIF }

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2014 (12.x))

  • AKTIF

    Ketika tingkat isolasi transaksi diatur ke tingkat isolasi apa pun yang lebih rendah dari SNAPSHOT, semua operasi Transact-SQL yang ditafsirkan pada tabel yang dioptimalkan memori dijalankan di bawah isolasi SNAPSHOT. Contoh tingkat isolasi yang lebih rendah dari rekam jepret adalah READ COMMITTED atau READ UNCOMMITTED. Operasi ini berjalan apakah tingkat isolasi transaksi diatur secara eksplisit pada tingkat sesi, atau default digunakan secara implisit.

  • TIDAK AKTIF

    Tidak meningkatkan tingkat isolasi transaksi untuk operasi Transact-SQL yang ditafsirkan pada tabel yang dioptimalkan memori.

Anda tidak dapat mengubah status MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT jika database OFFLINE.

Opsi default adalah NONAKTIF.

Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa is_memory_optimized_elevate_to_snapshot_on kolom dalam tampilan katalog sys.databases .

<> sql_option ::=

Mengontrol opsi kepatuhan ANSI di tingkat database.

ANSI_NULL_DEFAULT { ON | NONAKTIF }

Menentukan nilai default, NULL atau NOT NULL, dari kolom atau tipe yang ditentukan pengguna CLR di mana nullability tidak ditentukan secara eksplisit dalam pernyataan CREATE TABLE atau ALTER TABLE. Kolom yang ditentukan dengan batasan mengikuti aturan batasan apa pun pengaturan ini.

  • AKTIF

    Nilai default untuk kolom yang tidak ditentukan adalah NULL.

  • TIDAK AKTIF

    Nilai default untuk kolom yang tidak ditentukan adalah NOT NULL.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan tingkat database default untuk ANSI_NULL_DEFAULT. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_NULL_DEFAULT ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR ANSI_NULL_DFLT_ON.

Untuk kompatibilitas ANSI, atur opsi database ANSI_NULL_DEFAULT ke AKTIF mengubah default database menjadi NULL.

Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_null_default_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiNullDefault properti fungsi DATABASEPROPERTYEX .

ANSI_NULLS { ON | NONAKTIF }

  • AKTIF

    Semua perbandingan dengan nilai null dievaluasi ke UNKNOWN.

  • TIDAK AKTIF

    Perbandingan nilai non-Unicode dengan nilai null dievaluasi ke TRUE jika kedua nilai adalah NULL.

Penting

Dalam versi SQL Server di masa mendatang, ANSI_NULLS akan selalu AKTIF dan aplikasi apa pun yang secara eksplisit mengatur opsi ke NONAKTIF akan menghasilkan kesalahan. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk ANSI_NULLS. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_NULLS ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat SET ANSI_NULLS.

Penting

SET ANSI_NULLS juga harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.

Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_nulls_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiNullsEnabled properti fungsi DATABASEPROPERTYEX .

ANSI_PADDING { ON | NONAKTIF }

  • AKTIF

    String diisi dengan panjang yang sama sebelum konversi. Juga diisi dengan panjang yang sama sebelum menyisipkan ke jenis data varchar atau nvarchar .

  • TIDAK AKTIF

    Menyisipkan kosong di belakang dalam nilai karakter ke dalam kolom varchar atau nvarchar . Juga meninggalkan nol di belakang dalam nilai biner yang disisipkan ke dalam kolom varbinary . Nilai tidak diisi ke panjang kolom.

    Ketika OFF ditentukan, pengaturan ini hanya memengaruhi definisi kolom baru.

Penting

Dalam versi SQL Server di masa mendatang, ANSI_PADDING akan selalu AKTIF dan aplikasi apa pun yang secara eksplisit mengatur opsi ke NONAKTIF akan menghasilkan kesalahan. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Kami menyarankan agar Anda selalu mengatur ANSI_PADDING ke AKTIF. ANSI_PADDING harus AKTIF saat Anda membuat atau memanipulasi indeks pada kolom komputasi atau tampilan terindeks.

kolom char(n) dan biner(n) yang memungkinkan null diisi ke panjang kolom saat ANSI_PADDING diatur ke AKTIF. Kosong berikutnya dan nol dipangkas saat ANSI_PADDING NONAKTIF. kolom char(n) dan biner(n) yang tidak mengizinkan null selalu diisi ke panjang kolom.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan tingkat database default untuk ANSI_PADDING. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_PADDING ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat SET ANSI_PADDING.

Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_padding_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiPaddingEnabled properti fungsi DATABASEPROPERTYEX .

ANSI_WARNINGS { ON | NONAKTIF }

  • AKTIF

    Kesalahan atau peringatan dikeluarkan ketika kondisi seperti pembagian dengan nol terjadi. Kesalahan dan peringatan juga dikeluarkan ketika nilai null muncul dalam fungsi agregat.

  • TIDAK AKTIF

    Tidak ada peringatan yang dimunculkan dan nilai null dikembalikan ketika kondisi seperti membagi demi nol terjadi.

Penting

SET ANSI_WARNINGS harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk ANSI_WARNINGS. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_WARNINGS ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR ANSI_WARNINGS.

Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_warnings_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiWarningsEnabled properti fungsi DATABASEPROPERTYEX .

ARITHABORT { ON | NONAKTIF }

  • AKTIF

    Kueri berakhir ketika terjadi kesalahan luapan atau membagi berdasarkan nol selama eksekusi kueri.

  • TIDAK AKTIF

    Pesan peringatan ditampilkan ketika salah satu kesalahan ini terjadi. Kueri, batch, atau transaksi terus diproses seolah-olah tidak ada kesalahan yang terjadi meskipun peringatan ditampilkan.

Penting

ATUR ARITHABORT harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.

Anda dapat menentukan status opsi ini dengan memeriksa is_arithabort_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsArithmeticAbortEnabled properti fungsi DATABASEPROPERTYEX .

COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }

Untuk informasi selengkapnya, lihat MENGUBAH Tingkat Kompatibilitas DATABASE.

CONCAT_NULL_YIELDS_NULL { ON | NONAKTIF }

  • AKTIF

    Hasil dari operasi perangkaian adalah NULL ketika salah satu operand adalah NULL. Misalnya, menggabungkan string karakter "Ini" dan NULL mengembalikan nilai NULL alih-alih nilai "Ini adalah".

  • TIDAK AKTIF

    Nilai null diperlakukan sebagai string karakter kosong.

Penting

CONCAT_NULL_YIELDS_NULL harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.

Dalam versi SQL Server yang akan datang, CONCAT_NULL_YIELDS_NULL akan selalu AKTIF, dan aplikasi apa pun yang secara eksplisit mengatur opsi ke NONAKTIF akan memicu kesalahan. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk CONCAT_NULL_YIELDS_NULL. Secara default, klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi CONCAT_NULL_YIELDS_NULL ke AKTIF untuk sesi saat menyambungkan ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR CONCAT_NULL_YIELDS_NULL.

Anda dapat menentukan status opsi ini dengan memeriksa is_concat_null_yields_null_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsNullConcat properti fungsi DATABASEPROPERTYEX .

NUMERIC_ROUNDABORT { ON | NONAKTIF }

  • AKTIF

    Kesalahan dihasilkan ketika hilangnya presisi terjadi dalam ekspresi.

  • TIDAK AKTIF

    Hilangnya presisi tidak menghasilkan pesan kesalahan, dan hasilnya dibulatkan ke presisi kolom atau variabel yang menyimpan hasilnya.

    Penting

    NUMERIC_ROUNDABORT harus diatur ke NONAKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.

Anda dapat menentukan status opsi ini di is_numeric_roundabort_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsNumericRoundAbortEnabled properti fungsi DATABASEPROPERTYEX .

QUOTED_IDENTIFIER { ON | NONAKTIF }

  • AKTIF

    Tanda kutip ganda dapat digunakan untuk mengapit pengidentifikasi yang dibatasi.

    Semua string yang dibatasi oleh tanda kutip ganda ditafsirkan sebagai pengidentifikasi objek. Pengidentifikasi yang dikutip tidak harus mengikuti aturan Transact-SQL untuk pengidentifikasi. Mereka dapat menjadi kata kunci dan dapat menyertakan karakter yang tidak diizinkan dalam pengidentifikasi Transact-SQL. Jika tanda kutip ganda (") adalah bagian dari pengidentifikasi, tanda kutip ganda dapat diwakili oleh dua tanda kutip ganda ("").

  • TIDAK AKTIF

    Pengidentifikasi tidak boleh dalam tanda kutip dan harus mengikuti semua aturan Transact-SQL untuk pengidentifikasi. Literal dapat dibatasi dengan tanda kutip tunggal atau ganda.

SQL Server juga memungkinkan pengidentifikasi dibatasi oleh tanda kurung siku ([ dan ]). Pengidentifikasi kurung selalu dapat digunakan, apa pun pengaturan QUOTED_IDENTIFIER. Untuk informasi selengkapnya, lihat Pengidentifikasi Database.

Saat tabel dibuat, opsi PENGIDENTIFIKASI KUTIPan selalu disimpan sebagai AKTIF dalam metadata tabel. Opsi disimpan meskipun opsi diatur ke NONAKTIF saat tabel dibuat.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk QUOTED_IDENTIFIER. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi QUOTED_IDENTIFIER ke AKTIF, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR QUOTED_IDENTIFIER.

Anda dapat menentukan status opsi ini dengan memeriksa is_quoted_identifier_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsQuotedIdentifiersEnabled properti fungsi DATABASEPROPERTYEX .

RECURSIVE_TRIGGERS { ON | NONAKTIF }

  • AKTIF

    Penembakan rekursif pemicu AFTER diizinkan.

  • TIDAK AKTIF

    Anda dapat menentukan status opsi ini dengan memeriksa is_recursive_triggers_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsRecursiveTriggersEnabled properti fungsi DATABASEPROPERTYEX .

Catatan

Hanya rekursi langsung yang dicegah saat RECURSIVE_TRIGGERS diatur ke NONAKTIF. Untuk menonaktifkan rekursi tidak langsung, Anda juga harus mengatur opsi server pemicu berlapis ke 0.

Anda dapat menentukan status opsi ini dengan memeriksa is_recursive_triggers_on kolom dalam tampilan katalog sys.databases atau IsRecursiveTriggersEnabled properti fungsi DATABASEPROPERTYEX .

<> suspend_for_snapshot_backup ::=

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2022 (16.x))

Menangguhkan database untuk pencadangan rekam jepret. Dapat menentukan grup dari satu atau beberapa database. Dapat menunjuk mode salin saja.

SET SUSPEND_FOR_SNAPSHOT_BACKUP = { ON | NONAKTIF }

Menangguhkan, atau membatalkan penangguhan database. DEFAULT NONAKTIF.

MODE = COPY_ONLY

Opsional. Menggunakan mode COPY_ONLY.

<> target_recovery_time_option ::=

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))

Menentukan frekuensi titik pemeriksaan tidak langsung berdasarkan per database. Dimulai dengan SQL Server 2016 (13.x) nilai default untuk database baru adalah 1 menit, yang menunjukkan database akan menggunakan titik pemeriksaan tidak langsung. Untuk versi yang lebih lama, defaultnya adalah 0, yang menunjukkan bahwa database akan menggunakan titik pemeriksaan otomatis, yang frekuensinya tergantung pada pengaturan interval pemulihan instans server. Microsoft merekomendasikan 1 menit untuk sebagian besar sistem.

TARGET_RECOVERY_TIME = target_recovery_time { DETIK | MENIT }

  • target_recovery_time

    Menentukan batas maksimum pada waktu untuk memulihkan database yang ditentukan jika terjadi crash. target_recovery_time adalah tipe int.

  • DETIK

    Menunjukkan bahwa target_recovery_time dinyatakan sebagai jumlah detik.

  • MENIT

    Menunjukkan bahwa target_recovery_time dinyatakan sebagai jumlah menit.

Untuk informasi selengkapnya tentang titik pemeriksaan tidak langsung, lihat Titik Pemeriksaan Database.

DENGAN <penghentian> ::=

Menentukan kapan harus mengembalikan transaksi yang tidak lengkap saat database ditransisikan dari satu status ke status lainnya. Jika klausul penghentian dihilangkan, pernyataan ALTER DATABASE menunggu tanpa batas waktu jika ada kunci pada database. Hanya satu klausul penghentian yang dapat ditentukan, dan mengikuti klausul SET.

Catatan

Tidak semua opsi database menggunakan klausa penghentian> WITH<. Untuk informasi selengkapnya, lihat tabel di bawah Opsi pengaturan bagian "Keterangan" di artikel ini.

  • ROLLBACK SETELAH bilangan bulat [DETIK] | ROLLBACK SEGERA

    Menentukan apakah akan digulung balik setelah jumlah detik yang ditentukan atau segera.

  • NO_WAIT

    Menentukan bahwa permintaan akan gagal jika status database yang diminta atau perubahan opsi tidak dapat segera diselesaikan. Menyelesaikan dengan segera berarti tidak menunggu transaksi dilakukan atau digulung balik sendiri.

Atur opsi

Untuk mengambil pengaturan saat ini untuk opsi database, gunakan tampilan katalog sys.databases atau DATABASEPROPERTYEX

Setelah Anda mengatur opsi database, pengaturan baru akan segera berlaku.

Anda bisa mengubah nilai default untuk salah satu opsi database untuk semua database yang baru dibuat. Untuk melakukannya, ubah opsi database yang sesuai dalam model database.

Tidak semua opsi database menggunakan klausa penghentian> WITH <atau dapat ditentukan dalam kombinasi dengan opsi lain. Tabel berikut mencantumkan opsi ini beserta opsi dan status penghentiannya.

Kategori opsi Dapat ditentukan dengan opsi lain Dapat menggunakan klausul penghentian> WITH <
<db_state_option> Ya Ya
<db_user_access_option> Ya Ya
<db_update_option> Ya Ya
<delayed_durability_option> Ya Ya
<external_access_option> Ya Tidak
<cursor_option> Ya Tidak
<auto_option> Ya Tidak
<sql_option> Ya Tidak
<recovery_option> Ya Tidak
<target_recovery_time_option> Tidak Ya
<database_mirroring_option> Tidak Tidak
ALLOW_SNAPSHOT_ISOLATION Tidak Tidak
READ_COMMITTED_SNAPSHOT Tidak Ya
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT Ya Ya
<service_broker_option> Ya Tidak
DATE_CORRELATION_OPTIMIZATION Ya Ya
<parameterization_option> Ya Ya
<change_tracking_option> Ya Ya
<db_encryption_option> Ya Tidak
<accelerated_database_recovery> Ya Ya

Cache paket untuk instans SQL Server dibersihkan dengan mengatur salah satu opsi berikut:

LURING

DARING

MODIFY_NAME

COLLATE

READ_ONLY

BACA_TULIS

UBAH FILEGROUP DEFAULT

UBAH fileGROUP READ_WRITE

UBAH fileGROUP READ_ONLY

Cache paket juga dibersihkan dalam skenario berikut.

  • Database memiliki opsi database AUTO_CLOSE diatur ke AKTIF. Ketika tidak ada referensi koneksi pengguna atau menggunakan database, tugas latar belakang mencoba menutup dan mematikan database secara otomatis.
  • Anda menjalankan beberapa kueri terhadap database yang memiliki opsi default. Kemudian, database dihilangkan.
  • Rekam jepret database untuk database sumber dihilangkan.
  • Anda berhasil membangun kembali log transaksi untuk database.
  • Anda memulihkan cadangan database.
  • Anda melepas database.

Menghapus cache rencana menyebabkan kompilasi ulang semua rencana eksekusi berikutnya dan dapat menyebabkan penurunan performa kueri secara tiba-tiba dan sementara. Untuk setiap penyimpanan cache yang dihapus dalam cache paket, log kesalahan SQL Server berisi pesan informasi berikut: 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. Pesan ini dicatat setiap lima menit selama cache dihapus dalam interval waktu tersebut.

Contoh

J. Mengatur opsi pada database

Contoh berikut mengatur model pemulihan dan opsi verifikasi halaman data untuk AdventureWorks2022 database sampel.

USE master;
GO
ALTER DATABASE [database_name]
SET RECOVERY FULL PAGE_VERIFY CHECKSUM;
GO

B. Atur database ke READ_ONLY

Mengubah status database atau grup file menjadi READ_ONLY atau READ_WRITE memerlukan akses eksklusif ke database. Contoh berikut mengatur database ke SINGLE_USER mode untuk mendapatkan akses eksklusif. Contoh kemudian mengatur status AdventureWorks2022 database ke READ_ONLY dan mengembalikan akses ke database ke semua pengguna.

Catatan

Contoh ini menggunakan opsi WITH ROLLBACK IMMEDIATE penghentian dalam pernyataan pertama ALTER DATABASE . Semua transaksi yang tidak lengkap akan digulung balik dan koneksi lain ke AdventureWorks2022 database akan segera terputus.

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. Mengaktifkan isolasi rekam jepret pada database

Contoh berikut mengaktifkan opsi kerangka kerja isolasi rekam jepret untuk AdventureWorks2022 database.

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

Kumpulan hasil menunjukkan bahwa kerangka kerja isolasi rekam jepret diaktifkan.

nama snapshot_isolation_state description
[nama_database] 1 AKTIF

D. Mengaktifkan, memodifikasi, atau menonaktifkan pelacakan perubahan

Contoh berikut memungkinkan pelacakan perubahan untuk AdventureWorks2022 database dan mengatur periode retensi ke 2 hari.

ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);

Contoh berikut menunjukkan cara mengubah periode retensi menjadi 3 hari.

ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);

Contoh berikut menunjukkan cara menonaktifkan pelacakan perubahan untuk AdventureWorks2022 database.

ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;

E. Mengaktifkan Penyimpanan Kueri

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2016 (13.x))

Contoh berikut mengaktifkan Penyimpanan Kueri dan mengonfigurasi parameternya.

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. Mengaktifkan Penyimpanan Kueri dengan statistik tunggu

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2017 (14.x))

Contoh berikut mengaktifkan Penyimpanan Kueri dan mengonfigurasi parameternya.

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. Mengaktifkan Penyimpanan Kueri dengan opsi kebijakan penangkapan kustom

Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2019 (15.x))

Contoh berikut mengaktifkan Penyimpanan Kueri dan mengonfigurasi parameternya.

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

Lihat juga

Langkah berikutnya

* SQL Database *  

 

SQL Database

Tingkat kompatibilitas adalah SET opsi tetapi dijelaskan dalam ALTER DATABASE Compatibility Level.

Catatan

Banyak opsi kumpulan database dapat dikonfigurasi untuk sesi saat ini dengan menggunakan Pernyataan SET dan sering dikonfigurasi oleh aplikasi saat tersambung. Opsi set tingkat sesi mengambil alih ALTER DATABASE SET nilai. Opsi database yang dijelaskan di bagian berikut ini adalah nilai yang dapat diatur untuk sesi yang tidak secara eksplisit menyediakan nilai opsi set lainnya.

Sintaks

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 }

Argumen

database_name

Adalah nama database yang akan dimodifikasi.

  • CURRENT

    CURRENT menjalankan tindakan dalam database saat ini. CURRENT tidak didukung untuk semua opsi dalam semua konteks. Jika CURRENT gagal, berikan nama database.

<> auto_option ::=

Mengontrol opsi otomatis.

AUTO_CREATE_STATISTICS { ON | NONAKTIF }

  • AKTIF

    Pengoptimal Kueri membuat statistik pada kolom tunggal dalam predikat kueri, seperlunya, untuk meningkatkan rencana kueri dan performa kueri. Statistik kolom tunggal ini dibuat saat Pengoptimal Kueri mengkompilasi kueri. Statistik kolom tunggal dibuat hanya pada kolom yang belum menjadi kolom pertama dari objek statistik yang ada.

    Defaultnya adalah ON. Kami menyarankan agar Anda menggunakan pengaturan default untuk sebagian besar database.

  • TIDAK AKTIF

    Pengoptimal Kueri tidak membuat statistik pada satu kolom dalam predikat kueri saat mengkompilasi kueri. Mengatur opsi ini ke NONAKTIF dapat menyebabkan rencana kueri suboptimal dan performa kueri yang terdegradasi.

Anda dapat menentukan status opsi ini dengan memeriksa is_auto_create_stats_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAutoCreateStatistics properti fungsi DATABASEPROPERTYEX .

Untuk informasi selengkapnya, lihat bagian "Opsi statistik" di Statistik.

INKREMENTAL = AKTIF | OFF

Atur AUTO_CREATE_STATISTICS ke AKTIF, dan atur INCREMENTAL ke AKTIF. Pengaturan ini membuat statistik yang dibuat secara otomatis sebagai bertahap setiap kali statistik inkremental didukung. Nilai defaultnya adalah NONAKTIF. Untuk informasi selengkapnya, lihat MEMBUAT STATISTIK.

AUTO_SHRINK { ON | NONAKTIF }

  • AKTIF

    File database adalah kandidat untuk penyusutan berkala. Kecuali Anda memiliki persyaratan tertentu, jangan atur opsi database AUTO_SHRINK ke AKTIF. Untuk informasi selengkapnya, lihat Menyusutkan database.

File data dan file log dapat disusutkan secara otomatis. AUTO_SHRINK mengurangi ukuran log transaksi hanya jika Anda mengatur database ke model pemulihan SIMPLE atau jika Anda mencadangkan log. Saat diatur ke NONAKTIF, file database tidak secara otomatis menyusut selama pemeriksaan berkala untuk ruang yang tidak digunakan.

Opsi AUTO_SHRINK menyebabkan file diciutkan ketika lebih dari 25 persen file berisi ruang yang tidak digunakan. Opsi ini menyebabkan file menyusut ke salah satu dari dua ukuran. Ini menyusut ke mana pun yang lebih besar:

  • Ukuran di mana 25 persen dari file adalah ruang yang tidak digunakan
  • Ukuran file ketika dibuat

Anda tidak dapat menyusutkan database baca-saja.

  • TIDAK AKTIF

    File database tidak disusutkan secara otomatis selama pemeriksaan berkala untuk ruang yang tidak digunakan.

Anda dapat menentukan status opsi ini dengan memeriksa is_auto_shrink_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAutoShrink properti fungsi DATABASEPROPERTYEX .

Catatan

Opsi AUTO_SHRINK tidak tersedia dalam database mandiri.

AUTO_UPDATE_STATISTICS { ON | NONAKTIF }

  • AKTIF

    Menentukan bahwa Pengoptimal Kueri memperbarui statistik saat digunakan oleh kueri dan kapan mungkin sudah kedaluarsa. Statistik menjadi kedaluarsa setelah operasi sisipkan, perbarui, hapus, atau gabungkan mengubah distribusi data dalam tabel atau tampilan terindeks. Pengoptimal Kueri menentukan kapan statistik mungkin kedaluarsa dengan menghitung jumlah modifikasi data sejak pembaruan statistik terakhir dan membandingkan jumlah modifikasi dengan ambang batas. Ambang didasarkan pada jumlah baris dalam tabel atau tampilan terindeks.

    Pengoptimal Kueri memeriksa statistik yang sudah kedaluwarsa sebelum mengkompilasi kueri dan menjalankan rencana kueri yang di-cache. Pengoptimal Kueri menggunakan kolom, tabel, dan tampilan terindeks dalam predikat kueri untuk menentukan statistik mana yang mungkin sudah kedaluarsa. Pengoptimal Kueri menentukan informasi ini sebelum mengkompilasi kueri. Sebelum menjalankan rencana kueri yang di-cache, Mesin Database memverifikasi bahwa rencana kueri mereferensikan statistik terbaru.

    Opsi AUTO_UPDATE_STATISTICS berlaku untuk statistik yang dibuat untuk indeks, kolom tunggal dalam predikat kueri, dan statistik yang dibuat dengan menggunakan pernyataan CREATE STATISTICS. Opsi ini juga berlaku untuk statistik yang difilter.

    Defaultnya adalah ON. Kami menyarankan agar Anda menggunakan pengaturan default untuk sebagian besar database.

    Gunakan opsi AUTO_UPDATE_STATISTICS_ASYNC untuk menentukan apakah statistik diperbarui secara sinkron atau asinkron.

  • TIDAK AKTIF

    Menentukan bahwa Pengoptimal Kueri tidak memperbarui statistik saat digunakan oleh kueri. Pengoptimal Kueri juga tidak memperbarui statistik saat mungkin sudah kedaluarsa. Mengatur opsi ini ke NONAKTIF dapat menyebabkan rencana kueri suboptimal dan performa kueri yang terdegradasi.

    Anda dapat menentukan status opsi ini dengan memeriksa is_auto_update_stats_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAutoUpdateStatistics properti fungsi DATABASEPROPERTYEX .

    Untuk informasi selengkapnya, lihat bagian "Opsi statistik" di Statistik.

AUTO_UPDATE_STATISTICS_ASYNC { ON | NONAKTIF }

  • AKTIF

    Menentukan bahwa pembaruan statistik untuk opsi AUTO_UPDATE_STATISTICS tidak sinkron. Pengoptimal Kueri tidak menunggu pembaruan statistik selesai sebelum mengkompilasi kueri.

    Mengatur opsi ini ke AKTIF tidak berpengaruh kecuali AUTO_UPDATE_STATISTICS diatur ke AKTIF.

    Secara default, opsi AUTO_UPDATE_STATISTICS_ASYNC diatur ke NONAKTIF, dan statistik pembaruan Pengoptimal Kueri secara sinkron.

  • TIDAK AKTIF

    Menentukan bahwa pembaruan statistik untuk opsi AUTO_UPDATE_STATISTICS sinkron. Pengoptimal Kueri menunggu pembaruan statistik selesai sebelum mengkompilasi kueri.

    Mengatur opsi ini ke NONAKTIF tidak berpengaruh kecuali AUTO_UPDATE_STATISTICS diatur ke AKTIF.

Anda dapat menentukan status opsi ini dengan memeriksa is_auto_update_stats_async_on kolom dalam tampilan katalog sys.databases .

Untuk informasi selengkapnya yang menjelaskan kapan harus menggunakan pembaruan statistik sinkron atau asinkron, lihat bagian "Opsi statistik" di Statistik.

<> automatic_tuning_option ::=

Mengontrol opsi otomatis untuk Penyetelan otomatis. Anda dapat melihat opsi untuk pengaturan berikut di portal Azure atau melalui T-SQL dalam tampilan sys.database_automatic_tuning_options.

AUTOMATIC_TUNING = { AUTO | WARISAN | KUSTOM }

  • AUTO

    Mengatur nilai Penyetelan otomatis ke AUTO akan menerapkan default konfigurasi Azure untuk Penyetelan otomatis. Dalam portal Azure, ini mencerminkan opsi untuk "Mewarisi dari: Default Azure".

  • MEWARISI

    Menggunakan nilai INHERIT mewarisi konfigurasi default dari server induk. Dalam portal Azure, ini mencerminkan opsi untuk "Mewarisi dari: Server". Ini sangat berguna jika Anda ingin menyesuaikan konfigurasi Penyetelan otomatis pada server induk, dan memiliki semua database di server tersebut MEWARISI pengaturan kustom ini. Harap dicatat bahwa agar warisan berfungsi, tiga opsi penyetelan individu FORCE_LAST_GOOD_PLAN, CREATE_INDEX, dan DROP_INDEX perlu diatur ke DEFAULT pada database.

  • KUSTOM

    Dengan menggunakan nilai KUSTOM, Anda harus mengonfigurasi setiap opsi Penyetelan Otomatis yang tersedia di database. Dalam portal Azure, ini mencerminkan opsi untuk "Mewarisi dari: Jangan mewarisi".

CREATE_INDEX = { DEFAULT | AKTIF | NONAKTIF }

Mengaktifkan atau menonaktifkan opsi manajemen CREATE_INDEX indeks otomatis penyetelan otomatis. Anda dapat melihat status untuk opsi ini di portal Azure atau melalui T-SQL dalam tampilan sys.database_automatic_tuning_options.

  • DEFAULT

    Mewarisi pengaturan default dari server. Dalam hal ini, opsi untuk mengaktifkan atau menonaktifkan fitur penyetelan Otomatis individual didefinisikan pada tingkat server.

  • AKTIF

    Saat diaktifkan, indeks yang hilang secara otomatis dihasilkan pada database. Setelah pembuatan indeks, perolehan performa beban kerja diverifikasi. Ketika indeks yang dibuat tersebut tidak lagi memberikan manfaat untuk performa beban kerja, indeks tersebut secara otomatis dikembalikan. Indeks yang dibuat secara otomatis ditandai sebagai sistem yang dihasilkan diindeks.

  • TIDAK AKTIF

    Tidak secara otomatis menghasilkan indeks yang hilang pada database.

DROP_INDEX = { DEFAULT | AKTIF | NONAKTIF }

Mengaktifkan atau menonaktifkan opsi manajemen DROP_INDEX indeks otomatis Penyetelan Otomatis. Anda dapat melihat status untuk opsi ini di portal Azure atau melalui T-SQL dalam tampilan sys.database_automatic_tuning_options.

  • DEFAULT

    Mewarisi pengaturan default dari server. Dalam hal ini, opsi untuk mengaktifkan atau menonaktifkan fitur penyetelan Otomatis individual didefinisikan pada tingkat server.

  • AKTIF

    Secara otomatis menghilangkan indeks duplikat atau tidak lagi berguna ke beban kerja performa.

  • TIDAK AKTIF

    Tidak secara otomatis menghilangkan indeks yang hilang pada database.

FORCE_LAST_GOOD_PLAN = { DEFAULT | AKTIF | NONAKTIF }

Mengaktifkan atau menonaktifkan opsi koreksi FORCE_LAST_GOOD_PLAN paket otomatis penyetelan otomatis. Anda dapat melihat status untuk opsi ini di portal Azure atau melalui T-SQL dalam tampilan sys.database_automatic_tuning_options.

  • DEFAULT

    Mewarisi pengaturan default dari server. Dalam hal ini, opsi untuk mengaktifkan atau menonaktifkan fitur penyetelan Otomatis individual didefinisikan pada tingkat server. Ini adalah nilai default. Nilai default untuk server Azure SQL baru adalah AKTIF, yang berarti bahwa secara default, database baru akan mewarisi pengaturan AKTIF.

  • AKTIF

    Mesin Database secara otomatis memaksa rencana baik terakhir yang diketahui pada kueri Transact-SQL di mana rencana kueri baru menyebabkan regresi performa. Mesin Database terus memantau performa kueri kueri Transact-SQL dengan paket paksa. Jika terdapat peningkatan performa, Mesin Database akan terus menggunakan rencana optimal terakhir yang diketahui. Jika tidak terdapat peningkatan performa, Mesin Database akan menghasilkan rencana kueri baru. Pernyataan akan gagal jika Penyimpanan Kueri tidak diaktifkan atau jika tidak dalam mode Baca-Tulis .

  • TIDAK AKTIF

    Mesin Database melaporkan potensi regresi performa kueri yang disebabkan oleh perubahan rencana kueri dalam tampilan sys.dm_db_tuning_recommendations . Namun, rekomendasi ini tidak diterapkan secara otomatis. Pengguna dapat memantau rekomendasi aktif dan memperbaiki masalah yang diidentifikasi dengan menerapkan skrip Transact-SQL yang ditampilkan dalam tampilan.

<> change_tracking_option ::=

Mengontrol opsi pelacakan perubahan. Anda dapat mengaktifkan pelacakan perubahan, mengatur opsi, mengubah opsi, dan menonaktifkan pelacakan perubahan. Misalnya, lihat bagian Contoh nanti di artikel ini.

  • AKTIF

    Mengaktifkan pelacakan perubahan untuk database. Saat mengaktifkan pelacakan perubahan, Anda juga dapat mengatur opsi PEMBERSIHAN OTOMATIS dan UBAH RETENSI.

    • AUTO_CLEANUP = { AKTIF | NONAKTIF }

      • AKTIF

        Informasi pelacakan perubahan dihapus secara otomatis setelah periode retensi yang ditentukan.

      • TIDAK AKTIF

        Data pelacakan perubahan tidak dihapus dari database.

    • CHANGE_RETENTION = retention_period { DAYS | JAM | MENIT }

      Menentukan periode minimum untuk menyimpan informasi pelacakan perubahan dalam database. Data dihapus hanya ketika nilai AUTO_CLEANUP AKTIF.

      retention_period adalah bilangan bulat yang menentukan komponen numerik dari periode retensi.

      Periode retensi default adalah 2 hari. Periode retensi minimum adalah 1 menit. Jenis retensi default adalah DAYS.

  • TIDAK AKTIF

    Menonaktifkan pelacakan perubahan untuk database. Nonaktifkan pelacakan perubahan pada semua tabel sebelum Anda menonaktifkan pelacakan perubahan dari database.

<> cursor_option ::=

Mengontrol opsi kursor.

CURSOR_CLOSE_ON_COMMIT { ON | NONAKTIF }

  • AKTIF

    Setiap kursor terbuka saat Anda menerapkan atau mengembalikan transaksi ditutup.

  • TIDAK AKTIF

    Kursor tetap terbuka ketika transaksi dilakukan; mengembalikan transaksi menutup kursor apa pun kecuali yang didefinisikan sebagai INSENSITIVE atau STATIC.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk CURSOR_CLOSE_ON_COMMIT. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi CURSOR_CLOSE_ON_COMMIT ke NONAKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR CURSOR_CLOSE_ON_COMMIT.

Anda dapat menentukan status opsi ini dengan memeriksa is_cursor_close_on_commit_on kolom dalam tampilan katalog sys.databases atau IsCloseCursorsOnCommitEnabled properti fungsi DATABASEPROPERTYEX . Kursor secara implisit dibatalkan alokasinya hanya pada pemutusan sambungan. Untuk informasi selengkapnya, lihat MENDEKLARASIKAN KURSOR.

<> db_encryption_option ::=

Mengontrol status enkripsi database.

ENKRIPSI { AKTIF | NONAKTIF }

Mengatur database yang akan dienkripsi (AKTIF) atau tidak dienkripsi (NONAKTIF). Untuk informasi selengkapnya tentang enkripsi database, lihat Enkripsi Data Transparan, dan Enkripsi Data Transparan dengan Azure SQL Database.

Ketika enkripsi diaktifkan di tingkat database, semua grup file akan dienkripsi. Setiap grup file baru akan mewarisi properti terenkripsi. Jika ada grup file dalam database yang diatur ke BACA SAJA, operasi enkripsi database akan gagal.

Anda dapat melihat status enkripsi database dengan menggunakan tampilan manajemen dinamis sys.dm_database_encryption_keys .

<> db_update_option ::=

Mengontrol apakah pembaruan diizinkan pada database.

  • READ_ONLY

    Pengguna dapat membaca data dari database tetapi tidak mengubahnya.

    Catatan

    Untuk meningkatkan performa kueri, perbarui statistik sebelum mengatur database ke READ_ONLY. Jika statistik tambahan diperlukan setelah database diatur ke READ_ONLY, Mesin Database akan membuat statistik di tempdb. Untuk informasi selengkapnya tentang statistik untuk database baca-saja, lihat Statistik.

  • BACA_TULIS

    Database tersedia untuk operasi baca dan tulis.

Untuk mengubah status ini, Anda harus memiliki akses eksklusif ke database. Untuk informasi selengkapnya, lihat klausa SINGLE_USER.

Catatan

Pada database federasi Azure SQL Database, SET { READ_ONLY | READ_WRITE } dinonaktifkan.

<> db_user_access_option ::=

Mengontrol akses pengguna ke database.

  • RESTRICTED_USER

    Hanya memungkinkan anggota db_owner peran database tetap dan dbcreator peran sysadmin server tetap untuk menyambungkan ke database, tetapi tidak membatasi jumlah mereka. Semua koneksi ke database terputus dalam jangka waktu yang ditentukan oleh klausul penghentian pernyataan ALTER DATABASE. Setelah database beralih ke status RESTRICTED_USER, upaya koneksi oleh pengguna yang tidak memenuhi syarat ditolak. Di Azure SQL Database, harus dijalankan dari dalam database pengguna. Dari master database, Anda mungkin mengalami pesan kesalahan 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

    Semua pengguna yang memiliki izin yang sesuai untuk menyambungkan ke database diizinkan. Anda dapat menentukan status opsi ini dengan memeriksa user_access kolom dalam tampilan katalog sys.databases atau UserAccess properti fungsi DATABASEPROPERTYEX . Di Azure SQL Database, harus dijalankan dari dalam database pengguna. Dari master database, Anda mungkin mengalami pesan kesalahan 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 ::=

Mengontrol apakah transaksi berkomitmen sepenuhnya tahan lama atau tertunda tahan lama.

  • DINONAKTIFKAN

    Semua transaksi berikut SET DISABLED sepenuhnya tahan lama. Setiap opsi durabilitas yang diatur dalam blok atom atau pernyataan penerapan diabaikan.

  • DIPERBOLEHKAN

    Semua transaksi berikut SET ALLOWED sepenuhnya tahan lama atau tertunda tahan lama, tergantung pada opsi durabilitas yang ditetapkan dalam blok atom atau pernyataan penerapan.

  • DIPAKSA

    Semua transaksi berikut SET FORCED tertunda tahan lama. Setiap opsi durabilitas yang diatur dalam blok atom atau pernyataan penerapan diabaikan.

<> PARAMETERIZATION_option ::=

Mengontrol opsi parameterisasi.

PARAMETERISASI { SEDERHANA | FORCED }

  • SEDERHANA

    Kueri diparameterkan berdasarkan perilaku default database.

  • DIPAKSA

    SQL Server membuat parameter semua kueri dalam database.

Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa is_parameterization_forced kolom dalam tampilan katalog sys.databases .

<> query_store_options ::=

  • AKTIF | NONAKTIF | JELAS [ SEMUA ]

    Mengontrol apakah Penyimpanan Kueri diaktifkan dalam database ini, dan juga mengontrol penghapusan konten Penyimpanan Kueri.

    • AKTIF

      Mengaktifkan Penyimpanan Kueri. AKTIF adalah nilai default.

    • TIDAK AKTIF

      Menonaktifkan Penyimpanan Kueri.

      Catatan

      Penyimpanan Kueri tidak dapat dinonaktifkan di database tunggal Azure SQL Database dan Kumpulan Elastis. ALTER DATABASE [database] SET QUERY_STORE = OFF Menjalankan akan mengembalikan peringatan 'QUERY_STORE=OFF' is not supported in this version of SQL Server..

    • KOSONGKAN

      Hapus konten Penyimpanan Kueri.

OPERATION_MODE

Menjelaskan mode operasi Penyimpanan Kueri. Nilai yang valid adalah READ_ONLY dan READ_WRITE. Dalam mode READ_WRITE, Penyimpanan Kueri mengumpulkan dan mempertahankan rencana kueri dan informasi statistik eksekusi runtime. Dalam mode READ_ONLY, informasi dapat dibaca dari Penyimpanan Kueri, tetapi informasi baru tidak ditambahkan. Jika ruang maksimum yang dialokasikan dari Penyimpanan Kueri telah habis, Penyimpanan Kueri akan berubah adalah mode operasi menjadi READ_ONLY.

CLEANUP_POLICY

Menjelaskan kebijakan penyimpanan data Penyimpanan Kueri. STALE_QUERY_THRESHOLD_DAYS menentukan jumlah hari di mana informasi untuk kueri disimpan di Penyimpanan Kueri. STALE_QUERY_THRESHOLD_DAYS jenis besar. Nilai default adalah 30. Untuk edisi SQL Database Basic, defaultnya adalah 7 hari.

DATA_FLUSH_INTERVAL_SECONDS

Menentukan frekuensi di mana data yang ditulis ke Penyimpanan Kueri dipertahankan ke disk. Untuk mengoptimalkan performa, data yang dikumpulkan oleh Penyimpanan Kueri ditulis secara asinkron ke disk. Frekuensi di mana transfer asinkron ini terjadi dikonfigurasi dengan menggunakan argumen DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS jenis besar. Nilai defaultnya adalah 900 (15 menit).

MAX_STORAGE_SIZE_MB

Menentukan ruang yang dialokasikan ke Penyimpanan Kueri. MAX_STORAGE_SIZE_MB adalah jenis bigint.

Catatan

Di Azure SQL Database, nilai default MAX_STORAGE_SIZE_MB berbeda menurut tingkat layanan, sebagai berikut: Premium, Business Critical, dan Hyperscale: 1.024 MB; Tujuan Standar dan Umum: 100 MB; Dasar: 10 MB Nilai maksimum yang diizinkan MAX_STORAGE_SIZE_MB adalah 10.240 MB.

Catatan

MAX_STORAGE_SIZE_MB batas tidak diberlakukan secara ketat. Ukuran penyimpanan dicentang hanya saat Penyimpanan Kueri menulis data ke disk. Interval ini diatur oleh DATA_FLUSH_INTERVAL_SECONDS opsi atau opsi dialog Penyimpanan Kueri Studio Manajemen Interval Flush Data. Nilai default interval adalah 900 detik (atau 15 menit). Jika Penyimpanan Kueri telah melanggar MAX_STORAGE_SIZE_MB batas antara pemeriksaan ukuran penyimpanan, penyimpanan akan beralih ke mode baca-saja. Jika SIZE_BASED_CLEANUP_MODE diaktifkan, mekanisme pembersihan untuk memberlakukan MAX_STORAGE_SIZE_MB batas juga dipicu. Setelah cukup ruang dibersihkan, mode Penyimpanan Kueri akan secara otomatis beralih kembali ke baca-tulis.

Penting

Jika Anda berpikir bahwa pengambilan beban kerja Anda akan membutuhkan lebih dari 10 GB ruang disk, Anda mungkin harus memikirkan kembali dan mengoptimalkan beban kerja Anda untuk menggunakan kembali rencana kueri (misalnya menggunakan parameterisasi paksa, atau menyesuaikan konfigurasi Penyimpanan Kueri. Dimulai dengan SQL Server 2019 (15.x) dan di Azure SQL Database, Anda dapat mengatur QUERY_CAPTURE_MODE ke KUSTOM untuk kontrol tambahan atas kebijakan pengambilan kueri.

INTERVAL_LENGTH_MINUTES

Menentukan interval waktu di mana data statistik eksekusi runtime dikumpulkan ke dalam Penyimpanan Kueri. Untuk mengoptimalkan penggunaan ruang, statistik eksekusi runtime di penyimpanan statistik runtime dikumpulkan selama jendela waktu tetap. Jendela waktu tetap ini dikonfigurasi dengan menggunakan argumen INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES jenis besar. Nilai defaultnya adalah 60.

SIZE_BASED_CLEANUP_MODE = { AUTO | NONAKTIF }

Mengontrol apakah pembersihan akan diaktifkan secara otomatis ketika jumlah total data mendekati ukuran maksimum.

  • TIDAK AKTIF

    Pembersihan berbasis ukuran tidak akan diaktifkan secara otomatis.

  • AUTO

    Pembersihan berbasis ukuran akan diaktifkan secara otomatis ketika ukuran pada disk mencapai 90% dari max_storage_size_mb. Pembersihan berbasis ukuran menghapus kueri yang paling murah dan terlama terlebih dahulu. Ini berhenti pada sekitar 80% dari max_storage_size_mb. Ini adalah nilai konfigurasi default.

SIZE_BASED_CLEANUP_MODE adalah jenis nvarchar.

QUERY_CAPTURE_MODE { ALL | AUTO | KUSTOM | TIDAK ADA }

Menunjuk mode pengambilan kueri yang saat ini aktif. Setiap mode menentukan kebijakan pengambilan kueri tertentu.

Catatan

Kursor, kueri di dalam Prosedur Tersimpan, dan Kueri yang dikompilasi secara asli selalu diambil saat mode pengambilan kueri diatur ke SEMUA, OTOMATIS, atau KUSTOM.

  • SEMUA

    Mengambil semua kueri.

  • AUTO

    Tangkap kueri yang relevan berdasarkan jumlah eksekusi dan konsumsi sumber daya. Ini adalah nilai konfigurasi default untuk Azure SQL Database.

  • NONE

    Berhenti mengambil kueri baru. Penyimpanan Kueri akan terus mengumpulkan statistik kompilasi dan runtime untuk kueri yang sudah diambil. Gunakan konfigurasi ini dengan hati-hati karena Anda mungkin kehilangan pengambilan kueri penting.

  • KUSTOM

    Memungkinkan kontrol atas opsi QUERY_CAPTURE_POLICY.

QUERY_CAPTURE_MODE adalah jenis nvarchar.

MAX_PLANS_PER_QUERY

Menentukan jumlah maksimum paket yang dipertahankan untuk setiap kueri. MAX_PLANS_PER_QUERY adalah tipe int. Nilai defaultnya adalah 200.

WAIT_STATS_CAPTURE_MODE { ON | NONAKTIF }

Mengontrol apakah statistik tunggu akan diambil per kueri.

  • AKTIF

    Informasi statistik tunggu per kueri diambil. Nilai ini adalah nilai konfigurasi default.

  • TIDAK AKTIF

    Informasi statistik tunggu per kueri tidak akan diambil.

<> query_capture_policy_option_list :: =

Mengontrol opsi kebijakan penangkapan Penyimpanan Kueri. Kecuali untuk STALE_CAPTURE_POLICY_THRESHOLD, opsi ini menentukan kondisi OR yang perlu terjadi agar kueri diambil dalam nilai Ambang Kebijakan Pengambilan Kedaluarsa yang ditentukan.

STALE_CAPTURE_POLICY_THRESHOLD = bilangan bulat { DAYS | JAM }

Menentukan periode interval evaluasi untuk menentukan apakah kueri harus diambil. Defaultnya adalah 1 hari, dan dapat diatur dari 1 jam hingga tujuh hari. angka adalah tipe int.

EXECUTION_COUNT = bilangan bulat

Menentukan berapa kali kueri dijalankan selama periode evaluasi. Defaultnya adalah 30, yang berarti bahwa untuk Ambang Kebijakan Pengambilan Kedaluarsa default, kueri harus dijalankan setidaknya 30 kali dalam satu hari untuk dipertahankan di Penyimpanan Kueri. EXECUTION_COUNT adalah jenis int.

TOTAL_COMPILE_CPU_TIME_MS = bilangan bulat

Menentukan total waktu CPU kompilasi yang berlalu yang digunakan oleh kueri selama periode evaluasi. Defaultnya adalah 1000, yang berarti bahwa untuk Ambang Kebijakan Pengambilan Kedaluarsa default, kueri harus memiliki total setidaknya satu detik waktu CPU yang dihabiskan selama kompilasi kueri dalam satu hari untuk dipertahankan di Penyimpanan Kueri. TOTAL_COMPILE_CPU_TIME_MS adalah tipe int.

TOTAL_EXECUTION_CPU_TIME_MS = bilangan bulat

Menentukan total waktu CPU eksekusi yang berlalu yang digunakan oleh kueri selama periode evaluasi. Defaultnya adalah 100 yang berarti bahwa untuk Ambang Kebijakan Pengambilan Kedaluarsa default, kueri harus memiliki total setidaknya 100 md waktu CPU yang dihabiskan selama eksekusi dalam satu hari untuk dipertahankan di Penyimpanan Kueri. TOTAL_EXECUTION_CPU_TIME_MS adalah jenis int.

<> snapshot_option ::=

Menentukan tingkat isolasi transaksi.

ALLOW_SNAPSHOT_ISOLATION { ON | NONAKTIF }

  • AKTIF

    Mengaktifkan opsi Rekam Jepret di tingkat database. Saat diaktifkan, pernyataan DML mulai menghasilkan versi baris bahkan ketika tidak ada transaksi yang menggunakan Isolasi Rekam Jepret. Setelah opsi ini diaktifkan, transaksi dapat menentukan tingkat isolasi transaksi SNAPSHOT. Ketika transaksi berjalan di tingkat isolasi SNAPSHOT, semua pernyataan melihat rekam jepret data seperti yang ada di awal transaksi. Jika transaksi yang berjalan di tingkat isolasi SNAPSHOT mengakses data dalam beberapa database, baik ALLOW_SNAPSHOT_ISOLATION harus diatur ke AKTIF di semua database, atau setiap pernyataan dalam transaksi harus menggunakan petunjuk penguncian pada referensi apa pun dalam klausul FROM ke tabel dalam database di mana ALLOW_SNAPSHOT_ISOLATION NONAKTIF.

  • TIDAK AKTIF

    Menonaktifkan opsi Rekam Jepret di tingkat database. Transaksi tidak dapat menentukan tingkat isolasi transaksi SNAPSHOT.

Saat Anda mengatur ALLOW_SNAPSHOT_ISOLATION ke status baru (dari AKTIF ke NONAKTIF, atau dari NONAKTIF ke AKTIF), ALTER DATABASE tidak mengembalikan kontrol ke pemanggil hingga semua transaksi yang ada dalam database diterapkan. Jika database sudah dalam status yang ditentukan dalam pernyataan ALTER DATABASE, kontrol akan segera dikembalikan ke pemanggil. Jika pernyataan ALTER DATABASE tidak ditampilkan dengan cepat, gunakan sys.dm_tran_active_snapshot_database_transactions untuk menentukan apakah ada transaksi yang berjalan lama. Jika pernyataan ALTER DATABASE dibatalkan, database tetap dalam status saat ALTER DATABASE dimulai. Tampilan katalog sys.databases menunjukkan status transaksi isolasi rekam jepret dalam database. Jika snapshot_isolation_state_desc = IN_TRANSITION_TO_ON, pernyataan ALTER DATABASE .... ALLOW_SNAPSHOT_ISOLATION OFF akan menjeda enam detik dan mencoba kembali operasi.

Anda tidak dapat mengubah status ALLOW_SNAPSHOT_ISOLATION jika database OFFLINE.

Jika Anda mengatur ALLOW_SNAPSHOT_ISOLATION dalam database READ_ONLY, pengaturan akan disimpan jika database nanti diatur ke READ_WRITE.

Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa snapshot_isolation_state kolom dalam tampilan katalog sys.databases .

READ_COMMITTED_SNAPSHOT { ON | NONAKTIF }

  • AKTIF

    Mengaktifkan opsi Rekam Jepret Yang Diterapkan Baca di tingkat database. Saat diaktifkan, pernyataan DML mulai menghasilkan versi baris bahkan ketika tidak ada transaksi yang menggunakan Isolasi Rekam Jepret. Setelah opsi ini diaktifkan, transaksi yang menentukan tingkat isolasi READ COMMITTED menggunakan penerapan versi baris alih-alih mengunci. Semua pernyataan melihat rekam jepret data seperti yang ada di awal pernyataan saat transaksi berjalan di tingkat isolasi READ COMMITTED.

  • TIDAK AKTIF

    Menonaktifkan opsi Rekam Jepret Yang Diterapkan Baca di tingkat database. Transaksi yang menentukan tingkat isolasi READ COMMITTED menggunakan penguncian.

Untuk mengatur READ_COMMITTED_SNAPSHOT AKTIF atau NONAKTIF, tidak boleh ada koneksi aktif ke database kecuali untuk koneksi yang menjalankan perintah ALTER DATABASE. Namun, database tidak harus dalam mode pengguna tunggal. Anda tidak dapat mengubah status opsi ini saat database OFFLINE.

Jika Anda mengatur READ_COMMITTED_SNAPSHOT dalam database READ_ONLY, pengaturan akan disimpan saat database nanti diatur ke READ_WRITE.

READ_COMMITTED_SNAPSHOT tidak dapat diaktifkan untuk masterdatabase sistem , , tempdbatau msdb . Jika Anda mengubah pengaturan untuk model, pengaturan tersebut menjadi default untuk database baru yang dibuat, kecuali untuk tempdb.

Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa is_read_committed_snapshot_on kolom dalam tampilan katalog sys.databases .

Peringatan

Saat tabel dibuat dengan DURABILITY = SCHEMA_ONLY, dan READ_COMMITTED_SNAPSHOT kemudian diubah menggunakan ALTER DATABASE, data dalam tabel akan hilang.

Tip

Di Azure SQL Database, ALTER DATABASE perintah untuk mengatur READ_COMMITTED_SNAPSHOT AKTIF atau NONAKTIF untuk database harus dijalankan dalam master database.

MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | NONAKTIF }

  • AKTIF

    Ketika tingkat isolasi transaksi diatur ke tingkat isolasi apa pun yang lebih rendah dari SNAPSHOT, semua operasi Transact-SQL yang ditafsirkan pada tabel yang dioptimalkan memori dijalankan di bawah isolasi SNAPSHOT. Contoh tingkat isolasi yang lebih rendah dari rekam jepret adalah READ COMMITTED atau READ UNCOMMITTED. Operasi ini berjalan apakah tingkat isolasi transaksi diatur secara eksplisit pada tingkat sesi, atau default digunakan secara implisit.

  • TIDAK AKTIF

    Tidak meningkatkan tingkat isolasi transaksi untuk operasi Transact-SQL yang ditafsirkan pada tabel yang dioptimalkan memori.

Anda tidak dapat mengubah status MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT jika database OFFLINE.

Nilai defaultnya adalah NONAKTIF.

Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa is_memory_optimized_elevate_to_snapshot_on kolom dalam tampilan katalog sys.databases .

<> sql_option ::=

Mengontrol opsi kepatuhan ANSI di tingkat database.

ANSI_NULL_DEFAULT { ON | NONAKTIF }

Menentukan nilai default, NULL atau NOT NULL, dari kolom atau tipe yang ditentukan pengguna CLR di mana nullability tidak ditentukan secara eksplisit dalam pernyataan CREATE TABLE atau ALTER TABLE. Kolom yang ditentukan dengan batasan mengikuti aturan batasan apa pun pengaturan ini.

  • AKTIF

    Nilai defaultnya adalah NULL.

  • TIDAK AKTIF

    Nilai defaultnya ADALAH NOT NULL.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan tingkat database default untuk ANSI_NULL_DEFAULT. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_NULL_DEFAULT ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR ANSI_NULL_DFLT_ON.

Untuk kompatibilitas ANSI, atur opsi database ANSI_NULL_DEFAULT ke AKTIF mengubah default database menjadi NULL.

Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_null_default_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiNullDefault properti fungsi DATABASEPROPERTYEX .

ANSI_NULLS { ON | NONAKTIF }

  • AKTIF

    Semua perbandingan dengan nilai null dievaluasi ke UNKNOWN.

  • TIDAK AKTIF

    Perbandingan nilai non-Unicode dengan nilai null dievaluasi ke TRUE jika kedua nilai adalah NULL.

Penting

Dalam versi SQL Server di masa mendatang, ANSI_NULLS akan selalu AKTIF dan aplikasi apa pun yang secara eksplisit mengatur opsi ke NONAKTIF akan menghasilkan kesalahan. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk ANSI_NULLS. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_NULLS ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat SET ANSI_NULLS.

Catatan

SET ANSI_NULLS juga harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.

Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_nulls_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiNullsEnabled properti fungsi DATABASEPROPERTYEX .

ANSI_PADDING { ON | NONAKTIF }

  • AKTIF

    String diisi dengan panjang yang sama sebelum konversi. Juga diisi dengan panjang yang sama sebelum menyisipkan ke jenis data varchar atau nvarchar .

  • TIDAK AKTIF

    Menyisipkan kosong di belakang dalam nilai karakter ke dalam kolom varchar atau nvarchar . Juga meninggalkan nol di belakang dalam nilai biner yang disisipkan ke dalam kolom varbinary . Nilai tidak diisi ke panjang kolom.

    Ketika OFF ditentukan, pengaturan ini hanya memengaruhi definisi kolom baru.

Penting

Dalam versi SQL Server di masa mendatang, ANSI_PADDING akan selalu AKTIF dan aplikasi apa pun yang secara eksplisit mengatur opsi ke NONAKTIF akan menghasilkan kesalahan. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Kami menyarankan agar Anda selalu mengatur ANSI_PADDING ke AKTIF. ANSI_PADDING harus AKTIF saat Anda membuat atau memanipulasi indeks pada kolom komputasi atau tampilan terindeks.

kolom char(n) dan biner(n) yang memungkinkan null diisi ke panjang kolom saat ANSI_PADDING diatur ke AKTIF. Kosong berikutnya dan nol dipangkas saat ANSI_PADDING NONAKTIF. kolom char(n) dan biner(n) yang tidak mengizinkan null selalu diisi ke panjang kolom.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan tingkat database default untuk ANSI_PADDING. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_PADDING ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat SET ANSI_PADDING.

Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_padding_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiPaddingEnabled properti fungsi DATABASEPROPERTYEX .

ANSI_WARNINGS { ON | NONAKTIF }

  • AKTIF

    Kesalahan atau peringatan dikeluarkan ketika kondisi seperti pembagian dengan nol terjadi. Kesalahan dan peringatan juga dikeluarkan ketika nilai null muncul dalam fungsi agregat.

  • TIDAK AKTIF

    Tidak ada peringatan yang dimunculkan dan nilai null dikembalikan ketika kondisi seperti membagi demi nol terjadi.

Catatan

SET ANSI_WARNINGS harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk ANSI_WARNINGS. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_WARNINGS ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR ANSI_WARNINGS.

Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_warnings_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiWarningsEnabled properti fungsi DATABASEPROPERTYEX .

ARITHABORT { ON | NONAKTIF }

  • AKTIF

    Kueri berakhir ketika terjadi kesalahan luapan atau membagi berdasarkan nol selama eksekusi kueri.

  • TIDAK AKTIF

    Pesan peringatan ditampilkan ketika salah satu kesalahan ini terjadi. Kueri, batch, atau transaksi terus diproses seolah-olah tidak ada kesalahan yang terjadi meskipun peringatan ditampilkan.

Catatan

ATUR ARITHABORT harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.

Anda dapat menentukan status opsi ini dengan memeriksa is_arithabort_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsArithmeticAbortEnabled properti fungsi DATABASEPROPERTYEX .

COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }

Untuk informasi selengkapnya, lihat MENGUBAH Tingkat Kompatibilitas DATABASE.

CONCAT_NULL_YIELDS_NULL { ON | NONAKTIF }

  • AKTIF

    Hasil dari operasi perangkaian adalah NULL ketika salah satu operand adalah NULL. Misalnya, menggabungkan string karakter "Ini" dan NULL menyebabkan nilai NULL, alih-alih nilai "Ini".

  • TIDAK AKTIF

    Nilai null diperlakukan sebagai string karakter kosong.

Catatan

CONCAT_NULL_YIELDS_NULL harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.

Dalam versi SQL Server di masa mendatang, CONCAT_NULL_YIELDS_NULL akan selalu AKTIF dan aplikasi apa pun yang secara eksplisit mengatur opsi ke NONAKTIF akan menghasilkan kesalahan. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk CONCAT_NULL_YIELDS_NULL. Secara default, klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi CONCAT_NULL_YIELDS_NULL ke AKTIF untuk sesi saat menyambungkan ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR CONCAT_NULL_YIELDS_NULL.

Anda dapat menentukan status opsi ini dengan memeriksa is_concat_null_yields_null_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsNullConcat properti fungsi DATABASEPROPERTYEX .

NUMERIC_ROUNDABORT { ON | NONAKTIF }

  • AKTIF

    Kesalahan dihasilkan ketika hilangnya presisi terjadi dalam ekspresi.

  • TIDAK AKTIF

    Hilangnya presisi tidak menghasilkan pesan kesalahan, dan hasilnya dibulatkan ke presisi kolom atau variabel yang menyimpan hasilnya.

Penting

NUMERIC_ROUNDABORT harus diatur ke NONAKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.

Anda dapat menentukan status untuk opsi ini di is_numeric_roundabort_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsNumericRoundAbortEnabled properti fungsi DATABASEPROPERTYEX .

QUOTED_IDENTIFIER { ON | NONAKTIF }

  • AKTIF

    Tanda kutip ganda dapat digunakan untuk mengapit pengidentifikasi yang dibatasi.

    Semua string yang dibatasi oleh tanda kutip ganda ditafsirkan sebagai pengidentifikasi objek. Pengidentifikasi yang dikutip tidak harus mengikuti aturan Transact-SQL untuk pengidentifikasi. Mereka dapat menjadi kata kunci dan dapat menyertakan karakter yang tidak diizinkan dalam pengidentifikasi Transact-SQL. Jika tanda kutip ganda (") adalah bagian dari pengidentifikasi, tanda kutip ganda dapat diwakili oleh dua tanda kutip ganda ("").

  • TIDAK AKTIF

    Pengidentifikasi tidak boleh dalam tanda kutip dan harus mengikuti semua aturan Transact-SQL untuk pengidentifikasi. Literal dapat dibatasi dengan tanda kutip tunggal atau ganda.

SQL Server juga memungkinkan pengidentifikasi dibatasi oleh tanda kurung siku ([ dan ]). Pengidentifikasi kurung selalu dapat digunakan, apa pun pengaturan QUOTED_IDENTIFIER. Untuk informasi selengkapnya, lihat Pengidentifikasi Database.

Saat tabel dibuat, opsi PENGIDENTIFIKASI KUTIPan selalu disimpan sebagai AKTIF dalam metadata tabel. Opsi disimpan meskipun opsi diatur ke NONAKTIF saat tabel dibuat.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk QUOTED_IDENTIFIER. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi QUOTED_IDENTIFIER ke AKTIF, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR QUOTED_IDENTIFIER.

Anda dapat menentukan status opsi ini dengan memeriksa is_quoted_identifier_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsQuotedIdentifiersEnabled properti fungsi DATABASEPROPERTYEX .

RECURSIVE_TRIGGERS { ON | NONAKTIF }

  • AKTIF

    Penembakan rekursif pemicu AFTER diizinkan.

  • TIDAK AKTIF

    Anda dapat menentukan status opsi ini dengan memeriksa is_recursive_triggers_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsRecursiveTriggersEnabled properti fungsi DATABASEPROPERTYEX .

Catatan

Hanya rekursi langsung yang dicegah saat RECURSIVE_TRIGGERS diatur ke NONAKTIF. Untuk menonaktifkan rekursi tidak langsung, Anda juga harus mengatur opsi server pemicu berlapis ke 0.

Anda dapat menentukan status opsi ini dengan memeriksa is_recursive_triggers_on kolom dalam tampilan katalog sys.databases atau IsRecursiveTriggersEnabled properti fungsi DATABASEPROPERTYEX .

<> target_recovery_time_option ::=

Menentukan frekuensi titik pemeriksaan tidak langsung berdasarkan per database. Dimulai dengan SQL Server 2016 (13.x) nilai default untuk database baru adalah 1 menit, yang menunjukkan database akan menggunakan titik pemeriksaan tidak langsung. Untuk versi yang lebih lama, defaultnya adalah 0, yang menunjukkan bahwa database akan menggunakan titik pemeriksaan otomatis, yang frekuensinya tergantung pada pengaturan interval pemulihan instans server. Microsoft merekomendasikan 1 menit untuk sebagian besar sistem.

TARGET_RECOVERY_TIME = target_recovery_time { DETIK | MENIT }

  • target_recovery_time

    Menentukan batas maksimum pada waktu untuk memulihkan database yang ditentukan jika terjadi crash. target_recovery_time adalah tipe int.

  • DETIK

    Menunjukkan bahwa target_recovery_time dinyatakan sebagai jumlah detik.

  • MENIT

    Menunjukkan bahwa target_recovery_time dinyatakan sebagai jumlah menit.

Untuk informasi selengkapnya tentang titik pemeriksaan tidak langsung, lihat Titik Pemeriksaan Database.

DENGAN <penghentian> ::=

Menentukan kapan harus mengembalikan transaksi yang tidak lengkap saat database ditransisikan dari satu status ke status lainnya. Jika klausul penghentian dihilangkan, pernyataan ALTER DATABASE menunggu tanpa batas waktu jika ada kunci pada database. Hanya satu klausul penghentian yang dapat ditentukan, dan mengikuti klausul SET.

Catatan

Tidak semua opsi database menggunakan klausa penghentian> WITH<. Untuk informasi selengkapnya, lihat tabel di bawah Opsi pengaturan bagian "Keterangan" di artikel ini.

  • ROLLBACK SETELAH bilangan bulat [DETIK] | ROLLBACK SEGERA

    Menentukan apakah akan digulung balik setelah jumlah detik yang ditentukan atau segera.

  • NO_WAIT

    Menentukan bahwa permintaan akan gagal jika status database yang diminta atau perubahan opsi tidak dapat segera diselesaikan. Menyelesaikan dengan segera berarti tidak menunggu transaksi dilakukan atau digulung balik sendiri.

<> temporal_history_retention ::=

  • TEMPORAL_HISTORY_RETENTION { ON | NONAKTIF }

    AKTIF secara default tetapi juga secara otomatis diatur ke NONAKTIF setelah operasi pemulihan titik waktu. Untuk informasi selengkapnya termasuk cara mengaktifkan pengaturan ini, lihat Cara mengonfigurasi kebijakan penyimpanan.

    • AKTIF

      Default. Mengaktifkan kebijakan penyimpanan tabel temporal. Untuk informasi selengkapnya, lihat Mengelola retensi data historis dalam tabel temporal versi sistem.

    • TIDAK AKTIF

      Jangan melakukan kebijakan penyimpanan historis temporal.

Atur opsi

Untuk mengambil pengaturan saat ini untuk opsi database, gunakan tampilan katalog sys.databases atau DATABASEPROPERTYEX

Setelah Anda mengatur opsi database, pengaturan baru akan segera berlaku.

Anda bisa mengubah nilai default untuk salah satu opsi database untuk semua database yang baru dibuat. Untuk melakukannya, ubah opsi database yang sesuai dalam model database.

Tidak semua opsi database menggunakan klausa penghentian> WITH <atau dapat ditentukan dalam kombinasi dengan opsi lain. Tabel berikut mencantumkan opsi ini beserta opsi dan status penghentiannya.

Kategori opsi Dapat ditentukan dengan opsi lain Dapat menggunakan klausul penghentian> WITH <
<auto_option> Ya Tidak
<change_tracking_option> Ya Ya
<cursor_option> Ya Tidak
<db_encryption_option> Ya Tidak
<db_update_option> Ya Ya
<db_user_access_option> Ya Ya
<delayed_durability_option> Ya Ya
<parameterization_option> Ya Ya
ALLOW_SNAPSHOT_ISOLATION Tidak Tidak
READ_COMMITTED_SNAPSHOT Tidak Ya
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT Ya Ya
DATE_CORRELATION_OPTIMIZATION Ya Ya
<sql_option> Ya Tidak
<target_recovery_time_option> Tidak Ya

Contoh

J. Atur database ke READ_ONLY

Mengubah status database atau grup file menjadi READ_ONLY atau READ_WRITE memerlukan akses eksklusif ke database dan mungkin memerlukan waktu beberapa detik untuk diselesaikan. Contoh berikut mengatur database ke RESTRICTED_USER mode untuk membatasi akses. Contoh kemudian mengatur status AdventureWorks2022 database ke READ_ONLY dan mengembalikan akses ke database ke semua pengguna.

--Connect to [database_name];
GO
ALTER DATABASE [database_name]
SET RESTRICTED_USER;
GO
ALTER DATABASE [database_name]
SET READ_ONLY
--`SET READ_ONLY` command may take a few seconds to complete.
GO
ALTER DATABASE [database_name]
SET MULTI_USER;
GO

Untuk mengatur kembali database ke mode baca-tulis:

--Connect to [database_name];
GO
ALTER DATABASE [database_name]
SET READ_WRITE
GO

Untuk melakukan pemeriksaan:

SELECT [name], user_access_desc, is_read_only FROM sys.databases
WHERE [name] = 'database_name'
GO

B. Mengaktifkan isolasi rekam jepret pada database

Contoh berikut mengaktifkan opsi kerangka kerja isolasi rekam jepret untuk AdventureWorks2022 database.

--Connect to [database_name]
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO

Verifikasi status snapshot_isolation_framework dalam database.

--Connect to [database_name]
SELECT name, snapshot_isolation_state,
    snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'database_name';
GO

Kumpulan hasil menunjukkan bahwa kerangka kerja isolasi rekam jepret diaktifkan.

nama snapshot_isolation_state description
[nama_database] 1 AKTIF

C. Mengaktifkan, memodifikasi, atau menonaktifkan pelacakan perubahan

Contoh berikut memungkinkan pelacakan perubahan untuk AdventureWorks2022 database dan mengatur periode retensi ke 2 hari.

--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);

Contoh berikut menunjukkan cara mengubah periode retensi menjadi 3 hari.

--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);

Contoh berikut menunjukkan cara menonaktifkan pelacakan perubahan untuk AdventureWorks2022 database.

--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;

D. Mengaktifkan Penyimpanan Kueri

Contoh berikut mengaktifkan Penyimpanan Kueri dan mengonfigurasi parameter Penyimpanan Kueri.

--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. Mengaktifkan Penyimpanan Kueri dengan statistik tunggu

Contoh berikut mengaktifkan Penyimpanan Kueri dan mengonfigurasi parameternya.

--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. Mengaktifkan Penyimpanan Kueri dengan opsi kebijakan penangkapan kustom

Contoh berikut mengaktifkan Penyimpanan Kueri dan mengonfigurasi parameternya.

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

Lihat juga

Langkah berikutnya

* SQL Managed Instance *  

 

Instans Terkelola Azure SQL

Tingkat kompatibilitas adalah SET opsi tetapi dijelaskan dalam ALTER DATABASE Compatibility Level.

Catatan

Banyak opsi kumpulan database dapat dikonfigurasi untuk sesi saat ini dengan menggunakan Pernyataan SET dan sering dikonfigurasi oleh aplikasi saat tersambung. Opsi set tingkat sesi mengambil alih ALTER DATABASE SET nilai. Opsi database yang dijelaskan di bagian berikut ini adalah nilai yang dapat diatur untuk sesi yang tidak secara eksplisit menyediakan nilai opsi set lainnya.

Sintaks

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 }

Argumen

database_name

Adalah nama database yang akan dimodifikasi.

CURRENT

CURRENT menjalankan tindakan dalam database saat ini. CURRENT tidak didukung untuk semua opsi dalam semua konteks. Jika CURRENT gagal, berikan nama database.

<> auto_option ::=

Mengontrol opsi otomatis.

AUTO_CREATE_STATISTICS { ON | NONAKTIF }

  • AKTIF

    Pengoptimal Kueri membuat statistik pada kolom tunggal dalam predikat kueri, seperlunya, untuk meningkatkan rencana kueri dan performa kueri. Statistik kolom tunggal ini dibuat saat Pengoptimal Kueri mengkompilasi kueri. Statistik kolom tunggal dibuat hanya pada kolom yang belum menjadi kolom pertama dari objek statistik yang ada.

    Defaultnya adalah ON. Kami menyarankan agar Anda menggunakan pengaturan default untuk sebagian besar database.

  • TIDAK AKTIF

    Pengoptimal Kueri tidak membuat statistik pada satu kolom dalam predikat kueri saat mengkompilasi kueri. Mengatur opsi ini ke NONAKTIF dapat menyebabkan rencana kueri suboptimal dan performa kueri yang terdegradasi.

    Anda dapat menentukan status opsi ini dengan memeriksa is_auto_create_stats_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAutoCreateStatistics properti fungsi DATABASEPROPERTYEX .

    Untuk informasi selengkapnya, lihat bagian "Opsi statistik" di Statistik.

INKREMENTAL = AKTIF | OFF

Atur AUTO_CREATE_STATISTICS ke AKTIF, dan atur INCREMENTAL ke AKTIF. Pengaturan ini membuat statistik yang dibuat secara otomatis sebagai bertahap setiap kali statistik inkremental didukung. Nilai defaultnya adalah NONAKTIF. Untuk informasi selengkapnya, lihat MEMBUAT STATISTIK.

AUTO_SHRINK { ON | NONAKTIF }

  • AKTIF

    File database adalah kandidat untuk penyusutan berkala. Kecuali Anda memiliki persyaratan tertentu, jangan atur opsi database AUTO_SHRINK ke AKTIF. Untuk informasi selengkapnya, lihat Menyusutkan database.

    File data dan file log dapat disusutkan secara otomatis. AUTO_SHRINK mengurangi ukuran log transaksi hanya jika Anda mengatur database ke model pemulihan SIMPLE atau jika Anda mencadangkan log. Saat diatur ke NONAKTIF, file database tidak secara otomatis menyusut selama pemeriksaan berkala untuk ruang yang tidak digunakan.

    Opsi AUTO_SHRINK menyebabkan file diciutkan ketika lebih dari 25 persen file berisi ruang yang tidak digunakan. Opsi ini menyebabkan file menyusut ke salah satu dari dua ukuran. Ini menyusut ke mana pun yang lebih besar:

    • Ukuran di mana 25 persen dari file adalah ruang yang tidak digunakan
    • Ukuran file ketika dibuat

    Anda tidak dapat menyusutkan database baca-saja.

  • TIDAK AKTIF

    File database tidak disusutkan secara otomatis selama pemeriksaan berkala untuk ruang yang tidak digunakan.

Anda dapat menentukan status opsi ini dengan memeriksa is_auto_shrink_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAutoShrink properti fungsi DATABASEPROPERTYEX .

Catatan

Opsi AUTO_SHRINK tidak tersedia dalam Database Terkandung.

AUTO_UPDATE_STATISTICS { ON | NONAKTIF }

  • AKTIF

    Menentukan bahwa Pengoptimal Kueri memperbarui statistik saat digunakan oleh kueri dan kapan mungkin sudah kedaluarsa. Statistik menjadi kedaluarsa setelah operasi sisipkan, perbarui, hapus, atau gabungkan mengubah distribusi data dalam tabel atau tampilan terindeks. Pengoptimal Kueri menentukan kapan statistik mungkin kedaluarsa dengan menghitung jumlah modifikasi data sejak pembaruan statistik terakhir dan membandingkan jumlah modifikasi dengan ambang batas. Ambang didasarkan pada jumlah baris dalam tabel atau tampilan terindeks.

    Pengoptimal Kueri memeriksa statistik yang sudah kedaluwarsa sebelum mengkompilasi kueri dan menjalankan rencana kueri yang di-cache. Pengoptimal Kueri menggunakan kolom, tabel, dan tampilan terindeks dalam predikat kueri untuk menentukan statistik mana yang mungkin sudah kedaluarsa. Pengoptimal Kueri menentukan informasi ini sebelum mengkompilasi kueri. Sebelum menjalankan rencana kueri yang di-cache, Mesin Database memverifikasi bahwa rencana kueri mereferensikan statistik terbaru.

    Opsi AUTO_UPDATE_STATISTICS berlaku untuk statistik yang dibuat untuk indeks, kolom tunggal dalam predikat kueri, dan statistik yang dibuat dengan menggunakan pernyataan CREATE STATISTICS. Opsi ini juga berlaku untuk statistik yang difilter.

    Defaultnya adalah ON. Kami menyarankan agar Anda menggunakan pengaturan default untuk sebagian besar database.

    Gunakan opsi AUTO_UPDATE_STATISTICS_ASYNC untuk menentukan apakah statistik diperbarui secara sinkron atau asinkron.

  • TIDAK AKTIF

    Menentukan bahwa Pengoptimal Kueri tidak memperbarui statistik saat digunakan oleh kueri. Pengoptimal Kueri juga tidak memperbarui statistik saat mungkin sudah kedaluarsa. Mengatur opsi ini ke NONAKTIF dapat menyebabkan rencana kueri suboptimal dan performa kueri yang terdegradasi.

Anda dapat menentukan status opsi ini dengan memeriksa is_auto_update_stats_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAutoUpdateStatistics properti fungsi DATABASEPROPERTYEX .

Untuk informasi selengkapnya, lihat bagian "Menggunakan opsi statistik di seluruh database" dalam Statistik.

AUTO_UPDATE_STATISTICS_ASYNC { ON | NONAKTIF }

  • AKTIF

    Menentukan bahwa pembaruan statistik untuk opsi AUTO_UPDATE_STATISTICS tidak sinkron. Pengoptimal Kueri tidak menunggu pembaruan statistik selesai sebelum mengkompilasi kueri.

    Mengatur opsi ini ke AKTIF tidak berpengaruh kecuali AUTO_UPDATE_STATISTICS diatur ke AKTIF.

    Secara default, opsi AUTO_UPDATE_STATISTICS_ASYNC diatur ke NONAKTIF, dan statistik pembaruan Pengoptimal Kueri secara sinkron.

  • TIDAK AKTIF

    Menentukan bahwa pembaruan statistik untuk opsi AUTO_UPDATE_STATISTICS sinkron. Pengoptimal Kueri menunggu pembaruan statistik selesai sebelum mengkompilasi kueri.

    Mengatur opsi ini ke NONAKTIF tidak berpengaruh kecuali AUTO_UPDATE_STATISTICS diatur ke AKTIF.

Anda dapat menentukan status opsi ini dengan memeriksa is_auto_update_stats_async_on kolom dalam tampilan katalog sys.databases .

Untuk informasi selengkapnya yang menjelaskan kapan harus menggunakan pembaruan statistik sinkron atau asinkron, lihat bagian "Menggunakan opsi statistik di seluruh database" dalam Statistik.

<> automatic_tuning_option ::=

Mengontrol opsi otomatis untuk Penyetelan otomatis.

FORCE_LAST_GOOD_PLAN = { DEFAULT | AKTIF | NONAKTIF }

Mengaktifkan atau menonaktifkan FORCE_LAST_GOOD_PLAN opsi Penyetelan otomatis.

  • DEFAULT

    Nilai default untuk Azure SQL Managed Instance adalah AKTIF.

  • AKTIF

    Mesin Database secara otomatis memaksa rencana baik terakhir yang diketahui pada kueri Transact-SQL di mana rencana kueri baru menyebabkan regresi performa. Mesin Database terus memantau performa kueri kueri Transact-SQL dengan paket paksa. Jika terdapat peningkatan performa, Mesin Database akan terus menggunakan rencana optimal terakhir yang diketahui. Jika tidak terdapat peningkatan performa, Mesin Database akan menghasilkan rencana kueri baru. Pernyataan akan gagal jika Penyimpanan Kueri tidak diaktifkan atau jika tidak dalam mode Baca-Tulis . Ini adalah nilai default.

  • TIDAK AKTIF

    Mesin Database melaporkan potensi regresi performa kueri yang disebabkan oleh perubahan rencana kueri dalam tampilan sys.dm_db_tuning_recommendations . Namun, rekomendasi ini tidak diterapkan secara otomatis. Pengguna dapat memantau rekomendasi aktif dan memperbaiki masalah yang diidentifikasi dengan menerapkan skrip Transact-SQL yang ditampilkan dalam tampilan.

<> change_tracking_option ::=

Mengontrol opsi pelacakan perubahan. Anda dapat mengaktifkan pelacakan perubahan, mengatur opsi, mengubah opsi, dan menonaktifkan pelacakan perubahan. Misalnya, lihat bagian Contoh nanti di artikel ini.

  • AKTIF

    Mengaktifkan pelacakan perubahan untuk database. Saat mengaktifkan pelacakan perubahan, Anda juga dapat mengatur opsi PEMBERSIHAN OTOMATIS dan UBAH RETENSI.

AUTO_CLEANUP = { AKTIF | NONAKTIF }

  • AKTIF

    Informasi pelacakan perubahan dihapus secara otomatis setelah periode retensi yang ditentukan.

  • TIDAK AKTIF

    Data pelacakan perubahan tidak dihapus dari database.

CHANGE_RETENTION = retention_period { DAYS | JAM | MENIT }

Menentukan periode minimum untuk menyimpan informasi pelacakan perubahan dalam database. Data dihapus hanya ketika nilai AUTO_CLEANUP AKTIF.

retention_period adalah bilangan bulat yang menentukan komponen numerik dari periode retensi.

Periode retensi default adalah 2 hari. Periode retensi minimum adalah 1 menit. Jenis retensi default adalah DAYS.

  • TIDAK AKTIF

    Menonaktifkan pelacakan perubahan untuk database. Nonaktifkan pelacakan perubahan pada semua tabel sebelum Anda menonaktifkan pelacakan perubahan dari database.

<> cursor_option ::=

Mengontrol opsi kursor.

CURSOR_CLOSE_ON_COMMIT { ON | NONAKTIF }

  • AKTIF

    Setiap kursor terbuka saat Anda menerapkan atau mengembalikan transaksi ditutup.

  • TIDAK AKTIF

    Kursor tetap terbuka ketika transaksi dilakukan; mengembalikan transaksi menutup kursor apa pun kecuali yang didefinisikan sebagai INSENSITIVE atau STATIC.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk CURSOR_CLOSE_ON_COMMIT. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi CURSOR_CLOSE_ON_COMMIT ke NONAKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR CURSOR_CLOSE_ON_COMMIT.

Anda dapat menentukan status opsi ini dengan memeriksa kolom dalam tampilan katalog sys.databases atau properti IsCloseCursorsOnCommitEnabled dari fungsi DATABASEPROPERTYEX.is_cursor_close_on_commit_on Kursor secara implisit dibatalkan alokasinya hanya pada pemutusan sambungan. Untuk informasi selengkapnya, lihat MENDEKLARASIKAN KURSOR.

<> db_encryption_option ::=

Mengontrol status enkripsi database.

ENKRIPSI { AKTIF | NONAKTIF }

Mengatur database yang akan dienkripsi (AKTIF) atau tidak dienkripsi (NONAKTIF). Untuk informasi selengkapnya tentang enkripsi database, lihat Enkripsi Data Transparan, dan Enkripsi Data Transparan dengan Azure SQL Database.

Ketika enkripsi diaktifkan di tingkat database, semua grup file akan dienkripsi. Setiap grup file baru akan mewarisi properti terenkripsi. Jika ada grup file dalam database yang diatur ke BACA SAJA, operasi enkripsi database akan gagal.

Anda dapat melihat status enkripsi database dengan menggunakan tampilan manajemen dinamis sys.dm_database_encryption_keys .

<> delayed_durability_option ::=

Mengontrol apakah transaksi berkomitmen sepenuhnya tahan lama atau tertunda tahan lama.

  • DINONAKTIFKAN

    Semua transaksi berikut SET DISABLED sepenuhnya tahan lama. Setiap opsi durabilitas yang diatur dalam blok atom atau pernyataan penerapan diabaikan.

  • DIPERBOLEHKAN

    Semua transaksi berikut SET ALLOWED sepenuhnya tahan lama atau tertunda tahan lama, tergantung pada opsi durabilitas yang ditetapkan dalam blok atom atau pernyataan penerapan.

  • DIPAKSA

    Semua transaksi berikut SET FORCED tertunda tahan lama. Setiap opsi durabilitas yang diatur dalam blok atom atau pernyataan penerapan diabaikan.

<> PARAMETERIZATION_option ::=

Mengontrol opsi parameterisasi.

PARAMETERISASI { SEDERHANA | FORCED }

  • SEDERHANA

    Kueri diparameterkan berdasarkan perilaku default database.

  • DIPAKSA

SQL Server membuat parameter semua kueri dalam database.

Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa is_parameterization_forced kolom dalam tampilan katalog sys.databases .

<> query_store_options ::=

  • AKTIF | NONAKTIF | JELAS [ SEMUA ]

    Mengontrol apakah Penyimpanan Kueri diaktifkan dalam database ini, dan juga mengontrol penghapusan konten Penyimpanan Kueri.

    • AKTIF

      Mengaktifkan Penyimpanan Kueri.

    • TIDAK AKTIF

      Menonaktifkan Penyimpanan Kueri. Ini adalah nilai default.

    • KOSONGKAN

      Hapus konten Penyimpanan Kueri.

OPERATION_MODE

Menjelaskan mode operasi Penyimpanan Kueri. Nilai yang valid adalah READ_ONLY dan READ_WRITE. Dalam mode READ_WRITE, Penyimpanan Kueri mengumpulkan dan mempertahankan rencana kueri dan informasi statistik eksekusi runtime. Dalam mode READ_ONLY, informasi dapat dibaca dari Penyimpanan Kueri, tetapi informasi baru tidak ditambahkan. Jika ruang maksimum yang dialokasikan dari Penyimpanan Kueri telah habis, Penyimpanan Kueri akan berubah adalah mode operasi menjadi READ_ONLY.

CLEANUP_POLICY

Menjelaskan kebijakan penyimpanan data Penyimpanan Kueri. STALE_QUERY_THRESHOLD_DAYS menentukan jumlah hari di mana informasi untuk kueri disimpan di Penyimpanan Kueri. STALE_QUERY_THRESHOLD_DAYS jenis besar. Nilai default adalah 30. Untuk edisi SQL Database Basic, defaultnya adalah 7 hari.

DATA_FLUSH_INTERVAL_SECONDS

Menentukan frekuensi di mana data yang ditulis ke Penyimpanan Kueri dipertahankan ke disk. Untuk mengoptimalkan performa, data yang dikumpulkan oleh Penyimpanan Kueri ditulis secara asinkron ke disk. Frekuensi di mana transfer asinkron ini terjadi dikonfigurasi dengan menggunakan argumen DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS jenis besar. Nilai defaultnya adalah 900 (15 menit).

MAX_STORAGE_SIZE_MB

Menentukan ruang yang dialokasikan ke Penyimpanan Kueri. MAX_STORAGE_SIZE_MB adalah jenis bigint. Nilai defaultnya adalah 100 MB.

MAX_STORAGE_SIZE_MB batas tidak diberlakukan secara ketat. Ukuran penyimpanan dicentang hanya saat Penyimpanan Kueri menulis data ke disk. Interval ini diatur oleh DATA_FLUSH_INTERVAL_SECONDS opsi atau opsi dialog Penyimpanan Kueri Studio Manajemen Interval Flush Data. Nilai default interval adalah 900 detik (atau 15 menit).

Jika Penyimpanan Kueri telah melanggar MAX_STORAGE_SIZE_MB batas antara pemeriksaan ukuran penyimpanan, penyimpanan akan beralih ke mode baca-saja. Jika SIZE_BASED_CLEANUP_MODE diaktifkan, mekanisme pembersihan untuk memberlakukan MAX_STORAGE_SIZE_MB batas juga dipicu.

Setelah cukup ruang dibersihkan, mode Penyimpanan Kueri akan secara otomatis beralih kembali ke baca-tulis.

Penting

  • Jika Anda berpikir bahwa pengambilan beban kerja Anda akan membutuhkan lebih dari 10 GB ruang disk, Anda mungkin harus memikirkan kembali dan mengoptimalkan beban kerja Anda untuk menggunakan kembali rencana kueri (misalnya menggunakan parameterisasi paksa, atau menyesuaikan konfigurasi Penyimpanan Kueri.
  • Dimulai dengan SQL Server 2019 (15.x) dan di Azure SQL Database, Anda dapat mengatur QUERY_CAPTURE_MODE ke KUSTOM untuk kontrol tambahan atas kebijakan pengambilan kueri.
  • MAX_STORAGE_SIZE_MB batas pengaturan adalah 10.240 MB pada Azure SQL Managed Instance.

INTERVAL_LENGTH_MINUTES

Menentukan interval waktu di mana data statistik eksekusi runtime dikumpulkan ke dalam Penyimpanan Kueri. Untuk mengoptimalkan penggunaan ruang, statistik eksekusi runtime di penyimpanan statistik runtime dikumpulkan selama jendela waktu tetap. Jendela waktu tetap ini dikonfigurasi dengan menggunakan argumen INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES jenis besar. Nilai defaultnya adalah 60.

SIZE_BASED_CLEANUP_MODE = { AUTO | NONAKTIF }

Mengontrol apakah pembersihan akan diaktifkan secara otomatis ketika jumlah total data mendekati ukuran maksimum.

  • TIDAK AKTIF

    Pembersihan berbasis ukuran tidak akan diaktifkan secara otomatis.

  • AUTO

    Pembersihan berbasis ukuran akan diaktifkan secara otomatis ketika ukuran pada disk mencapai 90% dari max_storage_size_mb. Pembersihan berbasis ukuran menghapus kueri yang paling murah dan terlama terlebih dahulu. Ini berhenti pada sekitar 80% dari max_storage_size_mb. Ini adalah nilai konfigurasi default.

SIZE_BASED_CLEANUP_MODE adalah jenis nvarchar.

QUERY_CAPTURE_MODE { ALL | AUTO | KUSTOM | TIDAK ADA }

Menunjuk mode pengambilan kueri yang saat ini aktif.

  • SEMUA

    Semua kueri diambil.

  • AUTO

    Tangkap kueri yang relevan berdasarkan jumlah eksekusi dan konsumsi sumber daya. Ini adalah nilai konfigurasi default untuk Azure SQL Database.

  • NONE

    Berhenti mengambil kueri baru. Penyimpanan Kueri akan terus mengumpulkan statistik kompilasi dan runtime untuk kueri yang sudah diambil. Gunakan konfigurasi ini dengan hati-hati karena Anda mungkin kehilangan pengambilan kueri penting.

QUERY_CAPTURE_MODE adalah jenis nvarchar.

MAX_PLANS_PER_QUERY

Bilangan bulat yang mewakili jumlah maksimum paket yang dipertahankan untuk setiap kueri. MAX_PLANS_PER_QUERY adalah tipe int. Nilai defaultnya adalah 200.

WAIT_STATS_CAPTURE_MODE { ON | NONAKTIF }

Mengontrol apakah statistik tunggu akan diambil per kueri.

  • AKTIF

    Informasi statistik tunggu per kueri diambil. Nilai ini adalah nilai konfigurasi default.

  • TIDAK AKTIF

    Informasi statistik tunggu per kueri tidak akan diambil.

<> query_capture_policy_option_list :: =

Mengontrol opsi kebijakan penangkapan Penyimpanan Kueri. Kecuali untuk STALE_CAPTURE_POLICY_THRESHOLD, opsi ini menentukan kondisi OR yang perlu terjadi agar kueri diambil dalam nilai Ambang Kebijakan Pengambilan Kedaluarsa yang ditentukan.

STALE_CAPTURE_POLICY_THRESHOLD = bilangan bulat { DAYS | JAM }

Menentukan periode interval evaluasi untuk menentukan apakah kueri harus diambil. Defaultnya adalah 1 hari, dan dapat diatur dari 1 jam hingga tujuh hari.

EXECUTION_COUNT = bilangan bulat

Menentukan berapa kali kueri dijalankan selama periode evaluasi. Defaultnya adalah 30, yang berarti bahwa untuk Ambang Kebijakan Pengambilan Kedaluarsa default, kueri harus dijalankan setidaknya 30 kali dalam satu hari untuk dipertahankan di Penyimpanan Kueri. EXECUTION_COUNT adalah jenis int.

TOTAL_COMPILE_CPU_TIME_MS = bilangan bulat

Menentukan total waktu CPU kompilasi yang berlalu yang digunakan oleh kueri selama periode evaluasi. Defaultnya adalah 1000, yang berarti bahwa untuk Ambang Kebijakan Pengambilan Kedaluarsa default, kueri harus memiliki total setidaknya satu detik waktu CPU yang dihabiskan selama kompilasi kueri dalam satu hari untuk dipertahankan di Penyimpanan Kueri. TOTAL_COMPILE_CPU_TIME_MS adalah tipe int.

TOTAL_EXECUTION_CPU_TIME_MS = bilangan bulat

Menentukan total waktu CPU eksekusi yang berlalu yang digunakan oleh kueri selama periode evaluasi. Defaultnya adalah 100, yang berarti bahwa untuk Ambang Kebijakan Pengambilan Kedaluarsa default, kueri harus memiliki total setidaknya 100 md waktu CPU yang dihabiskan selama eksekusi dalam satu hari untuk dipertahankan di Penyimpanan Kueri. TOTAL_EXECUTION_CPU_TIME_MS adalah jenis int.

<> snapshot_option ::=

Menentukan tingkat isolasi transaksi.

ALLOW_SNAPSHOT_ISOLATION { ON | NONAKTIF }

  • AKTIF

    Mengaktifkan opsi Rekam Jepret di tingkat database. Saat diaktifkan, pernyataan DML mulai menghasilkan versi baris bahkan ketika tidak ada transaksi yang menggunakan Isolasi Rekam Jepret. Setelah opsi ini diaktifkan, transaksi dapat menentukan tingkat isolasi transaksi SNAPSHOT. Ketika transaksi berjalan di tingkat isolasi SNAPSHOT, semua pernyataan melihat rekam jepret data seperti yang ada di awal transaksi. Jika transaksi yang berjalan di tingkat isolasi SNAPSHOT mengakses data dalam beberapa database, baik ALLOW_SNAPSHOT_ISOLATION harus diatur ke AKTIF di semua database, atau setiap pernyataan dalam transaksi harus menggunakan petunjuk penguncian pada referensi apa pun dalam klausul FROM ke tabel dalam database di mana ALLOW_SNAPSHOT_ISOLATION NONAKTIF.

  • TIDAK AKTIF

    Menonaktifkan opsi Rekam Jepret di tingkat database. Transaksi tidak dapat menentukan tingkat isolasi transaksi SNAPSHOT.

Saat Anda mengatur ALLOW_SNAPSHOT_ISOLATION ke status baru (dari AKTIF ke NONAKTIF, atau dari NONAKTIF ke AKTIF), ALTER DATABASE tidak mengembalikan kontrol ke pemanggil hingga semua transaksi yang ada dalam database diterapkan. Jika database sudah dalam status yang ditentukan dalam pernyataan ALTER DATABASE, kontrol akan segera dikembalikan ke pemanggil. Jika pernyataan ALTER DATABASE tidak ditampilkan dengan cepat, gunakan sys.dm_tran_active_snapshot_database_transactions untuk menentukan apakah ada transaksi yang berjalan lama. Jika pernyataan ALTER DATABASE dibatalkan, database tetap dalam status saat ALTER DATABASE dimulai. Tampilan katalog sys.databases menunjukkan status transaksi isolasi rekam jepret dalam database. Jika snapshot_isolation_state_desc = IN_TRANSITION_TO_ON, pernyataan ALTER DATABASE ... ALLOW_SNAPSHOT_ISOLATION OFF akan menjeda enam detik dan mencoba kembali operasi.

Anda tidak dapat mengubah status ALLOW_SNAPSHOT_ISOLATION jika database OFFLINE.

Anda dapat mengubah pengaturan ALLOW_SNAPSHOT_ISOLATION untuk masterdatabase , , modelmsdb, dan tempdb . Pengaturan disimpan setiap kali instans Mesin Database dihentikan dan dimulai ulang jika Anda mengubah pengaturan untuk tempdb. Jika Anda mengubah pengaturan untuk database sistem, pengaturan tersebut model menjadi default untuk database baru apa pun yang dibuat, kecuali untuk tempdb.

Opsinya adalah AKTIF, secara default, untuk master database dan msdb .

Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa snapshot_isolation_state kolom dalam tampilan katalog sys.databases .

READ_COMMITTED_SNAPSHOT { ON | NONAKTIF }

  • AKTIF

    Mengaktifkan opsi Rekam Jepret Yang Diterapkan Baca di tingkat database. Saat diaktifkan, pernyataan DML mulai menghasilkan versi baris bahkan ketika tidak ada transaksi yang menggunakan Isolasi Rekam Jepret. Setelah opsi ini diaktifkan, transaksi yang menentukan tingkat isolasi READ COMMITTED menggunakan penerapan versi baris alih-alih mengunci. Semua pernyataan melihat rekam jepret data seperti yang ada di awal pernyataan saat transaksi berjalan di tingkat isolasi READ COMMITTED.

  • TIDAK AKTIF

    Menonaktifkan opsi Rekam Jepret yang Diterapkan Baca di tingkat database. Transaksi yang menentukan tingkat isolasi READ COMMITTED menggunakan penguncian.

Untuk mengatur READ_COMMITTED_SNAPSHOT ke AKTIF atau NONAKTIF, tidak boleh ada koneksi aktif ke database kecuali untuk koneksi yang menjalankan perintah UBAH DATABASE. Namun, database tidak harus dalam mode pengguna tunggal. Anda tidak dapat mengubah status opsi ini saat database OFFLINE.

READ_COMMITTED_SNAPSHOT tidak dapat diaktifkan untuk masterdatabase sistem , , tempdbatau msdb . Jika Anda mengubah pengaturan untuk database sistem, pengaturan tersebut model menjadi default untuk database baru yang dibuat, kecuali untuk tempdb.

Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa is_read_committed_snapshot_on kolom dalam tampilan katalog sys.databases .

Peringatan

Saat tabel dibuat dengan DURABILITY = SCHEMA_ONLY, dan READ_COMMITTED_SNAPSHOT kemudian diubah menggunakan ALTER DATABASE, data dalam tabel akan hilang.

MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | NONAKTIF }

  • AKTIF

    Ketika tingkat isolasi transaksi diatur ke tingkat isolasi apa pun yang lebih rendah dari SNAPSHOT, semua operasi Transact-SQL yang ditafsirkan pada tabel yang dioptimalkan memori dijalankan di bawah isolasi SNAPSHOT. Contoh tingkat isolasi yang lebih rendah dari rekam jepret adalah READ COMMITTED atau READ UNCOMMITTED. Operasi ini berjalan apakah tingkat isolasi transaksi diatur secara eksplisit pada tingkat sesi, atau default digunakan secara implisit.

  • TIDAK AKTIF

    Tidak meningkatkan tingkat isolasi transaksi untuk operasi Transact-SQL yang ditafsirkan pada tabel yang dioptimalkan memori.

Anda tidak dapat mengubah status MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT jika database OFFLINE.

Nilai defaultnya adalah NONAKTIF.

Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa is_memory_optimized_elevate_to_snapshot_on kolom dalam tampilan katalog sys.databases .

<> sql_option ::=

Mengontrol opsi kepatuhan ANSI di tingkat database.

ANSI_NULL_DEFAULT { ON | NONAKTIF }

Menentukan nilai default, NULL atau NOT NULL, dari kolom atau tipe yang ditentukan pengguna CLR di mana nullability tidak ditentukan secara eksplisit dalam pernyataan CREATE TABLE atau ALTER TABLE. Kolom yang ditentukan dengan batasan mengikuti aturan batasan apa pun pengaturan ini.

  • AKTIF

    Nilai defaultnya adalah NULL.

  • TIDAK AKTIF

    Nilai defaultnya ADALAH NOT NULL.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan tingkat database default untuk ANSI_NULL_DEFAULT. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_NULL_DEFAULT ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR ANSI_NULL_DFLT_ON.

Untuk kompatibilitas ANSI, atur opsi database ANSI_NULL_DEFAULT ke AKTIF mengubah default database menjadi NULL.

Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_null_default_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiNullDefault properti fungsi DATABASEPROPERTYEX .

ANSI_NULLS { ON | NONAKTIF }

  • AKTIF

    Semua perbandingan dengan nilai null dievaluasi ke UNKNOWN.

  • TIDAK AKTIF

    Perbandingan nilai non-Unicode dengan nilai null dievaluasi ke TRUE jika kedua nilai adalah NULL.

Penting

Dalam versi SQL Server di masa mendatang, ANSI_NULLS akan selalu AKTIF dan aplikasi apa pun yang secara eksplisit mengatur opsi ke NONAKTIF akan menghasilkan kesalahan. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk ANSI_NULLS. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_NULLS ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat SET ANSI_NULLS.

Penting

SET ANSI_NULLS juga harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.

Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_nulls_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiNullsEnabled properti fungsi DATABASEPROPERTYEX .

ANSI_PADDING { ON | NONAKTIF }

  • AKTIF

    String diisi dengan panjang yang sama sebelum konversi. Juga diisi dengan panjang yang sama sebelum menyisipkan ke jenis data varchar atau nvarchar .

  • TIDAK AKTIF

    Menyisipkan kosong di belakang dalam nilai karakter ke dalam kolom varchar atau nvarchar . Juga meninggalkan nol di belakang dalam nilai biner yang disisipkan ke dalam kolom varbinary . Nilai tidak diisi ke panjang kolom.

    Ketika OFF ditentukan, pengaturan ini hanya memengaruhi definisi kolom baru.

Penting

Dalam versi SQL Server di masa mendatang, ANSI_PADDING akan selalu AKTIF dan aplikasi apa pun yang secara eksplisit mengatur opsi ke NONAKTIF akan menghasilkan kesalahan. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Kami menyarankan agar Anda selalu mengatur ANSI_PADDING ke AKTIF. ANSI_PADDING harus AKTIF saat Anda membuat atau memanipulasi indeks pada kolom komputasi atau tampilan terindeks.

kolom char(n) dan biner(n) yang memungkinkan null diisi ke panjang kolom saat ANSI_PADDING diatur ke AKTIF. Kosong berikutnya dan nol dipangkas saat ANSI_PADDING NONAKTIF. kolom char(n) dan biner(n) yang tidak mengizinkan null selalu diisi ke panjang kolom.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan tingkat database default untuk ANSI_PADDING. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_PADDING ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat SET ANSI_PADDING.

Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_padding_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiPaddingEnabled properti fungsi DATABASEPROPERTYEX .

ANSI_WARNINGS { ON | NONAKTIF }

  • AKTIF

    Kesalahan atau peringatan dikeluarkan ketika kondisi seperti pembagian dengan nol terjadi. Kesalahan dan peringatan juga dikeluarkan ketika nilai null muncul dalam fungsi agregat.

  • TIDAK AKTIF

    Tidak ada peringatan yang dimunculkan dan nilai null dikembalikan ketika kondisi seperti membagi demi nol terjadi.

Penting

SET ANSI_WARNINGS harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk ANSI_WARNINGS. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_WARNINGS ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR ANSI_WARNINGS.

Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_warnings_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiWarningsEnabled properti fungsi DATABASEPROPERTYEX .

ARITHABORT { ON | NONAKTIF }

  • AKTIF

    Kueri berakhir ketika terjadi kesalahan luapan atau membagi berdasarkan nol selama eksekusi kueri.

  • TIDAK AKTIF

    Pesan peringatan ditampilkan ketika salah satu kesalahan ini terjadi. Kueri, batch, atau transaksi terus diproses seolah-olah tidak ada kesalahan yang terjadi meskipun peringatan ditampilkan.

Penting

ATUR ARITHABORT harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.

Anda dapat menentukan status opsi ini dengan memeriksa is_arithabort_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsArithmeticAbortEnabled properti fungsi DATABASEPROPERTYEX .

COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }

Untuk informasi selengkapnya, lihat MENGUBAH Tingkat Kompatibilitas DATABASE.

CONCAT_NULL_YIELDS_NULL { ON | NONAKTIF }

  • AKTIF

    Hasil dari operasi perangkaian adalah NULL ketika salah satu operand adalah NULL. Misalnya, menggabungkan string karakter "Ini" dan NULL menyebabkan nilai NULL, alih-alih nilai "Ini".

  • TIDAK AKTIF

    Nilai null diperlakukan sebagai string karakter kosong.

Penting

CONCAT_NULL_YIELDS_NULL harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.

Dalam versi SQL Server di masa mendatang, CONCAT_NULL_YIELDS_NULL akan selalu AKTIF dan aplikasi apa pun yang secara eksplisit mengatur opsi ke NONAKTIF akan menghasilkan kesalahan. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk CONCAT_NULL_YIELDS_NULL. Secara default, klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi CONCAT_NULL_YIELDS_NULL ke AKTIF untuk sesi saat menyambungkan ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR CONCAT_NULL_YIELDS_NULL.

Anda dapat menentukan status opsi ini dengan memeriksa is_concat_null_yields_null_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsNullConcat properti fungsi DATABASEPROPERTYEX .

NUMERIC_ROUNDABORT { ON | NONAKTIF }

  • AKTIF

    Kesalahan dihasilkan ketika hilangnya presisi terjadi dalam ekspresi.

  • TIDAK AKTIF

    Hilangnya presisi tidak menghasilkan pesan kesalahan, dan hasilnya dibulatkan ke presisi kolom atau variabel yang menyimpan hasilnya.

Penting

NUMERIC_ROUNDABORT harus diatur ke NONAKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.

Anda dapat menentukan status opsi ini di is_numeric_roundabort_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsNumericRoundAbortEnabled properti fungsi DATABASEPROPERTYEX .

QUOTED_IDENTIFIER { ON | NONAKTIF }

  • AKTIF

    Tanda kutip ganda dapat digunakan untuk mengapit pengidentifikasi yang dibatasi.

    Semua string yang dibatasi oleh tanda kutip ganda ditafsirkan sebagai pengidentifikasi objek. Pengidentifikasi yang dikutip tidak harus mengikuti aturan Transact-SQL untuk pengidentifikasi. Mereka dapat menjadi kata kunci dan dapat menyertakan karakter yang tidak diizinkan dalam pengidentifikasi Transact-SQL. Jika tanda kutip ganda (") adalah bagian dari pengidentifikasi, tanda kutip ganda dapat diwakili oleh dua tanda kutip ganda ("").

  • TIDAK AKTIF

    Pengidentifikasi tidak boleh dalam tanda kutip dan harus mengikuti semua aturan Transact-SQL untuk pengidentifikasi. Literal dapat dibatasi dengan tanda kutip tunggal atau ganda.

SQL Server juga memungkinkan pengidentifikasi dibatasi oleh tanda kurung siku ([ dan ]). Pengidentifikasi kurung selalu dapat digunakan, apa pun pengaturan QUOTED_IDENTIFIER. Untuk informasi selengkapnya, lihat Pengidentifikasi Database.

Saat tabel dibuat, opsi PENGIDENTIFIKASI KUTIPan selalu disimpan sebagai AKTIF dalam metadata tabel. Opsi disimpan meskipun opsi diatur ke NONAKTIF saat tabel dibuat.

Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk QUOTED_IDENTIFIER. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi QUOTED_IDENTIFIER ke AKTIF, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR QUOTED_IDENTIFIER.

Anda dapat menentukan status opsi ini dengan memeriksa is_quoted_identifier_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsQuotedIdentifiersEnabled properti fungsi DATABASEPROPERTYEX .

RECURSIVE_TRIGGERS { ON | NONAKTIF }

  • AKTIF

    Penembakan rekursif pemicu AFTER diizinkan.

  • TIDAK AKTIF

    Anda dapat menentukan status opsi ini dengan memeriksa is_recursive_triggers_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsRecursiveTriggersEnabled properti fungsi DATABASEPROPERTYEX .

    Catatan

    Hanya rekursi langsung yang dicegah saat RECURSIVE_TRIGGERS diatur ke NONAKTIF. Untuk menonaktifkan rekursi tidak langsung, Anda juga harus mengatur opsi server pemicu berlapis ke 0.

Anda dapat menentukan status opsi ini dengan memeriksa is_recursive_triggers_on kolom dalam tampilan katalog sys.databases atau IsRecursiveTriggersEnabled properti fungsi DATABASEPROPERTYEX .

<> target_recovery_time_option ::=

target_recovery_time_option tidak didukung di Azure SQL Managed Instance.

Menentukan frekuensi titik pemeriksaan tidak langsung berdasarkan per database. Dimulai dengan SQL Server 2016 (13.x) nilai default untuk database baru adalah 1 menit, yang menunjukkan database akan menggunakan titik pemeriksaan tidak langsung. Untuk versi yang lebih lama, defaultnya adalah 0, yang menunjukkan bahwa database akan menggunakan titik pemeriksaan otomatis, yang frekuensinya tergantung pada pengaturan interval pemulihan instans server. Microsoft merekomendasikan 1 menit untuk sebagian besar sistem.

DENGAN <penghentian> ::=

Menentukan kapan harus mengembalikan transaksi yang tidak lengkap saat database ditransisikan dari satu status ke status lainnya. Jika klausul penghentian dihilangkan, pernyataan ALTER DATABASE menunggu tanpa batas waktu jika ada kunci pada database. Hanya satu klausul penghentian yang dapat ditentukan, dan mengikuti klausul SET.

Catatan

Tidak semua opsi database menggunakan klausa penghentian> WITH<. Untuk informasi selengkapnya, lihat tabel di bawah Opsi pengaturan bagian "Keterangan" di artikel ini.

  • ROLLBACK SETELAH bilangan bulat [DETIK] | ROLLBACK SEGERA

    Menentukan apakah akan digulung balik setelah jumlah detik yang ditentukan atau segera.

  • NO_WAIT

    Menentukan bahwa permintaan akan gagal jika status database yang diminta atau perubahan opsi tidak dapat segera diselesaikan. Menyelesaikan dengan segera berarti tidak menunggu transaksi dilakukan atau digulung balik sendiri.

<> temporal_history_retention ::=

  • TEMPORAL_HISTORY_RETENTION { ON | NONAKTIF }

    AKTIF secara default tetapi juga secara otomatis diatur ke NONAKTIF setelah operasi pemulihan titik waktu. Untuk informasi selengkapnya termasuk cara mengaktifkan pengaturan ini, lihat Cara mengonfigurasi kebijakan penyimpanan.

    • AKTIF

      Default. Mengaktifkan kebijakan penyimpanan tabel temporal. Untuk informasi selengkapnya, lihat Mengelola retensi data historis dalam tabel temporal versi sistem.

    • TIDAK AKTIF

      Jangan melakukan kebijakan penyimpanan historis temporal.

Atur opsi

Untuk mengambil pengaturan saat ini untuk opsi database, gunakan tampilan katalog sys.databases atau DATABASEPROPERTYEX

Setelah Anda mengatur opsi database, pengaturan baru akan segera berlaku.

Anda bisa mengubah nilai default untuk salah satu opsi database untuk semua database yang baru dibuat. Untuk melakukannya, ubah opsi database yang sesuai dalam model database sistem.

Contoh

J. Mengaktifkan isolasi rekam jepret pada database

Contoh berikut mengaktifkan opsi kerangka kerja isolasi rekam jepret untuk AdventureWorks2022 database.

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

Kumpulan hasil menunjukkan bahwa kerangka kerja isolasi rekam jepret diaktifkan.

nama snapshot_isolation_state description
[nama_database] 1 AKTIF

B. Mengaktifkan, memodifikasi, atau menonaktifkan pelacakan perubahan

Contoh berikut memungkinkan pelacakan perubahan untuk AdventureWorks2022 database dan mengatur periode retensi ke 2 hari.

ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);

Contoh berikut menunjukkan cara mengubah periode retensi menjadi 3 hari.

ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);

Contoh berikut menunjukkan cara menonaktifkan pelacakan perubahan untuk AdventureWorks2022 database.

ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;

C. Mengaktifkan Penyimpanan Kueri

Contoh berikut mengaktifkan Penyimpanan Kueri dan mengonfigurasi parameter Penyimpanan Kueri.

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. Mengaktifkan Penyimpanan Kueri dengan statistik tunggu

Contoh berikut mengaktifkan Penyimpanan Kueri dan mengonfigurasi parameternya.

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. Mengaktifkan Penyimpanan Kueri dengan opsi kebijakan penangkapan kustom

Contoh berikut mengaktifkan Penyimpanan Kueri dan mengonfigurasi parameternya.

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

Lihat juga

Langkah berikutnya

* Azure Synapse
Analytics*
 

 

Azure Synapse Analytics

Sintaks

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

Argumen

database_name

Adalah nama database yang akan dimodifikasi.

<> auto_option ::=

Mengontrol opsi otomatis.

AUTO_CREATE_STATISTICS { ON | NONAKTIF }

  • AKTIF

    Pengoptimal Kueri membuat statistik pada kolom tunggal dalam predikat kueri, seperlunya, untuk meningkatkan rencana kueri dan performa kueri. Statistik kolom tunggal ini dibuat saat Pengoptimal Kueri mengkompilasi kueri. Statistik kolom tunggal dibuat hanya pada kolom yang belum menjadi kolom pertama dari objek statistik yang ada.

    Defaultnya adalah ON. Kami menyarankan agar Anda menggunakan pengaturan default untuk sebagian besar database.

  • TIDAK AKTIF

    Pengoptimal Kueri tidak membuat statistik pada satu kolom dalam predikat kueri saat mengkompilasi kueri. Mengatur opsi ini ke NONAKTIF dapat menyebabkan rencana kueri suboptimal dan performa kueri yang terdegradasi.

Perintah ini harus dijalankan saat tersambung ke database pengguna.

Anda dapat menentukan status opsi ini dengan memeriksa is_auto_create_stats_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAutoCreateStatistics properti fungsi DATABASEPROPERTYEX .

Untuk informasi selengkapnya, lihat bagian "Menggunakan opsi statistik di seluruh database" dalam Statistik.

<> db_encryption_option ::=

Mengontrol status enkripsi database.

ENKRIPSI { AKTIF | NONAKTIF }

  • AKTIF

    Mengatur database yang akan dienkripsi.

  • TIDAK AKTIF

    Mengatur database agar tidak dienkripsi.

Untuk informasi selengkapnya tentang enkripsi database, lihat Enkripsi data transparan (TDE), dan Enkripsi data transparan untuk SQL Database, SQL Managed Instance, dan Azure Synapse Analytics.

Ketika enkripsi diaktifkan di tingkat database, semua grup file akan dienkripsi. Setiap grup file baru akan mewarisi properti terenkripsi. Jika ada grup file dalam database yang diatur ke BACA SAJA, operasi enkripsi database akan gagal.

Anda dapat melihat status enkripsi database dan status pemindaian enkripsi dengan menggunakan sys.dm_database_encryption_keys tampilan manajemen dinamis.

<> query_store_option ::=

Mengontrol apakah Penyimpanan Kueri diaktifkan di gudang data ini.

QUERY_STORE { ON | NONAKTIF }

  • AKTIF

    Mengaktifkan Penyimpanan Kueri.

  • TIDAK AKTIF

    Menonaktifkan Penyimpanan Kueri. OFF adalah nilai default.

Catatan

Untuk Azure Synapse Analytics, Anda harus menjalankan ALTER DATABASE SET QUERY_STORE dari database pengguna. Menjalankan pernyataan dari instans gudang data lain tidak didukung.

Catatan

Untuk Azure Synapse Analytics, Penyimpanan Kueri dapat diaktifkan seperti pada platform lain tetapi opsi konfigurasi tambahan tidak didukung.

<> result_set_caching_option ::=

Berlaku untuk: Azure Synapse Analytics

Mengontrol apakah hasil kueri di-cache dalam database.

RESULT_SET_CACHING { ON | NONAKTIF }

  • AKTIF

    Menentukan bahwa kumpulan hasil kueri yang dikembalikan dari database ini akan di-cache dalam database.

  • TIDAK AKTIF

    Menentukan bahwa kumpulan hasil kueri yang dikembalikan dari database ini tidak akan di-cache dalam database.

Perintah ini harus dijalankan saat tersambung ke master database. Perubahan pada pengaturan database ini segera berlaku. Biaya penyimpanan dikeluarkan oleh penembolokan kumpulan hasil kueri. Setelah menonaktifkan penembolokan hasil untuk database, cache hasil yang sebelumnya dipertahankan akan segera dihapus dari penyimpanan Azure Synapse.

Jalankan perintah ini untuk memeriksa konfigurasi penembolokan kumpulan hasil database. Jika penembolokan tataan hasil diaktifkan, is_result_set_caching_on akan mengembalikan 1.

SELECT name, is_result_set_caching_on FROM sys.databases
WHERE name = <'Your_Database_Name'>

Jalankan perintah ini untuk memeriksa apakah kueri dijalankan menggunakan hasil cache. Kolom result_cache_hit mengembalikan 1 untuk tembolokan hit, 0 untuk cache miss, dan nilai negatif karena alasan mengapa penembolokan tataan hasil tidak digunakan. Periksa sys.dm_pdw_exec_requests untuk detailnya.

SELECT request_id, command, result_cache_hit FROM sys.dm_pdw_exec_requests
WHERE request_id = <'Your_Query_Request_ID'>

Catatan

Penembolokan set hasil tidak boleh digunakan bersama dengan DECRYPTBYKEY. Jika fungsi kriptografi ini harus digunakan, pastikan Anda menonaktifkan cache set hasil (baik di tingkat sesi atau tingkat basis data) pada saat eksekusi.

Penting

Operasi untuk membuat cache tataan hasil dan mengambil data dari cache terjadi pada simpul kontrol instans gudang data. Saat penembolokan tataan hasil diaktifkan, menjalankan kueri yang mengembalikan tataan hasil besar (misalnya, >1 juta baris) dapat menyebabkan penggunaan CPU yang tinggi pada simpul kontrol dan memperlambat respons kueri keseluruhan pada instans. Kueri tersebut biasanya digunakan selama eksplorasi data atau operasi ETL. Untuk menghindari penekanan pada simpul kontrol dan menyebabkan masalah performa, pengguna harus MENONAKTIFKAN penembolokan tataan hasil di database sebelum menjalankan jenis kueri tersebut.

Untuk detail tentang penyetelan performa dengan penembolokan tataan hasil, periksa Panduan penyetelan performa.

Izin

Untuk mengatur opsi RESULT_SET_CACHING, pengguna memerlukan login utama tingkat server (yang dibuat oleh proses provisi) atau menjadi anggota dbmanager peran database.

<> snapshot_option ::=

Berlaku untuk: Azure Synapse Analytics

Mengontrol tingkat isolasi transaksi database.

READ_COMMITTED_SNAPSHOT { ON | NONAKTIF }

  • AKTIF

    Mengaktifkan opsi READ_COMMITTED_SNAPSHOT di tingkat database.

  • TIDAK AKTIF

    Nonaktifkan opsi READ_COMMITTED_SNAPSHOT di tingkat database.

Perintah ini harus dijalankan saat tersambung ke master database. Mengaktifkan atau menonaktifkan READ_COMMITTED_SNAPSHOT untuk database pengguna akan mematikan semua koneksi terbuka ke database ini. Anda mungkin ingin membuat perubahan ini selama jendela pemeliharaan database atau menunggu sampai tidak ada koneksi aktif ke database kecuali untuk koneksi yang menjalankan perintah ALTER DATABASE. Database tidak harus dalam mode pengguna tunggal. Mengubah pengaturan READ_COMMITTED_SNAPSHOT pada tingkat sesi tidak didukung. Untuk memverifikasi pengaturan ini untuk database, periksa is_read_committed_snapshot_on kolom di sys.databases.

Dalam database dengan READ_COMMITTED_SNAPSHOT diaktifkan, kueri mungkin mengalami performa yang lebih lambat karena pemindaian versi jika beberapa versi data ada. Transaksi yang terbuka lama juga dapat menyebabkan peningkatan ukuran database. Masalah ini terjadi jika ada perubahan data oleh transaksi ini yang memblokir pembersihan versi.

Izin

Untuk mengatur opsi READ_COMMITTED_SNAPSHOT, pengguna memerlukan izin UBAH pada database.

Contoh

Memeriksa pengaturan statistik untuk database

SELECT name, is_auto_create_stats_on FROM sys.databases

Mengaktifkan Penyimpanan Kueri untuk database

ALTER DATABASE [database_name]
SET QUERY_STORE = ON;

Mengaktifkan penembolokan tataan hasil untuk database

-- Run this command when connecting to the MASTER database

ALTER DATABASE [database_name]
SET RESULT_SET_CACHING ON;

Memeriksa pengaturan penembolokan tataan hasil untuk database

SELECT name, is_result_set_caching_on
FROM sys.databases;

Mengaktifkan opsi Read_Committed_Snapshot untuk database

Jalankan perintah ini saat menyambungkan ke master database.

ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON;

Lihat juga

Langkah berikutnya

Microsoft Fabric

 

Microsoft Fabric

Gunakan ALTER DATABASE ... SET untuk mengelola Microsoft Fabric Warehouse.

Sintaks

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

Keterangan

Saat ini, menjeda penerbitan log Delta Lake dan menonaktifkan perilaku V-Order di gudang adalah satu-satunya kegunaan untuk ALTER DATABASE ... SET di Microsoft Fabric.

Izin

Pengguna harus menjadi anggota peran Admin, Anggota, atau Kontributor di ruang kerja Fabric.

Contoh

J. Menjeda penerbitan Delta Lake Logs

Perintah T-SQL berikut menjeda penerbitan Delta Lake Log dalam konteks gudang saat ini.

ALTER DATABASE CURRENT SET DATA_LAKE_LOG_PUBLISHING = PAUSED;

Untuk memeriksa status penerbitan Delta Lake Log saat ini di semua gudang, ruang kerja Anda, gunakan kode T-SQL berikut untuk mengkueri sys.databases (Transact-SQL) di jendela kueri baru:

SELECT [name], [DATA_LAKE_LOG_PUBLISHING_DESC] FROM sys.databases;