OPSI UBAH SET DATABASE (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 t-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 tersambung. Opsi set tingkat sesi mengambil ALTER DATABASE SET alih 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>
  | <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 = { 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 = { 150 | 140 | 130 | 120 | 110 | 100 }
  | CONCAT_NULL_YIELDS_NULL { ON | OFF }
  | NUMERIC_ROUNDABORT { ON | OFF }
  | QUOTED_IDENTIFIER { ON | OFF }
  | RECURSIVE_TRIGGERS { ON | OFF }
}

<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 di 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 dikosongkan 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 dibuka kembali sampai pengguna mencoba menggunakan database saat mesin database dimulai ulang.

Setelah database dimatikan, lain kali 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 bersifat 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.

Saat 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 SQL Server 2005 (9.x) Paket Layanan 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 hanya dibuat 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 di seluruh Database" dalam Statistik.

INKREMENTAL = ON | OFF

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

Atur AUTO_CREATE_STATISTICS ke AKTIF, dan atur INCREMENTAL ke AKTIF. Set ini secara otomatis membuat statistik sebagai inkremental 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 disusutkan 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 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 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 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 AKTIF. 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 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 = { ON | 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 rencana 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 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 RETENSI PERUBAHAN.

AUTO_CLEANUP = { ON | 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 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.

<> containment_option ::=

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

Mengontrol opsi penahanan database.

CONTAINMENT = { NONE | PARSIAL}

TIDAK ADA
Database bukan database mandiri.

SEBAGIAN
Database adalah database mandiri. Mengatur penahanan database ke parsial akan gagal jika database memiliki replikasi, mengubah pengambilan data, atau pelacakan perubahan diaktifkan. Pemeriksaan kesalahan berhenti setelah satu kegagalan. Untuk informasi selengkapnya tentang database mandiri, lihat Database Mandiri.

<> 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; menggulung balik 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 SET 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 { | LOKAL GLOBAL }

Berlaku untuk: SQL Server

Mengontrol apakah cakupan kursor menggunakan LOKAL atau GLOBAL.

LOCAL
Saat Anda menentukan LOKAL dan tidak menentukan kursor sebagai GLOBAL saat Anda membuat kursor, cakupan kursor bersifat lokal. Secara khusus, cakupannya bersifat lokal untuk batch, prosedur tersimpan, atau pemicu di mana 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 saat 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 | OFF }

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.

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

OFF Tidak melakukan kebijakan penyimpanan historis temporal.

<> data_retention_policy ::=

Berlaku untuk: hanya Azure SQL Edge

DATA_RETENTION { ON | OFF }
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 | OFF }

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 saat ini dari opsi ini dapat ditentukan dengan memeriksa is_date_correlation_on kolom dalam tampilan katalog sys.databases .

<> db_encryption_option ::=

Mengontrol status enkripsi database.

ENKRIPSI { ON | OFF | MENANGGUHKAN | RESUME }
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 database Azure SQL.

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.

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

ONLINE
Database terbuka dan tersedia untuk digunakan.

DARURAT
Database ditandai READ_ONLY, pengelogan dinonaktifkan, dan akses terbatas pada anggota peran server tetap sysadmin. KEADAAN DARURAT 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.

READ_WRITE
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 gabungan database Azure SQL, 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 peran db_owner database tetap dan dbcreator dan sysadmin peran 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.

TAMU PENYANDANG CACAT
Semua transaksi berikut SET DISABLED sepenuhnya tahan lama. Opsi durabilitas apa pun yang diatur dalam blok atomik atau pernyataan penerapan diabaikan.

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

DIPAKSA
Semua transaksi berikut SET FORCED tertunda tahan lama. Opsi durabilitas apa pun yang diatur dalam blok atomik 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 penautan kepemilikan lintas database.

Penting

Instans SQL Server akan mengenali pengaturan ini ketika opsi server rantai kepemilikan lintas 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 .

TRUSTWORTHY { ON | 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 identitas 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 dan alias bahasa 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 kaskade; 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-kata kebisingan, atau kata-kata 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 = { OFF | 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.

PENUH
Mengaktifkan akses penuh dan non-transaksi ke data FILESTREAM di FileTable 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 KUMPULAN DATABASE HADR.

<> 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 { OFF | AKTIF }

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 OFF.

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

ON | 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 pratinjau SQL Server 2022 (16.x) seperti petunjuk Penyimpanan Kueri, Umpan Balik CE, umpan balik Derajat Paralelisme (DOP), dan umpan balik Peruntukan 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 Pratinjau SQL Server 2022 (16.x), database ini akan mempertahankan pengaturan Penyimpanan Kueri sebelumnya. Jika ada kekhawatiran tentang penyimpanan kueri overhead yang mungkin 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 dalam 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.

READ_WRITE

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 penyimpanan informasi untuk kueri di Penyimpanan Kueri. STALE_QUERY_THRESHOLD_DAYS adalah jenis bigint. 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 adalah tipe bigint. Nilai defaultnya adalah 900 (15 menit).

MAX_STORAGE_SIZE_MB

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

Catatan

MAX_STORAGE_SIZE_MB batas tidak diberlakukan secara ketat. Ukuran penyimpanan hanya dicentang saat Penyimpanan Kueri menulis data ke disk. Interval ini diatur oleh DATA_FLUSH_INTERVAL_SECONDS opsi atau opsi dialog Penyimpanan Kueri Management Studio Query Store 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 database Azure SQL, 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 adalah jenis bigint. Nilai defaultnya adalah 60.

SIZE_BASED_CLEANUP_MODE { | OTOMATIS 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. Berhenti 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 | | OTOMATIS | KUSTOM NONE }

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) hingga SQL Server 2017 (14.x)).

AUTO
Ambil 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 database Azure SQL.

TIDAK ADA
Berhenti menangkap 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 melewatkan 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 type int. Nilai defaultnya adalah 200.

WAIT_STATS_CAPTURE_MODE { ON | OFF }

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 menangkap 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 type 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 type 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 type int.

<> recovery_option ::=

Berlaku untuk: SQL Server

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

PENUH
Menyediakan pemulihan penuh setelah kegagalan media dengan menggunakan cadangan 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 | OFF }

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 mendatang. 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 | NONE }

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 yang 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.

TIDAK ADA
Penulisan halaman database tidak akan menghasilkan nilai CHECKSUM atau TORN_PAGE_DETECTION. SQL Server tidak akan memverifikasi checksum atau halaman torn selama pembacaan meskipun nilai CHECKSUM atau TORN_PAGE_DETECTION ada di header halaman.

Pertimbangkan poin penting berikut saat Anda menggunakan opsi PAGE_VERIFY:

  • Defaultnya adalah CHECKSUM.

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

    Catatan

    Di versi SQL Server sebelumnya, opsi database PAGE_VERIFY diatur ke NONE untuk tempdb database dan tidak dapat dimodifikasi. Dimulai dengan SQL Server 2008, 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 menyediakan 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.

Saat halaman torn 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 Argumen RESTORE. 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 berlanjut.

SQL Server akan mencoba kembali pembacaan apa pun yang gagal dengan checksum, halaman robek, atau kesalahan I/O lainnya empat kali. Jika pembacaan berhasil dalam salah satu upaya coba lagi, pesan ditulis ke log kesalahan. Perintah yang memicu pembacaan 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 saat ini dari opsi 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 dalam Pratinjau SQL Server 2022 (16.x). Fitur ini akan dihapus dalam versi Microsoft SQL Server yang akan datang. 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 = ON | OFF } )| 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 lingkup 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 LINGKUP DATABASE.

FEDERATED_SERVICE_ACCOUNT = { ON | OFF }

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 Azure Active Directory.
  • Server Azure jarak jauh dikonfigurasi untuk mendukung autentikasi Azure Active Directory.
  • 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 CREDENTIAL. Berikan argumen CREDENTIAL 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 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 msdb, pertama-tama 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 | OFF}

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

TIDAK AKTIF
Operasi kirim berjalan seolah-olah semua percakapan memiliki tingkat prioritas default.

Perubahan pada opsi HONOR_BROKER_PRIORITY segera berlaku untuk dialog atau dialog baru yang tidak memiliki pesan yang menunggu untuk dikirim. Dialog dengan pesan yang akan dikirim saat 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 | OFF }

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. Saat 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, ALLOW_SNAPSHOT_ISOLATION harus diatur ke AKTIF di semua database, atau setiap pernyataan dalam transaksi harus menggunakan petunjuk penguncian pada referensi apa pun dalam klausa 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 ON ke OFF, atau dari OFF ke ON), ALTER DATABASE tidak mengembalikan kontrol ke pemanggil sampai 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 kembali 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 saat ini dari opsi ini dapat ditentukan dengan memeriksa snapshot_isolation_state kolom dalam tampilan katalog sys.databases .

READ_COMMITTED_SNAPSHOT { ON | OFF }

AKTIF
Mengaktifkan opsi Read-Committed Snapshot 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 ketika transaksi berjalan di tingkat isolasi READ COMMITTED.

TIDAK AKTIF
Menonaktifkan opsi Read-Committed Snapshot 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 UBAH 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 , tempdb, atau msdb . Jika Anda mengubah pengaturan untuk model, pengaturan tersebut menjadi default untuk database baru yang dibuat, kecuali untuk tempdb.

Pengaturan saat ini dari opsi 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 | OFF }

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 defaultnya adalah NONAKTIF.

Pengaturan saat ini dari opsi 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 | OFF }

Menentukan nilai default, NULL atau NOT NULL, dari kolom atau jenis yang ditentukan pengguna CLR di mana nullability tidak secara eksplisit didefinisikan 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, mengatur opsi database ANSI_NULL_DEFAULT ke AKTIF mengubah default database ke 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 | OFF }

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 yang akan datang, 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 MENGATUR 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 dilapisi dengan panjang yang sama sebelum menyisipkan ke jenis data varchar atau nvarchar .

TIDAK AKTIF
Menyisipkan kosong berikutnya 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 dengan panjang kolom.

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

Penting

Dalam versi SQL Server 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 terhubung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR 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 membagi 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 dengan 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 terhubung 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 bagi-demi-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 = { 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 tunggal (') adalah bagian dari string literal, tanda kutip ganda dapat diwakili oleh tanda kutip ganda (").

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

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

Saat tabel dibuat, opsi PENGIDENTIFIKASI YANG DIKUTIP 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 terhubung 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
Pengaktifan pemicu AFTER secara rekursif diperbolehkan.

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

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 { SECONDS MENIT }

target_recovery_time
Menentukan batas maksimum pada waktu untuk memulihkan database yang ditentukan jika terjadi crash. target_recovery_time adalah jenis 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 ketika database ditransisikan dari satu status ke status lainnya. Jika klausa penghentian dihilangkan, pernyataan ALTER DATABASE menunggu tanpa batas waktu jika ada kunci pada database. Hanya satu klausa penghentian yang dapat ditentukan, dan mengikuti klausa 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 IMMEDIATE 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.

Opsi pengaturan

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

Setelah Anda mengatur opsi database, pengaturan baru 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 dikosongkan dengan mengatur salah satu opsi berikut:

OFFLINE

ONLINE

MODIFY_NAME

COLLATE

READ_ONLY

READ_WRITE

UBAH FILEGROUP DEFAULT

UBAH READ_WRITE FILEGROUP

UBAH READ_ONLY GRUPFILE

Cache rencana 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 mencopot 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 dibersihkan di 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

A. Mengatur opsi pada database

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

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 database AdventureWorks2012 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 database AdventureWorks2012 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 memungkinkan opsi kerangka kerja isolasi rekam jepret untuk database AdventureWorks2012 .

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 deskripsi
[database_name] 1 AKTIF

D. Mengaktifkan, mengubah, atau menonaktifkan pelacakan perubahan

Contoh berikut memungkinkan pelacakan perubahan untuk database AdventureWorks2012 dan mengatur periode retensi menjadi 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 database AdventureWorks2012 .

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 pengambilan 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 UBAH Tingkat Kompatibilitas DATABASE.

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 ALTER DATABASE SET alih nilai. Opsi database yang dijelaskan di bagian berikut ini adalah nilai yang bisa 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 = { 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 di 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 hanya dibuat pada kolom yang belum menjadi kolom pertama dari objek statistik yang ada.

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 "Opsi statistik" di Statistik.

INKREMENTAL = ON | OFF

Atur AUTO_CREATE_STATISTICS ke AKTIF, dan atur INCREMENTAL ke AKTIF. Pengaturan ini membuat statistik yang dibuat secara otomatis sebagai inkremental 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 disusutkan secara otomatis selama pemeriksaan berkala untuk ruang yang tidak digunakan.

Opsi AUTO_SHRINK menyebabkan file disusutkan 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 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 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 AKTIF. 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 = { | OTOMATIS MEWARISI | 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 pewarisan 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 kustom setiap opsi Penyetelan Otomatis yang tersedia di database. Dalam portal Azure, ini mencerminkan opsi untuk "Mewarisi dari: Jangan mewarisi".

CREATE_INDEX = { | DEFAULT ON | NONAKTIF }

Mengaktifkan atau menonaktifkan opsi manajemen CREATE_INDEX indeks otomatis dari 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 masing-masing fitur penyetelan Otomatis ditentukan di 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 seperti itu tidak lagi memberikan manfaat untuk performa beban kerja, indeks tersebut secara otomatis dikembalikan. Indeks yang dibuat secara otomatis ditandai sebagai sistem yang dihasilkan terindeks.

TIDAK AKTIF
Tidak secara otomatis menghasilkan indeks yang hilang pada database.

DROP_INDEX = { | DEFAULT ON | NONAKTIF }

Mengaktifkan atau menonaktifkan opsi manajemen DROP_INDEX indeks otomatis dari 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 masing-masing fitur penyetelan Otomatis ditentukan di 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 ON | NONAKTIF }

Mengaktifkan atau menonaktifkan opsi koreksi FORCE_LAST_GOOD_PLAN paket otomatis dari 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 masing-masing fitur penyetelan Otomatis ditentukan di tingkat server. Ini adalah nilai default. Nilai default untuk server Azure SQL baru aktif, yang berarti bahwa secara default, database baru akan mewarisi pengaturan ON.

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 rencana 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 RETENSI PERUBAHAN.

AUTO_CLEANUP = { ON | 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 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 terhubung 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 hanya dibatalkan alokasinya saat pemutusan sambungan. Untuk informasi selengkapnya, lihat MENDEKLARASIKAN KURSOR.

<> db_encryption_option ::=

Mengontrol status enkripsi database.

ENKRIPSI { ON | 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 database Azure SQL.

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.

READ_WRITE
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 gabungan database Azure SQL, SET { READ_ONLY | READ_WRITE } dinonaktifkan.

<> db_user_access_option ::=

Mengontrol akses pengguna ke database.

RESTRICTED_USER
Hanya memungkinkan anggota peran db_owner database tetap dan dbcreator dan sysadmin peran server tetap untuk terhubung ke database, tetapi tidak membatasi jumlah mereka. Semua koneksi ke database terputus dalam 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. 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.

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

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

DIPAKSA
Semua transaksi berikut SET FORCED tertunda tahan lama. Setiap opsi durabilitas yang diatur dalam blok atomik 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 saat ini dari opsi ini dapat ditentukan dengan memeriksa is_parameterization_forced kolom dalam tampilan katalog sys.databases .

<> query_store_options ::=

ON | OFF | 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. Mengeksekusi ALTER DATABASE [database] SET QUERY_STORE = OFF 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 ke READ_ONLY.

CLEANUP_POLICY

Menjelaskan kebijakan penyimpanan data Penyimpanan Kueri. STALE_QUERY_THRESHOLD_DAYS menentukan jumlah hari penyimpanan informasi untuk kueri di Penyimpanan Kueri. STALE_QUERY_THRESHOLD_DAYS adalah jenis bigint. Nilai default adalah 30. Untuk SQL Database edisi Dasar, 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 adalah jenis bigint. Nilai defaultnya adalah 900 (15 menit).

MAX_STORAGE_SIZE_MB

Menentukan ruang yang dialokasikan ke Penyimpanan Kueri. MAX_STORAGE_SIZE_MB adalah jenis bigint. Untuk edisi SQL Database Premium, defaultnya adalah 1 GB dan untuk edisi SQL Database Basic, defaultnya adalah 10 MB.

Catatan

MAX_STORAGE_SIZE_MBbatas pengaturan adalah 10.240 MB pada Azure SQL Database.

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 Management Studio Query Store 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 CUSTOM 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 adalah jenis bigint. Nilai defaultnya adalah 60.

SIZE_BASED_CLEANUP_MODE = { | OTOMATIS OFF }

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. Berhenti sekitar 80% dari max_storage_size_mb. Ini adalah nilai konfigurasi default.

SIZE_BASED_CLEANUP_MODE adalah jenis nvarchar.

QUERY_CAPTURE_MODE { ALL | | OTOMATIS | KUSTOM NONE }

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
Ambil kueri yang relevan berdasarkan jumlah eksekusi dan konsumsi sumber daya. Ini adalah nilai konfigurasi default untuk Azure SQL Database.

TIDAK ADA
Berhenti menangkap 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 melewatkan 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 jenis 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 jenis 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 Penangkapan 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. Saat 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, ALLOW_SNAPSHOT_ISOLATION harus diatur ke AKTIF di semua database, atau setiap pernyataan dalam transaksi harus menggunakan petunjuk penguncian pada referensi apa pun dalam klausa 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 kembali 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 nantinya 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 Read-Committed Snapshot 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 Read-Committed Rekam Jepret 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 UBAH 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 , tempdb, atau 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

Ketika 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 jenis yang ditentukan pengguna CLR yang tidak secara eksplisit ditentukan 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 terhubung 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 yang akan datang, 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 terhubung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR 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 dilapisi dengan panjang yang sama sebelum menyisipkan ke jenis data varchar atau nvarchar .

TIDAK AKTIF
Menyisipkan kosong berikutnya 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 dengan panjang kolom.

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

Penting

Dalam versi SQL Server 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 terhubung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR 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 membagi 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 dengan 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 terhubung 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 bagi-demi-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 = { 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 adalah".

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 yang akan datang, 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 tunggal (') adalah bagian dari string literal, tanda kutip ganda dapat diwakili oleh tanda kutip ganda (").

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

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

Saat tabel dibuat, opsi PENGIDENTIFIKASI YANG DIKUTIP 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 terhubung 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
Pengaktifan pemicu AFTER secara rekursif diperbolehkan.

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 ketika 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 { SECONDS MENIT }

target_recovery_time
Menentukan batas maksimum pada waktu untuk memulihkan database yang ditentukan jika terjadi crash. target_recovery_time adalah jenis 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 ketika database ditransisikan dari satu status ke status lainnya. Jika klausa penghentian dihilangkan, pernyataan ALTER DATABASE menunggu tanpa batas waktu jika ada kunci pada database. Hanya satu klausa penghentian yang dapat ditentukan, dan mengikuti klausa 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] | PUTAR KEMBALI 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 tertentu. Untuk informasi selengkapnya termasuk cara mengaktifkan pengaturan ini, lihat Cara mengonfigurasi kebijakan penyimpanan.

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

OFF Jangan melakukan kebijakan penyimpanan historis temporal.

Opsi pengaturan

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

Setelah Anda mengatur opsi database, pengaturan baru 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

A. 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. Contohnya kemudian mengatur status database AdventureWorks2012 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 memverifikasi:

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 database AdventureWorks2012 .

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

|name |snapshot_isolation_state |description|
|-------------------- |------------------------|----------|
|[database_name] |1| ON |

C. Mengaktifkan, memodifikasi, atau menonaktifkan pelacakan perubahan

Contoh berikut memungkinkan pelacakan perubahan untuk database AdventureWorks2012 dan mengatur periode retensi menjadi 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 database AdventureWorks2012 .

--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 pengambilan 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 UBAH Tingkat Kompatibilitas DATABASE.

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 ALTER DATABASE SET alih nilai. Opsi database yang dijelaskan di bagian berikut ini adalah nilai yang bisa 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 = { 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 = { 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 di 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 hanya dibuat pada kolom yang belum menjadi kolom pertama dari objek statistik yang ada.

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 "Opsi statistik" di Statistik.

INKREMENTAL = ON | OFF

Atur AUTO_CREATE_STATISTICS ke AKTIF, dan atur INCREMENTAL ke AKTIF. Pengaturan ini membuat statistik yang dibuat secara otomatis sebagai inkremental 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 disusutkan secara otomatis selama pemeriksaan berkala untuk ruang yang tidak digunakan.

Opsi AUTO_SHRINK menyebabkan file disusutkan 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 secara otomatis menyusut 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 di Database Mandiri.

AUTO_UPDATE_STATISTICS { ON | OFF }

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 AKTIF. 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" di Statistik.

AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }

AKTIF
Menentukan bahwa pembaruan statistik untuk opsi AUTO_UPDATE_STATISTICS bersifat asinkron. 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 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.

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" di Statistik.

<> automatic_tuning_option ::=

Mengontrol opsi otomatis untuk Penyetelan otomatis.

FORCE_LAST_GOOD_PLAN = { ON | OFF }

Mengaktifkan atau menonaktifkan FORCE_LAST_GOOD_PLAN opsi Penyetelan otomatis.

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 rencana 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. Ini adalah nilai default.

<> 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 Memungkinkan pelacakan perubahan untuk database. Saat mengaktifkan pelacakan perubahan, Anda juga dapat mengatur opsi PEMBERSIHAN OTOMATIS dan UBAH RETENSI.

AUTO_CLEANUP = { ON | OFF }

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

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

retention_period adalah bilangan bulat yang menentukan komponen numerik 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 | OFF }

AKTIF
Setiap kursor terbuka saat Anda menerapkan atau mengembalikan transaksi ditutup.

TIDAK AKTIF
Kursor tetap terbuka ketika transaksi dilakukan; menggulung balik 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 SET 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 properti IsCloseCursorsOnCommitEnabled dari fungsi DATABASEPROPERTYEX . Kursor secara implisit dibatalkan alokasinya hanya saat pemutusan sambungan. Untuk informasi selengkapnya, lihat MENDEKLARASIKAN KURSOR.

<> db_encryption_option ::=

Mengontrol status enkripsi database.

ENKRIPSI { ON | OFF }

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

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.

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

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

DIPAKSA
Semua transaksi berikut SET FORCED tertunda tahan lama. Setiap opsi durabilitas yang diatur dalam blok atomik 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 saat ini dari opsi ini dapat ditentukan dengan memeriksa is_parameterization_forced kolom dalam tampilan katalog sys.databases .

<> query_store_options ::=

ON | OFF | 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 ke READ_ONLY.

CLEANUP_POLICY

Menjelaskan kebijakan penyimpanan data Penyimpanan Kueri. STALE_QUERY_THRESHOLD_DAYS menentukan jumlah hari penyimpanan informasi untuk kueri di Penyimpanan Kueri. STALE_QUERY_THRESHOLD_DAYS adalah jenis bigint. Nilai default adalah 30. Untuk SQL Database edisi Dasar, 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 adalah jenis bigint. 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.

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 Management Studio Query Store 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 CUSTOM 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 adalah jenis bigint. Nilai defaultnya adalah 60.

SIZE_BASED_CLEANUP_MODE = { | OTOMATIS OFF }

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. Berhenti sekitar 80% dari max_storage_size_mb. Ini adalah nilai konfigurasi default.

SIZE_BASED_CLEANUP_MODE adalah jenis nvarchar.

QUERY_CAPTURE_MODE { ALL | | OTOMATIS | KUSTOM NONE }

Menunjuk mode pengambilan kueri yang saat ini aktif.

SEMUA
Semua kueri diambil.

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

TIDAK ADA
Berhenti menangkap 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 melewatkan pengambilan kueri penting.

QUERY_CAPTURE_MODE adalah jenis nvarchar.

MAX_PLANS_PER_QUERY

Bilangan bulat yang menunjukkan jumlah maksimum rencana yang dipertahankan untuk setiap kueri. MAX_PLANS_PER_QUERY adalah type int. Nilai defaultnya adalah 200.

WAIT_STATS_CAPTURE_MODE { ON | OFF }

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 type 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 type 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 type int.

<> snapshot_option ::=

Menentukan tingkat isolasi transaksi.

ALLOW_SNAPSHOT_ISOLATION { ON | OFF }

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. Saat 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, ALLOW_SNAPSHOT_ISOLATION harus diatur ke AKTIF di semua database, atau setiap pernyataan dalam transaksi harus menggunakan petunjuk penguncian pada referensi apa pun dalam klausa 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 ON ke OFF, atau dari OFF ke ON), ALTER DATABASE tidak mengembalikan kontrol ke pemanggil sampai 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 kembali 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 saat ini dari opsi ini dapat ditentukan dengan memeriksa snapshot_isolation_state kolom dalam tampilan katalog sys.databases .

READ_COMMITTED_SNAPSHOT { ON | OFF }

AKTIF
Mengaktifkan opsi Read-Committed Snapshot 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 ketika transaksi berjalan di tingkat isolasi READ COMMITTED.

TIDAK AKTIF
Menonaktifkan opsi Read-Committed Snapshot 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 , tempdb, atau msdb . Jika Anda mengubah pengaturan untuk database sistem, pengaturan tersebut model menjadi default untuk database baru yang dibuat, kecuali untuk tempdb.

Pengaturan saat ini dari opsi 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 | OFF }

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 saat ini dari opsi 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 | OFF }

Menentukan nilai default, NULL atau NOT NULL, dari kolom atau jenis yang ditentukan pengguna CLR di mana nullability tidak secara eksplisit didefinisikan 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, mengatur opsi database ANSI_NULL_DEFAULT ke AKTIF mengubah default database ke 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 | OFF }

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 yang akan datang, 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 MENGATUR 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 | OFF }

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

TIDAK AKTIF
Menyisipkan kosong berikutnya 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 dengan panjang kolom.

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

Penting

Dalam versi SQL Server 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 terhubung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR 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 membagi 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 dengan 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 terhubung 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 bagi-demi-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 = { 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 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 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 tunggal (') adalah bagian dari string literal, tanda kutip ganda dapat diwakili oleh tanda kutip ganda (").

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

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

Saat tabel dibuat, opsi PENGIDENTIFIKASI YANG DIKUTIP 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 terhubung 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
Pengaktifan pemicu AFTER secara rekursif diperbolehkan.

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 klausa penghentian dihilangkan, pernyataan ALTER DATABASE menunggu tanpa batas waktu jika ada kunci pada database. Hanya satu klausa 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 dari bagian "Keterangan" di artikel ini.

ROLLBACK SETELAH bilangan bulat [DETIK] | PUTAR KEMBALI SEGERA
Menentukan apakah akan mengembalikan 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 | OFF }

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.

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

OFF Tidak melakukan kebijakan penyimpanan historis temporal.

Opsi pengaturan

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

Setelah Anda mengatur opsi database, pengaturan baru 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

A. Mengaktifkan isolasi rekam jepret pada database

Contoh berikut memungkinkan opsi kerangka kerja isolasi rekam jepret untuk database AdventureWorks2012 .

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 deskripsi
[database_name] 1 AKTIF

B. Mengaktifkan, mengubah, atau menonaktifkan pelacakan perubahan

Contoh berikut memungkinkan pelacakan perubahan untuk database AdventureWorks2012 dan mengatur periode retensi menjadi 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 database AdventureWorks2012 .

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 pengambilan 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
Analitik *
 

 

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

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 AKTIF. Kami menyarankan agar Anda menggunakan pengaturan default untuk sebagian besar database.

TIDAK AKTIF
Pengoptimal Kueri tidak membuat statistik pada kolom tunggal 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 { ON | NONAKTIF }

AKTIF
Mengatur database yang akan dienkripsi.

TIDAK AKTIF
Mengatur database agar tidak dienkripsi.

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

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

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 ke 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 tataan 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 yang di-cache. Kolom result_cache_hit mengembalikan 1 untuk hit cache, 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 secara keseluruhan pada instans. Kueri tersebut biasanya digunakan selama eksplorasi data atau operasi ETL. Untuk menghindari stres node kontrol dan menyebabkan masalah kinerja, pengguna harus menonaktifkan pembuatan cache tataan hasil pada 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 jangka panjang 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