OPSI ALTER DATABASE SET (SQL Transact)
Mengatur opsi database di Microsoft SQL Server, Azure SQL Database, dan Azure Synapse Analytics. Untuk opsi UBAH DATABASE lainnya, lihat MENGUBAH DATABASE.
Pilih salah satu tab berikut untuk sintaks, argumen, keterangan, izin, dan contoh untuk versi SQL tertentu yang sedang Anda kerjakan.
Untuk informasi selengkapnya tentang konvensi sintaks, lihat Konvensi sintaksis transact-SQL.
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.
Pilih produk
Di baris berikut, pilih nama produk mana pun yang Anda minati. Melakukan hal tersebut 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 LINGKUP 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 PRIMARY. Untuk contoh dan informasi selengkapnya, lihat Pemulihan database yang dipercepat.
<> auto_option ::=
Mengontrol opsi otomatis.
AUTO_CLOSE { ON | OFF }
AKTIF
Database dimatikan dengan bersih dan sumber dayanya dibebaskan setelah pengguna terakhir keluar.
Database secara otomatis dibuka kembali saat pengguna mencoba menggunakan database lagi. Misalnya, perilaku buka kembali ini terjadi saat pengguna mengeluarkan USE database_name pernyataan. Database dapat dimatikan dengan bersih dengan AUTO_CLOSE diatur ke AKTIF. Jika demikian, database tidak terbuka kembali hingga pengguna mencoba menggunakan database saat mesin database dimulai ulang di lain waktu.
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.
Ketika database diatur ke AUTOCLOSE = ON, operasi yang memulai penonaktifan database otomatis akan menghapus cache rencana 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.
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.
Pengaturan 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.
Anda dapat menentukan status opsi ini dengan memeriksa is_auto_create_stats_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAutoCreateStatistics properti fungsi DATABASEPROPERTYEX .
Untuk informasi selengkapnya, lihat bagian "Menggunakan opsi statistik seluruh Database" di Statistik.
INKREMENTAL = ON | OFF
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2014 (12.x)) dan Azure SQL Database
Atur AUTO_CREATE_STATISTICS ke AKTIF, dan atur INCREMENTAL ke AKTIF. Set ini secara otomatis membuat statistik sebagai inkremental setiap kali statistik inkremental didukung. Nilai defaultnya adalah NONAKTIF. Untuk informasi selengkapnya, lihat MEMBUAT STATISTIK.
AUTO_SHRINK { ON | OFF }
AKTIF
File database adalah kandidat untuk penyusutan berkala. Kecuali Anda memiliki persyaratan khusus, jangan atur opsi AUTO_SHRINK database ke AKTIF. Untuk informasi selengkapnya, lihat Menyusutkan database.
File data dan file log dapat disusutkan secara otomatis. AUTO_SHRINK mengurangi ukuran log transaksi hanya jika Anda mengatur database ke model pemulihan SIMPLE atau jika Anda mencadangkan log. Saat Anda mengatur AUTO_SHRINK ke NONAKTIF, file database tidak secara otomatis menyusut selama pemeriksaan berkala untuk ruang yang tidak digunakan.
Opsi AUTO_SHRINK menyusutkan file ketika lebih dari 25 persen file berisi ruang yang tidak digunakan. Ini menyusutkan file ke salah satu dari dua ukuran (mana 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 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 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 | OFF }
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 ada perolehan performa, Mesin Database akan terus menggunakan rencana baik terakhir yang diketahui. Jika perolehan performa tidak terdeteksi, 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 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 secara otomatis 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.
<> containment_option ::=
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))
Mengontrol opsi penahanan database.
PENAHANAN = { 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 penangkapan 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 | 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 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 Azure SQL Database.
Ketika enkripsi diaktifkan di tingkat database, semua grup file akan dienkripsi. Setiap grup file baru akan mewarisi properti terenkripsi. Jika ada grup file dalam database yang diatur ke BACA SAJA, operasi enkripsi database akan gagal.
Anda dapat melihat status enkripsi database dan status pemindaian enkripsi dengan menggunakan tampilan manajemen dinamis sys.dm_database_encryption_keys .
<> db_state_option ::=
Berlaku untuk: SQL Server
Mengontrol status database.
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 Azure SQL Database database federasi, 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:
Atur AUTO_UPDATE_STATISTICS_ASYNC ke NONAKTIF.
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
Memungkinkan hanya 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 akan 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. 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.
<> external_access_option ::=
Berlaku untuk: SQL Server
Mengontrol apakah database dapat diakses oleh sumber daya eksternal, seperti objek dari database lain.
DB_CHAINING { ON | OFF }
AKTIF
Database dapat menjadi sumber atau target rantai kepemilikan lintas database.
TIDAK AKTIF
Database tidak dapat berpartisipasi dalam rantai kepemilikan lintas database.
Penting
Instans SQL Server akan mengenali pengaturan ini ketika opsi server rantai kepemilikan lintas db adalah 0 (NONAKTIF). Ketika rantai kepemilikan lintas db adalah 1 (ON), 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 .
TEPERCAYA { ON | OFF }
AKTIF
Modul database (misalnya, fungsi yang ditentukan pengguna atau prosedur tersimpan) yang menggunakan konteks peniruan identitas 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 bahasa dan alias yang dapat diterima, lihat sys.syslanguages. Opsi ini hanya diperbolehkan ketika CONTAINMENT telah diatur ke PARSIAL. Jika CONTAINMENT diatur ke NONE, kesalahan akan terjadi.
NESTED_TRIGGERS
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))
Menentukan apakah pemicu AFTER dapat berskala; yaitu, melakukan tindakan yang memulai pemicu lain, yang memulai pemicu lain, dan sebagainya. Opsi ini hanya diperbolehkan ketika CONTAINMENT telah diatur ke PARSIAL. Jika CONTAINMENT diatur ke NONE, kesalahan akan terjadi.
TRANSFORM_NOISE_WORDS
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))
Digunakan untuk menekan pesan kesalahan jika kata kebisingan, atau stopword, menyebabkan operasi Boolean pada kueri teks lengkap gagal. Opsi ini hanya diperbolehkan ketika CONTAINMENT telah diatur ke PARSIAL. Jika CONTAINMENT diatur ke NONE, kesalahan akan terjadi.
TWO_DIGIT_YEAR_CUTOFF
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))
Menentukan bilangan bulat dari 1753 hingga 9999 yang mewakili tahun cutoff untuk menafsirkan tahun dua digit sebagai tahun empat digit. Opsi ini hanya diperbolehkan ketika CONTAINMENT telah diatur ke PARSIAL. Jika CONTAINMENT diatur ke NONE, kesalahan akan terjadi.
<> FILESTREAM_option ::=
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))
Mengontrol pengaturan untuk FileTables.
NON_TRANSACTED_ACCESS = { 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 | ON }
TIDAK AKTIF
Database selalu membuat halaman awal menggunakan tingkat yang 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 saat ini dari opsi 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 SQL Server 2022 seperti petunjuk Penyimpanan Kueri, Umpan Balik CE, umpan balik Degree of Parallelism (DOP), dan umpan balik Peruntukan Memori (MGF) yang memerlukan Penyimpanan Kueri untuk diaktifkan. Untuk database yang telah dipulihkan dari instans SQL Server lainnya dan untuk database yang ditingkatkan dari peningkatan di tempat ke SQL Server 2022, 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. Mengeksekusi ALTER DATABASE [database] SET QUERY_STORE = OFF 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. ALL 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 jenis bigint. Nilai defaultnya adalah 900 (15 menit).
MAX_STORAGE_SIZE_MB
Menentukan ruang yang dikeluarkan untuk Penyimpanan Kueri. MAX_STORAGE_SIZE_MB adalah jenis bigint. Nilai defaultnya adalah 100 MB untuk SQL Server (SQL Server 2016 (13,x) 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. Storage ukuran dicentang hanya ketika Penyimpanan Kueri menulis data ke disk. Interval ini diatur oleh DATA_FLUSH_INTERVAL_SECONDS opsi atau opsi kotak dialog Penyimpanan Kueri Management Studio 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 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 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 kehilangan pengambilan kueri penting.
KUSTOM
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2019 (15.x))
Memungkinkan kontrol atas opsi QUERY_CAPTURE_POLICY. Kebijakan pengambilan 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 jenis int. Nilai defaultnya adalah 200.
WAIT_STATS_CAPTURE_MODE { ON | NONAKTIF }
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2017 (14.x)))
Mengontrol apakah statistik tunggu akan diambil per kueri.
AKTIF
Informasi statistik tunggu per kueri diambil. Nilai ini adalah nilai konfigurasi default.
TIDAK AKTIF
Informasi statistik tunggu per kueri tidak akan diambil.
<> query_capture_policy_option_list :: =
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2019 (15.x))
Mengontrol opsi kebijakan penangkapan Penyimpanan Kueri . Kecuali untuk STALE_CAPTURE_POLICY_THRESHOLD, opsi ini menentukan kondisi OR yang perlu terjadi agar kueri diambil dalam nilai Ambang Kebijakan Pengambilan Kedaluarsa yang ditentukan.
Dimulai dengan SQL Server 2019 (15.x), QUERY_CAPTURE_MODE = AUTO pengaturan mengambil detail penyimpanan kueri saat salah satu ambang batas berikut terpaut:
- EXECUTION_COUNT = 30 eksekusi = jumlah eksekusi
- TOTAL_COMPILE_CPU_TIME_MS = 1 detik = waktu kompilasi dalam milidetik
- TOTAL_EXECUTION_CPU_TIME_MS = 100 md = waktu CPU eksekusi dalam milidetik
Contohnya:
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
Anda dapat menyesuaikan opsi ini dengan QUERY_CAPTURE_MODE = CUSTOM:
STALE_CAPTURE_POLICY_THRESHOLD = bilangan bulat { DAYS | JAM }
Menentukan periode interval evaluasi untuk menentukan apakah kueri harus diambil. Defaultnya adalah 1 hari, dan dapat diatur dari 1 jam hingga tujuh hari.
EXECUTION_COUNT = bilangan bulat
Menentukan berapa kali kueri dijalankan selama periode evaluasi. Defaultnya adalah 30, yang berarti bahwa untuk Ambang Kebijakan Pengambilan Kedaluarsa default, kueri harus dijalankan setidaknya 30 kali dalam satu hari untuk dipertahankan di Penyimpanan Kueri. EXECUTION_COUNT adalah jenis int.
TOTAL_COMPILE_CPU_TIME_MS = bilangan bulat
Menentukan total waktu CPU kompilasi yang berlalu yang digunakan oleh kueri selama periode evaluasi. Defaultnya adalah 1000, yang berarti bahwa untuk Ambang Kebijakan Pengambilan Kedaluarsa default, kueri harus memiliki total setidaknya satu detik waktu CPU yang dihabiskan selama kompilasi kueri dalam satu hari untuk dipertahankan di Penyimpanan Kueri. TOTAL_COMPILE_CPU_TIME_MS adalah 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.
<> 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 | NONAKTIF }
AKTIF
Halaman yang tidak lengkap dapat dideteksi oleh Mesin Database.
TIDAK AKTIF
Halaman yang tidak lengkap tidak dapat dideteksi oleh Mesin Database.
Penting
Struktur sintaks TORN_PAGE_DETECTION ON | OFF akan dihapus dalam versi SQL Server 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 penyebabnya, diperlukan 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 yang robek 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
Dalam versi SQL Server yang lebih lama, opsi database PAGE_VERIFY diatur ke NONE untuk
tempdbdatabase dan tidak dapat dimodifikasi. Dimulai dengan SQL Server 2008, nilai default untuktempdbdatabase adalah CHECKSUM untuk penginstalan baru SQL Server. Saat memutakhirkan penginstalan SQL Server, nilai default tetap TIDAK ADA. Opsi dapat dimodifikasi. Kami menyarankan agar Anda menggunakan CHECKSUM untuktempdbdatabase.TORN_PAGE_DETECTION dapat menggunakan lebih sedikit sumber daya tetapi memberikan subset minimal dari perlindungan CHECKSUM.
PAGE_VERIFY dapat diatur tanpa membuat database offline, mengunci database, atau menghambat konkurensi pada database tersebut.
CHECKSUM saling eksklusif untuk TORN_PAGE_DETECTION. Kedua opsi tidak dapat diaktifkan secara bersamaan.
Ketika kegagalan halaman atau checksum yang robek terdeteksi, Anda dapat memulihkan dengan memulihkan data atau berpotensi membangun kembali indeks jika kegagalan hanya terbatas pada halaman indeks. Jika Anda mengalami kegagalan checksum, untuk menentukan jenis halaman database atau halaman yang terpengaruh, jalankan DBCC CHECKDB. Untuk informasi selengkapnya tentang opsi pemulihan, lihat PULIHKAN Argumen. Meskipun memulihkan data akan menyelesaikan masalah kerusakan data, akar penyebabnya, misalnya, kegagalan perangkat keras disk, harus didiagnosis dan diperbaiki sesegera mungkin untuk mencegah kesalahan yang 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:
- Cara memecahkan masalah kesalahan Msg 823 di SQL Server
- Cara memecahkan masalah Msg 824 di SQL Server
- Cara memecahkan masalah Msg - baca coba lagi.
Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa page_verify_option kolom dalam tampilan katalog sys.databases atau IsTornPageDetectionEnabled properti fungsi DATABASEPROPERTYEX .
<> remote_data_archive_option ::=
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2016 (13.x))
Mengaktifkan atau menonaktifkan Stretch Database untuk database. Untuk informasi selengkapnya, lihat Stretch Database.
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 | NONAKTIF }
Anda dapat menggunakan akun layanan federasi untuk SQL Server lokal untuk berkomunikasi dengan server Azure jarak jauh saat kondisi berikut ini semuanya benar.
- Akun layanan tempat instans SQL Server berjalan adalah akun domain.
- Akun domain milik domain yang Direktori Aktifnya digabungkan dengan Azure Active Directory.
- Server Azure jarak jauh dikonfigurasi untuk mendukung autentikasi Azure Active Directory.
- Akun layanan tempat instans SQL Server berjalan harus dikonfigurasi sebagai
dbmanagerakun atausysadmindi server Azure jarak jauh.
Jika Anda menentukan bahwa akun layanan federasi AKTIF, Anda juga tidak dapat menentukan argumen CREDENTIAL. Berikan argumen KREDENSIAL jika Anda menentukan NONAKTIF.
TIDAK AKTIF
Menonaktifkan Stretch Database untuk database. Untuk informasi selengkapnya, lihat Menonaktifkan Stretch Database dan mengembalikan data jarak jauh.
Anda hanya bisa menonaktifkan Stretch Database untuk database setelah database tidak lagi berisi tabel apa pun yang diaktifkan untuk Stretch Database. Setelah Anda menonaktifkan Stretch Database, migrasi data berhenti. Selain itu, hasil kueri tidak lagi menyertakan hasil dari tabel jarak jauh.
Menonaktifkan Stretch Database tidak menghapus database jarak jauh. Untuk menghapus database jarak jauh, letakkan dengan menggunakan portal Azure.
<> service_broker_option ::=
Berlaku untuk: SQL Server
Mengontrol opsi Service Broker berikut: mengaktifkan atau menonaktifkan pengiriman pesan, mengatur pengidentifikasi Service Broker baru, atau mengatur prioritas percakapan ke AKTIF atau NONAKTIF.
ENABLE_BROKER
Menentukan bahwa Service Broker diaktifkan untuk database yang ditentukan. Pengiriman pesan dimulai, dan is_broker_enabled bendera diatur ke true dalam tampilan katalog sys.databases . Database menyimpan pengidentifikasi Service Broker yang ada. Broker layanan tidak dapat diaktifkan saat database adalah prinsipal dalam konfigurasi pencerminan database.
Catatan
ENABLE_BROKER memerlukan kunci database eksklusif. Jika sesi lain telah mengunci sumber daya dalam database, ENABLE_BROKER akan menunggu hingga sesi lain melepaskan kuncinya. Untuk mengaktifkan Service Broker dalam database pengguna, pastikan bahwa tidak ada sesi lain yang menggunakan database sebelum Anda menjalankan ALTER DATABASE SET ENABLE_BROKER pernyataan, seperti dengan menempatkan database dalam mode pengguna tunggal. Untuk mengaktifkan Service Broker dalam database 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 | 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 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 SQL Transact 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] | 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.
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 dibersihkan dengan mengatur salah satu opsi berikut:
OFFLINE
ONLINE
MODIFY_NAME
COLLATE
READ_ONLY
READ_WRITE
UBAH FILEGROUP DEFAULT
UBAH READ_WRITE GRUP FILE
UBAH READ_ONLY FILEGROUP
Cache paket juga dibersihkan dalam skenario berikut.
- Database memiliki opsi database AUTO_CLOSE diatur ke AKTIF. Ketika tidak ada referensi koneksi pengguna atau menggunakan database, tugas latar belakang mencoba menutup dan mematikan database secara otomatis.
- Anda menjalankan beberapa kueri terhadap database yang memiliki opsi default. Kemudian, database dihilangkan.
- Rekam jepret database untuk database sumber dihilangkan.
- Anda berhasil membangun kembali log transaksi untuk database.
- Anda memulihkan cadangan database.
- Anda melepas database.
Menghapus cache rencana menyebabkan kompilasi ulang semua rencana eksekusi berikutnya dan dapat menyebabkan penurunan performa kueri secara tiba-tiba dan sementara. Untuk setiap penyimpanan cache yang dihapus dalam cache paket, log kesalahan SQL Server berisi pesan informasi berikut: SQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations. Pesan ini dicatat setiap lima menit selama cache dihapus dalam interval waktu tersebut.
Contoh
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. Contohnya 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 mengaktifkan 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, memodifikasi, 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
- Statistik
- DATABASEPROPERTYEX
- sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
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 | OFF }
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 adalah 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 ada perolehan performa, Mesin Database akan terus menggunakan rencana baik terakhir yang diketahui. Jika perolehan performa tidak terdeteksi, Mesin Database akan menghasilkan rencana kueri baru. Pernyataan akan gagal jika Penyimpanan Kueri tidak diaktifkan atau jika tidak dalam mode Baca-Tulis .
TIDAK AKTIF
Mesin Database melaporkan potensi regresi performa kueri yang disebabkan oleh perubahan rencana kueri dalam tampilan sys.dm_db_tuning_recommendations . Namun, rekomendasi ini tidak diterapkan secara otomatis. Pengguna dapat memantau rekomendasi aktif dan memperbaiki masalah yang diidentifikasi dengan menerapkan skrip transact-SQL yang ditampilkan dalam tampilan.
<> change_tracking_option ::=
Mengontrol opsi pelacakan perubahan. Anda dapat mengaktifkan pelacakan perubahan, mengatur opsi, mengubah opsi, dan menonaktifkan pelacakan perubahan. Misalnya, lihat bagian "Contoh" nanti di artikel ini.
AKTIF
Mengaktifkan pelacakan perubahan untuk database. Saat mengaktifkan pelacakan perubahan, Anda juga dapat mengatur opsi PEMBERSIHAN OTOMATIS dan UBAH RETENSI.
AUTO_CLEANUP = { 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 IsCloseCursorsOnCommitEnabled properti 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 Azure SQL Database.
Ketika enkripsi diaktifkan di tingkat database, semua grup file akan dienkripsi. Setiap grup file baru akan mewarisi properti terenkripsi. Jika ada grup file dalam database yang diatur ke BACA SAJA, operasi enkripsi database akan gagal.
Anda dapat melihat status enkripsi database dengan menggunakan tampilan manajemen dinamis sys.dm_database_encryption_keys .
<> db_update_option ::=
Mengontrol apakah pembaruan diizinkan pada database.
READ_ONLY
Pengguna dapat membaca data dari database tetapi tidak mengubahnya.
Catatan
Untuk meningkatkan performa kueri, perbarui statistik sebelum mengatur database ke READ_ONLY. Jika statistik tambahan diperlukan setelah database diatur ke READ_ONLY, Mesin Database akan membuat statistik di tempdb. Untuk informasi selengkapnya tentang statistik untuk database baca-saja, lihat Statistik.
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 Azure SQL Database database federasi, SET { READ_ONLY | READ_WRITE } dinonaktifkan.
<> db_user_access_option ::=
Mengontrol akses pengguna ke database.
RESTRICTED_USER
Memungkinkan hanya 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 akan ditolak. Dalam 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 . Dalam 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. 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.
<> PARAMETERIZATION_option ::=
Mengontrol opsi parameterisasi.
PARAMETERISASI { | SEDERHANA FORCED }
SEDERHANA
Kueri diparameterkan berdasarkan perilaku default database.
DIPAKSA
SQL Server membuat parameter semua kueri dalam database.
Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa is_parameterization_forced kolom dalam tampilan katalog sys.databases .
<> query_store_options ::=
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 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..
KOSONGKAN
Hapus konten Penyimpanan Kueri.
OPERATION_MODE
Menjelaskan mode operasi Penyimpanan Kueri. Nilai yang valid adalah READ_ONLY dan READ_WRITE. Dalam mode READ_WRITE, Penyimpanan Kueri mengumpulkan dan mempertahankan rencana kueri dan informasi statistik eksekusi runtime. Dalam mode READ_ONLY, informasi dapat dibaca dari Penyimpanan Kueri, tetapi informasi baru tidak ditambahkan. Jika ruang maksimum yang dialokasikan dari Penyimpanan Kueri telah habis, Penyimpanan Kueri akan berubah adalah mode operasi menjadi READ_ONLY.
CLEANUP_POLICY
Menjelaskan kebijakan penyimpanan data Penyimpanan Kueri. STALE_QUERY_THRESHOLD_DAYS menentukan jumlah hari 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 tipe bigint. Nilai defaultnya adalah 900 (15 menit).
MAX_STORAGE_SIZE_MB
Menentukan ruang yang dialokasikan ke Penyimpanan Kueri. MAX_STORAGE_SIZE_MB adalah tipe bigint. Untuk edisi SQL Database Premium, defaultnya adalah 1 GB dan untuk SQL Database edisi Dasar, 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. Storage ukuran hanya dicentang saat Penyimpanan Kueri menulis data ke disk. Interval ini diatur oleh DATA_FLUSH_INTERVAL_SECONDS opsi atau opsi kotak dialog penyimpanan kueri Management Studio Interval Flush Data. Nilai default interval adalah 900 detik (atau 15 menit).
Jika Penyimpanan Kueri telah melanggar MAX_STORAGE_SIZE_MB batas antara pemeriksaan ukuran penyimpanan, penyimpanan akan beralih ke mode baca-saja. Jika SIZE_BASED_CLEANUP_MODE diaktifkan, mekanisme pembersihan untuk memberlakukan MAX_STORAGE_SIZE_MB batas juga dipicu.
Setelah cukup ruang dibersihkan, mode Penyimpanan Kueri akan secara otomatis beralih kembali ke baca-tulis.
Penting
Jika Anda berpikir bahwa pengambilan beban kerja Anda akan membutuhkan lebih dari 10 GB ruang disk, Anda mungkin harus memikirkan kembali dan mengoptimalkan beban kerja Anda untuk menggunakan kembali rencana kueri (misalnya menggunakan parameterisasi paksa, atau menyesuaikan konfigurasi Penyimpanan Kueri.
Dimulai dengan SQL Server 2019 (15.x) dan di Azure SQL Database, Anda dapat mengatur QUERY_CAPTURE_MODE ke KUSTOM untuk kontrol tambahan atas kebijakan pengambilan kueri.
INTERVAL_LENGTH_MINUTES
Menentukan interval waktu di mana data statistik eksekusi runtime dikumpulkan ke dalam Penyimpanan Kueri. Untuk mengoptimalkan penggunaan ruang, statistik eksekusi runtime di penyimpanan statistik runtime dikumpulkan selama jendela waktu tetap. Jendela waktu tetap ini dikonfigurasi dengan menggunakan argumen INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES adalah jenis bigint. Nilai defaultnya adalah 60.
SIZE_BASED_CLEANUP_MODE = { | OTOMATIS NONAKTIF }
Mengontrol apakah pembersihan akan diaktifkan secara otomatis ketika jumlah total data mendekati ukuran maksimum.
TIDAK AKTIF
Pembersihan berbasis ukuran tidak akan diaktifkan secara otomatis.
AUTO
Pembersihan berbasis ukuran akan diaktifkan secara otomatis ketika ukuran pada disk mencapai 90% dari max_storage_size_mb. Pembersihan berbasis ukuran menghapus kueri yang paling murah dan terlama terlebih dahulu. Ini berhenti 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 kehilangan pengambilan kueri penting.
KUSTOM
Memungkinkan kontrol atas opsi QUERY_CAPTURE_POLICY.
QUERY_CAPTURE_MODE adalah jenis nvarchar.
MAX_PLANS_PER_QUERY
Menentukan jumlah maksimum paket yang dipertahankan untuk setiap kueri. MAX_PLANS_PER_QUERY adalah 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
Dalam 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 SQL Transact. 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 SQL Transact 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 | OFF }
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 ::=
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.
=| { SECONDS TARGET_RECOVERY_TIME target_recovery_time MINUTES }
target_recovery_time
Menentukan batas maksimum pada waktu untuk memulihkan database yang ditentukan jika terjadi crash. target_recovery_time adalah type int.
DETIK
Menunjukkan bahwa target_recovery_time dinyatakan sebagai jumlah detik.
MENIT
Menunjukkan bahwa target_recovery_time dinyatakan sebagai jumlah menit.
Untuk informasi selengkapnya tentang titik pemeriksaan tidak langsung, lihat Titik Pemeriksaan Database.
DENGAN <penghentian> ::=
Menentukan kapan harus mengembalikan transaksi yang tidak lengkap saat database ditransisikan dari satu status ke status lainnya. Jika 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.
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. Contoh 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 memungkinkan 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, mengubah, 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
- Statistik
- DATABASEPROPERTYEX
- sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
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 | 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.
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 | OFF }
AKTIF
File database adalah kandidat untuk penyusutan berkala. Kecuali Anda memiliki persyaratan khusus, jangan atur opsi AUTO_SHRINK database ke AKTIF. Untuk informasi selengkapnya, lihat Menyusutkan database.
File data dan file log dapat disusutkan secara otomatis. AUTO_SHRINK mengurangi ukuran log transaksi hanya jika Anda mengatur database ke model pemulihan SIMPLE atau jika Anda mencadangkan log. Saat diatur ke NONAKTIF, file database tidak secara otomatis menyusut selama pemeriksaan berkala untuk ruang yang tidak digunakan.
Opsi AUTO_SHRINK menyebabkan file menyusut 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 | 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 diatur ke NONAKTIF, dan statistik pembaruan Pengoptimal Kueri secara sinkron.
TIDAK AKTIF
Menentukan bahwa pembaruan statistik untuk opsi AUTO_UPDATE_STATISTICS sinkron. Pengoptimal Kueri menunggu pembaruan statistik selesai sebelum mengkompilasi kueri.
Mengatur opsi ini ke NONAKTIF tidak berpengaruh kecuali AUTO_UPDATE_STATISTICS diatur ke AKTIF.
Anda dapat menentukan status opsi ini dengan memeriksa is_auto_update_stats_async_on kolom dalam tampilan katalog sys.databases .
Untuk informasi selengkapnya yang menjelaskan kapan harus menggunakan pembaruan statistik sinkron atau asinkron, lihat bagian "Menggunakan opsi statistik di seluruh database" dalam Statistik.
<> automatic_tuning_option ::=
Mengontrol opsi otomatis untuk Penyetelan otomatis.
FORCE_LAST_GOOD_PLAN = { ON | NONAKTIF }
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 ada perolehan performa, Mesin Database akan terus menggunakan rencana baik terakhir yang diketahui. Jika perolehan performa tidak terdeteksi, 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 SQL Transact 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 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 properti IsCloseCursorsOnCommitEnabled dari 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 Azure SQL Database.
Ketika enkripsi diaktifkan di tingkat database, semua grup file akan dienkripsi. Setiap grup file baru akan mewarisi properti terenkripsi. Jika ada grup file dalam database yang diatur ke BACA SAJA, operasi enkripsi database akan gagal.
Anda dapat melihat status enkripsi database dengan menggunakan tampilan manajemen dinamis sys.dm_database_encryption_keys .
<> delayed_durability_option ::=
Mengontrol apakah transaksi berkomitmen sepenuhnya tahan lama atau tertunda tahan lama.
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. 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. Storage ukuran dicentang hanya ketika Penyimpanan Kueri menulis data ke disk. Interval ini diatur oleh DATA_FLUSH_INTERVAL_SECONDS opsi atau opsi kotak dialog Penyimpanan Kueri Management Studio 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 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 Pengambilan Kedaluarsa default, kueri harus memiliki total setidaknya 100 md waktu CPU yang dihabiskan selama eksekusi dalam satu hari untuk dipertahankan di Penyimpanan Kueri. TOTAL_EXECUTION_CPU_TIME_MS adalah jenis int.
<> snapshot_option ::=
Menentukan tingkat isolasi transaksi.
ALLOW_SNAPSHOT_ISOLATION { ON | NONAKTIF }
AKTIF
Mengaktifkan opsi Rekam Jepret di tingkat database. Saat diaktifkan, pernyataan DML mulai menghasilkan versi baris bahkan ketika tidak ada transaksi yang menggunakan Isolasi Rekam Jepret. Setelah opsi ini diaktifkan, transaksi dapat menentukan tingkat isolasi transaksi SNAPSHOT. 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.
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 database sistem, pengaturan tersebut menjadi default untuk database baru apa pun yang dibuat, kecuali untuk tempdb.
Opsinya adalah AKTIF, secara default, untuk master database dan msdb .
Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa snapshot_isolation_state kolom dalam tampilan katalog sys.databases .
READ_COMMITTED_SNAPSHOT { ON | NONAKTIF }
AKTIF
Mengaktifkan opsi 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 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 model database sistem, pengaturan tersebut menjadi default untuk database baru yang dibuat, kecuali untuk tempdb.
Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa is_read_committed_snapshot_on kolom dalam tampilan katalog sys.databases .
Peringatan
Saat tabel dibuat dengan DURABILITY = SCHEMA_ONLY, dan READ_COMMITTED_SNAPSHOT kemudian diubah menggunakan ALTER DATABASE, data dalam tabel akan hilang.
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | NONAKTIF }
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.
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 dilapisi dengan panjang kolom.
Ketika OFF ditentukan, pengaturan ini hanya memengaruhi definisi kolom baru.
Penting
Dalam versi SQL Server yang akan datang, 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 dilapisi ke panjang kolom.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan tingkat database default untuk ANSI_PADDING. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_PADDING ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat SET ANSI_PADDING.
Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_padding_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiPaddingEnabled properti fungsi DATABASEPROPERTYEX .
ANSI_WARNINGS { ON | OFF }
AKTIF
Kesalahan atau peringatan dikeluarkan ketika kondisi seperti membagi demi nol terjadi. Kesalahan dan peringatan juga dikeluarkan ketika nilai null muncul dalam fungsi agregat.
TIDAK AKTIF
Tidak ada peringatan yang dimunculkan dan nilai null dikembalikan ketika kondisi seperti membagi demi nol terjadi.
Penting
SET ANSI_WARNINGS harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk ANSI_WARNINGS. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_WARNINGS ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR ANSI_WARNINGS.
Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_warnings_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiWarningsEnabled properti fungsi DATABASEPROPERTYEX .
ARITHABORT { ON | OFF }
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 memproses 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 | OFF }
AKTIF
Hasil dari operasi perangkaian adalah NULL ketika salah satu operand adalah NULL. Misalnya, menggabungkan string karakter "Ini" dan NULL menyebabkan nilai NULL, alih-alih nilai "Ini".
TIDAK AKTIF
Nilai null diperlakukan sebagai string karakter kosong.
Penting
CONCAT_NULL_YIELDS_NULL harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.
Dalam versi SQL Server 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 | OFF }
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 | OFF }
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 SQL Transact 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 dapat berada dalam tanda kutip dan harus mengikuti semua aturan SQL Transact 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 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 tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR QUOTED_IDENTIFIER.
Anda dapat menentukan status opsi ini dengan memeriksa is_quoted_identifier_on kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsQuotedIdentifiersEnabled properti fungsi DATABASEPROPERTYEX .
RECURSIVE_TRIGGERS { ON | OFF }
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 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 sistem.
Contoh
A. Mengaktifkan isolasi rekam jepret pada database
Contoh berikut mengaktifkan 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, memodifikasi, 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
- Statistik
- DATABASEPROPERTYEX
- sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
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 | 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.
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 Azure SQL Database.
Ketika enkripsi diaktifkan di tingkat database, semua grup file akan dienkripsi. Setiap grup file baru akan mewarisi properti terenkripsi. Jika ada grup file dalam database yang diatur ke BACA SAJA, operasi enkripsi database akan gagal.
Anda dapat melihat status enkripsi database dan status pemindaian enkripsi dengan menggunakan 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. Storage biaya 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'>
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;