OPSI ALTER DATABASE SET (Transact-SQL)
Mengatur opsi database di Microsoft SQL Server, Azure SQL Database, dan Azure Synapse Analytics. Untuk opsi UBAH DATABASE lainnya, lihat MENGUBAH DATABASE.
Catatan
Mengatur beberapa opsi dengan ALTER DATABASE mungkin memerlukan akses database eksklusif. Jika pernyataan ALTER DATABASE tidak selesai tepat waktu, periksa untuk melihat apakah sesi lain dalam database memblokir sesi ALTER DATABASE.
Untuk informasi selengkapnya tentang konvensi sintaks, lihat Konvensi sintaks transact-SQL.
Pilih produk
Di baris berikut, pilih nama produk mana pun yang Anda minati. Melakukan itu menampilkan isi yang berbeda di sini pada halaman web ini, sesuai untuk produk mana pun yang Anda pilih.
* SQL Server *
SQL Server
Pencerminan database, grup ketersediaan AlwaysOn, dan tingkat kompatibilitas adalah SET
opsi tetapi dijelaskan dalam artikel terpisah karena panjangnya. Untuk informasi selengkapnya, lihat MENGUBAH Pencerminan Database DATABASE, MENGUBAH HADR SET DATABASE, dan MENGUBAH tingkat kompatibilitas DATABASE.
Konfigurasi terlingkup database digunakan untuk mengatur beberapa konfigurasi database di tingkat database individual. Untuk informasi selengkapnya, lihat MENGUBAH KONFIGURASI CAKUPAN DATABASE.
Catatan
Banyak opsi kumpulan database dapat dikonfigurasi untuk sesi saat ini dengan menggunakan pernyataan SET dan sering dikonfigurasi oleh aplikasi saat terhubung. Opsi set tingkat sesi mengambil alih ALTER DATABASE SET
nilai. Opsi database yang dijelaskan di bagian berikut ini adalah nilai yang bisa Anda atur untuk sesi yang tidak secara eksplisit menyediakan nilai opsi set lainnya.
Sintaks
ALTER DATABASE { database_name | CURRENT }
SET
{
<option_spec> [ ,...n ] [ WITH <termination> ]
}
<option_spec> ::=
{
<accelerated_database_recovery>
| <auto_option>
| <automatic_tuning_option>
| <change_tracking_option>
| <containment_option>
| <cursor_option>
| <database_mirroring_option>
| <date_correlation_optimization_option>
| <db_encryption_option>
| <db_state_option>
| <db_update_option>
| <db_user_access_option>
| <delayed_durability_option>
| <external_access_option>
| FILESTREAM ( <FILESTREAM_option> )
| <HADR_options>
| <mixed_page_allocation_option>
| <parameterization_option>
| <query_store_options>
| <recovery_option>
| <remote_data_archive_option>
| <service_broker_option>
| <snapshot_option>
| <sql_option>
| <suspend_for_snapshot_backup>
| <target_recovery_time_option>
| <termination>
| <temporal_history_retention>
| <data_retention_policy>
}
;
<accelerated_database_recovery> ::=
{
ACCELERATED_DATABASE_RECOVERY = { ON | OFF }
[ ( PERSISTENT_VERSION_STORE_FILEGROUP = { filegroup name } ) ];
}
<auto_option> ::=
{
AUTO_CLOSE { ON | OFF }
| AUTO_CREATE_STATISTICS { OFF | ON [ ( INCREMENTAL = { ON | OFF } ) ] }
| AUTO_SHRINK { ON | OFF }
| AUTO_UPDATE_STATISTICS { ON | OFF }
| AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}
<automatic_tuning_option> ::=
{
AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF } )
}
<change_tracking_option> ::=
{
CHANGE_TRACKING
{
= OFF
| = ON [ ( <change_tracking_option_list > [,...n] ) ]
| ( <change_tracking_option_list> [,...n] )
}
}
<change_tracking_option_list> ::=
{
AUTO_CLEANUP = { ON | OFF }
| CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
}
<containment_option> ::=
CONTAINMENT = { NONE | PARTIAL }
<cursor_option> ::=
{
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
| CURSOR_DEFAULT { LOCAL | GLOBAL }
}
<database_mirroring_option>
ALTER DATABASE Database Mirroring
<date_correlation_optimization_option> ::=
DATE_CORRELATION_OPTIMIZATION { ON | OFF }
<db_encryption_option> ::=
ENCRYPTION { ON | OFF | SUSPEND | RESUME }
<db_state_option> ::=
{ ONLINE | OFFLINE | EMERGENCY }
<db_update_option> ::=
{ READ_ONLY | READ_WRITE }
<db_user_access_option> ::=
{ SINGLE_USER | RESTRICTED_USER | MULTI_USER }
<delayed_durability_option> ::=
DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }
<external_access_option> ::=
{
DB_CHAINING { ON | OFF }
| TRUSTWORTHY { ON | OFF }
| DEFAULT_FULLTEXT_LANGUAGE = { <lcid> | <language name> | <language alias> }
| DEFAULT_LANGUAGE = { <lcid> | <language name> | <language alias> }
| NESTED_TRIGGERS = { OFF | ON }
| TRANSFORM_NOISE_WORDS = { OFF | ON }
| TWO_DIGIT_YEAR_CUTOFF = { 1753, ..., 2049, ..., 9999 }
}
<FILESTREAM_option> ::=
{
NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL
| DIRECTORY_NAME = <directory_name>
}
<HADR_options> ::=
ALTER DATABASE SET HADR
<mixed_page_allocation_option> ::=
MIXED_PAGE_ALLOCATION { OFF | ON }
<parameterization_option> ::=
PARAMETERIZATION { SIMPLE | FORCED }
<query_store_options> ::=
{
QUERY_STORE
{
= OFF [ ( FORCED ) ]
| = ON [ ( <query_store_option_list> [,...n] ) ]
| ( < query_store_option_list> [,...n] )
| CLEAR [ ALL ]
}
}
<query_store_option_list> ::=
{
OPERATION_MODE = { READ_WRITE | READ_ONLY }
| CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = number )
| DATA_FLUSH_INTERVAL_SECONDS = number
| MAX_STORAGE_SIZE_MB = number
| INTERVAL_LENGTH_MINUTES = number
| SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
| QUERY_CAPTURE_MODE = { ALL | AUTO | CUSTOM | NONE }
| MAX_PLANS_PER_QUERY = number
| WAIT_STATS_CAPTURE_MODE = { ON | OFF }
| QUERY_CAPTURE_POLICY = ( <query_capture_policy_option_list> [,...n] )
}
<query_capture_policy_option_list> :: =
{
STALE_CAPTURE_POLICY_THRESHOLD = number { DAYS | HOURS }
| EXECUTION_COUNT = number
| TOTAL_COMPILE_CPU_TIME_MS = number
| TOTAL_EXECUTION_CPU_TIME_MS = number
}
<recovery_option> ::=
{
RECOVERY { FULL | BULK_LOGGED | SIMPLE }
| TORN_PAGE_DETECTION { ON | OFF }
| PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | NONE }
}
<remote_data_archive_option> ::=
{
REMOTE_DATA_ARCHIVE =
{
ON ( SERVER = <server_name>,
{
CREDENTIAL = <db_scoped_credential_name>
| FEDERATED_SERVICE_ACCOUNT = ON | OFF
}
)
| OFF
}
}
<service_broker_option> ::=
{
ENABLE_BROKER
| DISABLE_BROKER
| NEW_BROKER
| ERROR_BROKER_CONVERSATIONS
| HONOR_BROKER_PRIORITY { ON | OFF }
}
<snapshot_option> ::=
{
ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
| READ_COMMITTED_SNAPSHOT { ON | OFF }
| MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = { ON | OFF }
}
<sql_option> ::=
{
ANSI_NULL_DEFAULT { ON | OFF }
| ANSI_NULLS { ON | OFF }
| ANSI_PADDING { ON | OFF }
| ANSI_WARNINGS { ON | OFF }
| ARITHABORT { ON | OFF }
| COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
| CONCAT_NULL_YIELDS_NULL { ON | OFF }
| NUMERIC_ROUNDABORT { ON | OFF }
| QUOTED_IDENTIFIER { ON | OFF }
| RECURSIVE_TRIGGERS { ON | OFF }
}
<suspend_for_snapshot_backup> ::=
SET SUSPEND_FOR_SNAPSHOT_BACKUP = { ON | OFF } [ ( MODE = COPY_ONLY ) ]
<target_recovery_time_option> ::=
TARGET_RECOVERY_TIME = target_recovery_time { SECONDS | MINUTES }
<termination>::=
{
ROLLBACK AFTER number [ SECONDS ]
| ROLLBACK IMMEDIATE
| NO_WAIT
}
<temporal_history_retention> ::=
TEMPORAL_HISTORY_RETENTION { ON | OFF }
<data_retention_policy> ::=
DATA_RETENTION { ON | OFF }
Argumen
database_name
Nama database yang akan dimodifikasi.
CURRENT
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))
Menjalankan tindakan dalam database saat ini. CURRENT
tidak didukung untuk semua opsi dalam semua konteks. Jika CURRENT
gagal, berikan nama database.
<> accelerated_database_recovery ::=
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2019 (15.x))
Mengaktifkan pemulihan database terakselerasi (ADR) per database. ADR diatur ke NONAKTIF secara default di SQL Server 2019 (15.x). Dengan menggunakan sintaks ini, Anda dapat menunjuk grup file tertentu untuk data Penyimpanan Versi Persisten (PVS). Jika tidak ada grup file yang ditentukan, PVS akan disimpan dalam grup file PRIMER. Untuk contoh dan informasi selengkapnya, lihat Pemulihan database yang dipercepat.
<> auto_option ::=
Mengontrol opsi otomatis.
AUTO_CLOSE { ON | NONAKTIF }
AKTIF
Database dimatikan dengan bersih dan sumber dayanya dibebaskan setelah pengguna terakhir keluar.
Database secara otomatis dibuka kembali saat pengguna mencoba menggunakan database lagi. Misalnya, perilaku buka kembali ini terjadi saat pengguna mengeluarkan
USE database_name
pernyataan. Database dapat dimatikan dengan bersih dengan AUTO_CLOSE diatur ke AKTIF. Jika demikian, database tidak terbuka kembali sampai pengguna mencoba menggunakan database saat mesin Database dimulai ulang.Setelah database dimatikan, saat aplikasi mencoba menggunakan database, database harus dibuka terlebih dahulu, lalu status berubah menjadi online. Ini mungkin memakan waktu dan dapat mengakibatkan batas waktu aplikasi.
TIDAK AKTIF
Database tetap terbuka setelah pengguna terakhir keluar.
Opsi AUTO_CLOSE berguna untuk database desktop karena memungkinkan file database dikelola sebagai file reguler. Mereka dapat dipindahkan, disalin untuk membuat cadangan, atau bahkan dikirim melalui email ke pengguna lain. Proses AUTO_CLOSE asinkron; berulang kali membuka dan menutup database tidak mengurangi performa.
Catatan
Opsi AUTO_CLOSE tidak tersedia dalam database mandiri atau di SQL Database.
Anda dapat menentukan status opsi ini dengan memeriksa is_auto_close_on
kolom dalam tampilan katalog sys.databases atau IsAutoClose
properti fungsi DATABASEPROPERTYEX .
Saat AUTO_CLOSE diatur ke AKTIF, beberapa kolom dalam tampilan katalog sys.databases dan fungsi DATABASEPROPERTYEX akan mengembalikan NULL karena database tidak tersedia untuk mengambil data. Untuk mengatasi masalah ini, jalankan pernyataan USE untuk membuka database.
Pencerminan database memerlukan AUTO_CLOSE diatur ke NONAKTIF.
Ketika database diatur ke AUTOCLOSE = ON
, operasi yang memulai pematian database otomatis akan menghapus cache paket untuk instans SQL Server. Menghapus cache rencana menyebabkan kompilasi ulang semua rencana eksekusi berikutnya dan dapat menyebabkan penurunan performa kueri secara tiba-tiba dan sementara. Dimulai dengan Paket Layanan SQL Server 2005 (9.x) 2, untuk setiap penyimpanan cache yang dihapus dalam cache paket, log kesalahan SQL Server berisi pesan informasi berikut: SQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations
. Pesan ini dicatat setiap lima menit selama cache dihapus dalam interval waktu tersebut.
Pengaturan AUTO_CLOSE dapat menjadi fitur yang berguna dalam beberapa situasi langka, misalnya, dalam instans SQL Server tanpa memori yang cukup untuk beroperasi dengan jumlah database yang besar, atau untuk instans SQL Server 32-bit warisan dengan sejumlah besar database. Dalam skenario seperti itu, mungkin berguna untuk mengaktifkan AUTO_CLOSE dan menghemat sumber daya memori yang diperlukan untuk menjaga database tetap terbuka ketika tidak ada aplikasi yang menggunakan database. Ketika database terbuka, beberapa alokasi memori default diperlukan (misalnya, struktur internal untuk mewakili berbagai objek metadata database dan buffer log transaksi).
AUTO_CREATE_STATISTICS { ON | NONAKTIF }
AKTIF
Pengoptimal Kueri membuat statistik pada kolom tunggal dalam predikat kueri, seperlunya, untuk meningkatkan rencana kueri dan performa kueri. Statistik kolom tunggal ini dibuat saat Pengoptimal Kueri mengkompilasi kueri. Statistik kolom tunggal dibuat hanya pada kolom yang belum menjadi kolom pertama dari objek statistik yang ada.
Pengaturan defaultnya adalah AKTIF. Kami menyarankan agar Anda menggunakan pengaturan default untuk sebagian besar database.
TIDAK AKTIF
Pengoptimal Kueri tidak membuat statistik pada satu kolom dalam predikat kueri saat mengkompilasi kueri. Mengatur opsi ini ke NONAKTIF dapat menyebabkan rencana kueri suboptimal dan performa kueri yang terdegradasi.
Anda dapat menentukan status opsi ini dengan memeriksa is_auto_create_stats_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAutoCreateStatistics
properti fungsi DATABASEPROPERTYEX .
Untuk informasi selengkapnya, lihat bagian "Menggunakan opsi statistik seluruh Database" dalam Statistik.
INKREMENTAL = AKTIF | OFF
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2014 (12.x)) dan Azure SQL Database
Atur AUTO_CREATE_STATISTICS ke AKTIF, dan atur INCREMENTAL ke AKTIF. Set ini secara otomatis membuat statistik sebagai bertahap setiap kali statistik inkremental didukung. Nilai defaultnya adalah NONAKTIF. Untuk informasi selengkapnya, lihat MEMBUAT STATISTIK.
AUTO_SHRINK { ON | NONAKTIF }
AKTIF
File database adalah kandidat untuk penyusutan berkala. Kecuali Anda memiliki persyaratan tertentu, jangan atur opsi database AUTO_SHRINK ke AKTIF. Untuk informasi selengkapnya, lihat Menyusutkan database.
File data dan file log dapat disusutkan secara otomatis. AUTO_SHRINK mengurangi ukuran log transaksi hanya jika Anda mengatur database ke model pemulihan SIMPLE atau jika Anda mencadangkan log. Saat Anda mengatur AUTO_SHRINK ke NONAKTIF, file database tidak secara otomatis menyusut selama pemeriksaan berkala untuk ruang yang tidak digunakan.
Opsi AUTO_SHRINK menyusutkan file ketika lebih dari 25 persen file berisi ruang yang tidak digunakan. Ini menyusutkan file ke salah satu dari dua ukuran (mana yang lebih besar):
- Ukuran di mana 25 persen dari file adalah ruang yang tidak digunakan
- Ukuran file ketika dibuat
Anda tidak dapat menyusutkan database baca-saja.
TIDAK AKTIF
File database tidak disusutkan secara otomatis selama pemeriksaan berkala untuk ruang yang tidak digunakan.
Anda dapat menentukan status opsi ini dengan memeriksa is_auto_shrink_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAutoShrink
properti fungsi DATABASEPROPERTYEX .
Catatan
Opsi AUTO_SHRINK tidak tersedia dalam Database Terkandung.
AUTO_UPDATE_STATISTICS { ON | NONAKTIF }
AKTIF
Menentukan bahwa Pengoptimal Kueri memperbarui statistik saat digunakan oleh kueri dan kapan mungkin sudah kedaluarsa. Statistik menjadi kedaluarsa setelah operasi sisipkan, perbarui, hapus, atau gabungkan mengubah distribusi data dalam tabel atau tampilan terindeks. Pengoptimal Kueri menentukan kapan statistik mungkin kedaluarsa dengan menghitung jumlah modifikasi data sejak pembaruan statistik terakhir dan membandingkan jumlah modifikasi dengan ambang batas. Ambang didasarkan pada jumlah baris dalam tabel atau tampilan terindeks.
Pengoptimal Kueri memeriksa statistik yang sudah kedaluwarsa sebelum mengkompilasi kueri dan menjalankan rencana kueri yang di-cache. Pengoptimal Kueri menggunakan kolom, tabel, dan tampilan terindeks dalam predikat kueri untuk menentukan statistik mana yang mungkin sudah kedaluarsa. Pengoptimal Kueri menentukan informasi ini sebelum mengkompilasi kueri. Sebelum menjalankan rencana kueri yang di-cache, Mesin Database memverifikasi bahwa rencana kueri mereferensikan statistik terbaru.
Opsi AUTO_UPDATE_STATISTICS berlaku untuk statistik yang dibuat untuk indeks, kolom tunggal dalam predikat kueri, dan statistik yang dibuat dengan menggunakan pernyataan CREATE STATISTICS. Opsi ini juga berlaku untuk statistik yang difilter.
Defaultnya adalah ON. Kami menyarankan agar Anda menggunakan pengaturan default untuk sebagian besar database.
Gunakan opsi AUTO_UPDATE_STATISTICS_ASYNC untuk menentukan apakah statistik diperbarui secara sinkron atau asinkron.
TIDAK AKTIF
Menentukan bahwa Pengoptimal Kueri tidak memperbarui statistik saat digunakan oleh kueri. Pengoptimal Kueri juga tidak memperbarui statistik saat mungkin sudah kedaluarsa. Mengatur opsi ini ke NONAKTIF dapat menyebabkan rencana kueri suboptimal dan performa kueri yang terdegradasi.
Anda dapat menentukan status opsi ini dengan memeriksa is_auto_update_stats_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAutoUpdateStatistics
properti fungsi DATABASEPROPERTYEX .
Untuk informasi selengkapnya, lihat bagian "Menggunakan opsi statistik seluruh Database" dalam Statistik.
AUTO_UPDATE_STATISTICS_ASYNC { ON | NONAKTIF }
AKTIF
Menentukan bahwa pembaruan statistik untuk opsi AUTO_UPDATE_STATISTICS tidak sinkron. Pengoptimal Kueri tidak menunggu pembaruan statistik selesai sebelum mengkompilasi kueri.
Mengatur opsi ini ke AKTIF tidak berpengaruh kecuali AUTO_UPDATE_STATISTICS diatur ke AKTIF.
Secara default, opsi AUTO_UPDATE_STATISTICS_ASYNC NONAKTIF, dan Pengoptimal Kueri memperbarui statistik secara sinkron.
TIDAK AKTIF
Menentukan bahwa pembaruan statistik untuk opsi AUTO_UPDATE_STATISTICS sinkron. Pengoptimal Kueri menunggu pembaruan statistik selesai sebelum mengkompilasi kueri.
Catatan
Mengatur opsi ini ke NONAKTIF tidak berpengaruh kecuali AUTO_UPDATE_STATISTICS diatur ke AKTIF.
Anda dapat menentukan status opsi ini dengan memeriksa is_auto_update_stats_async_on
kolom dalam tampilan katalog sys.databases .
Untuk informasi selengkapnya yang menjelaskan kapan harus menggunakan pembaruan statistik sinkron atau asinkron, lihat bagian "Opsi statistik" di Statistik.
<> automatic_tuning_option ::=
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2017 (14.x))
Mengaktifkan atau menonaktifkan FORCE_LAST_GOOD_PLAN
opsi Penyetelan otomatis. Anda dapat melihat status opsi ini dalam tampilan sys.database_automatic_tuning_options
.
FORCE_LAST_GOOD_PLAN = { DEFAULT | AKTIF | NONAKTIF }
DEFAULT
Nilai default untuk SQL Server NONAKTIF.
AKTIF
Mesin Database secara otomatis memaksa rencana baik terakhir yang diketahui pada kueri Transact-SQL di mana rencana kueri baru menyebabkan regresi performa. Mesin Database terus memantau performa kueri kueri Transact-SQL dengan paket paksa.
Jika terdapat peningkatan performa, Mesin Database akan terus menggunakan rencana optimal terakhir yang diketahui. Jika tidak terdapat peningkatan performa, Mesin Database akan menghasilkan rencana kueri baru. Pernyataan akan gagal jika Penyimpanan Kueri tidak diaktifkan atau jika Penyimpanan Kueri tidak dalam mode Baca-Tulis .
TIDAK AKTIF
Mesin Database melaporkan potensi regresi performa kueri yang disebabkan oleh perubahan rencana kueri dalam tampilan sys.dm_db_tuning_recommendations . Namun, rekomendasi ini tidak diterapkan secara otomatis. Pengguna dapat memantau rekomendasi aktif dan memperbaiki masalah yang diidentifikasi dengan menerapkan skrip Transact-SQL yang ditampilkan dalam tampilan. Nilai defaultnya adalah NONAKTIF.
<> change_tracking_option ::=
Berlaku untuk: SQL Server dan Azure SQL Database
Mengontrol opsi pelacakan perubahan. Anda dapat mengaktifkan pelacakan perubahan, mengatur opsi, mengubah opsi, dan menonaktifkan pelacakan perubahan. Misalnya, lihat bagian Contoh nanti di artikel ini.
AKTIF
Mengaktifkan pelacakan perubahan untuk database. Saat mengaktifkan pelacakan perubahan, Anda juga dapat mengatur opsi PEMBERSIHAN OTOMATIS dan UBAH RETENSI.
AUTO_CLEANUP = { AKTIF | NONAKTIF }
AKTIF
Informasi pelacakan perubahan dihapus secara otomatis setelah periode retensi yang ditentukan.
TIDAK AKTIF
Data pelacakan perubahan tidak dihapus secara otomatis dari database.
CHANGE_RETENTION = retention_period { DAYS | JAM | MENIT }
Menentukan periode minimum untuk menyimpan informasi pelacakan perubahan dalam database. Data dihapus hanya ketika nilai AUTO_CLEANUP AKTIF.
retention_period adalah bilangan bulat yang menentukan komponen numerik dari periode retensi.
Periode retensi default adalah 2 hari. Periode retensi minimum adalah 1 menit. Jenis retensi default adalah DAYS.
NONAKTIF Menonaktifkan pelacakan perubahan untuk database. Nonaktifkan pelacakan perubahan pada semua tabel sebelum Anda menonaktifkan pelacakan perubahan dari database.
<> containment_option ::=
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))
Mengontrol opsi penampungan database.
CONTAINMENT = { NONE | PARSIAL}
NONE
Database bukan database yang terkandung.
SEBAGIAN
Database adalah database mandiri. Mengatur penahanan database ke parsial akan gagal jika database memiliki replikasi, mengubah penangkapan data, atau mengaktifkan pelacakan perubahan. Pemeriksaan kesalahan berhenti setelah satu kegagalan. Untuk informasi selengkapnya tentang database yang terkandung, lihat Database Terkandung.
<> cursor_option ::=
Mengontrol opsi kursor.
CURSOR_CLOSE_ON_COMMIT { ON | NONAKTIF }
AKTIF
Setiap kursor terbuka saat Anda menerapkan atau mengembalikan transaksi ditutup.
TIDAK AKTIF
Kursor tetap terbuka ketika transaksi dilakukan; mengembalikan transaksi menutup kursor apa pun kecuali yang didefinisikan sebagai INSENSITIVE atau STATIC.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk CURSOR_CLOSE_ON_COMMIT. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi CURSOR_CLOSE_ON_COMMIT ke NONAKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR CURSOR_CLOSE_ON_COMMIT.
Anda dapat menentukan status opsi ini dengan memeriksa is_cursor_close_on_commit_on
kolom dalam tampilan katalog sys.databases atau IsCloseCursorsOnCommitEnabled
properti fungsi DATABASEPROPERTYEX .
CURSOR_DEFAULT { LOCAL | GLOBAL }
Berlaku untuk: SQL Server
Mengontrol apakah cakupan kursor menggunakan LOKAL atau GLOBAL.
LOKAL
Saat Anda menentukan LOCAL dan tidak menentukan kursor sebagai GLOBAL saat Anda membuat kursor, cakupan kursor bersifat lokal. Secara khusus, cakupan bersifat lokal untuk batch, prosedur tersimpan, atau pemicu tempat Anda membuat kursor. Nama kursor hanya valid dalam lingkup ini.
Kursor dapat dirujuk oleh variabel kursor lokal dalam batch, prosedur tersimpan, atau pemicu, atau parameter OUTPUT prosedur tersimpan. Kursor secara implisit dibatalkan alokasinya ketika batch, prosedur tersimpan, atau pemicu berakhir. Kursor dibatalkan alokasinya kecuali diteruskan kembali dalam parameter OUTPUT. Kursor mungkin diteruskan kembali dalam parameter OUTPUT. Jika kursor melewati kembali dengan cara ini, kursor dibatalkan alokasinya ketika variabel terakhir yang mereferensikan kursor dibatalkan alokasinya atau keluar dari cakupan.
GLOBAL
Ketika GLOBAL ditentukan, dan kursor tidak didefinisikan sebagai LOKAL saat dibuat, cakupan kursor bersifat global ke koneksi. Nama kursor dapat dirujuk dalam prosedur tersimpan atau batch apa pun yang dijalankan oleh koneksi.
Kursor secara implisit dibatalkan alokasinya hanya pada pemutusan sambungan. Untuk informasi selengkapnya, lihat MENDEKLARASIKAN KURSOR.
Anda dapat menentukan status opsi ini dengan memeriksa is_local_cursor_default
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsLocalCursorsDefault
properti fungsi DATABASEPROPERTYEX .
<> temporal_history_retention ::=
TEMPORAL_HISTORY_RETENTION { ON | NONAKTIF }
AKTIF secara default tetapi juga secara otomatis diatur ke NONAKTIF setelah operasi pemulihan titik waktu. Untuk informasi selengkapnya termasuk cara mengaktifkan pengaturan ini, lihat Cara mengonfigurasi kebijakan penyimpanan.
AKTIF
Default. Mengaktifkan kebijakan penyimpanan tabel temporal. Untuk informasi selengkapnya, lihat Mengelola retensi data historis dalam tabel temporal versi sistem.
TIDAK AKTIF
Jangan melakukan kebijakan penyimpanan historis temporal.
<> data_retention_policy ::=
Berlaku untuk: Azure SQL Edge Saja
DATA_RETENTION { ON | NONAKTIF }
AKTIF
Mengaktifkan pembersihan berbasis kebijakan Penyimpanan Data pada database.
TIDAK AKTIF
Menonaktifkan pembersihan berbasis kebijakan Penyimpanan Data pada database.
<database_mirroring>
Berlaku untuk: SQL Server
Untuk deskripsi argumen, lihat MENGUBAH Pencerminan Database DATABASE.
<> date_correlation_optimization_option ::=
Berlaku untuk: SQL Server
Mengontrol opsi date_correlation_optimization.
DATE_CORRELATION_OPTIMIZATION { ON | NONAKTIF }
AKTIF
SQL Server mempertahankan statistik korelasi di mana batasan KUNCI ASING menautkan dua tabel dalam database dan tabel memiliki kolom tanggalwaktu .
TIDAK AKTIF
Statistik korelasi tidak dipertahankan.
Untuk mengatur DATE_CORRELATION_OPTIMIZATION ke AKTIF, tidak boleh ada koneksi aktif ke database kecuali untuk koneksi yang menjalankan pernyataan ALTER DATABASE. Setelah itu, beberapa koneksi didukung.
Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa is_date_correlation_on
kolom dalam tampilan katalog sys.databases .
<> db_encryption_option ::=
Mengontrol status enkripsi database.
ENKRIPSI { AKTIF | NONAKTIF | TANGGUHKAN | LANJUTKAN }
AKTIF
Mengatur database yang akan dienkripsi.
TIDAK AKTIF
Mengatur database agar tidak dienkripsi.
MENANGGUHKAN
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2019 (15.x))
Dapat digunakan untuk menjeda pemindaian enkripsi setelah enkripsi data transparan diaktifkan atau dinonaktifkan, atau setelah kunci enkripsi diubah.
MELANJUTKAN
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2019 (15.x))
Dapat digunakan untuk melanjutkan pemindaian enkripsi yang dijeda sebelumnya.
Untuk informasi selengkapnya tentang enkripsi database, lihat Enkripsi Data Transparan, dan Enkripsi Data Transparan dengan Azure SQL Database.
Ketika enkripsi diaktifkan di tingkat database, semua grup file akan dienkripsi. Setiap grup file baru akan mewarisi properti terenkripsi. Jika ada grup file dalam database yang diatur ke BACA SAJA, operasi enkripsi database akan gagal.
Anda dapat melihat status enkripsi database dan status pemindaian enkripsi dengan menggunakan tampilan manajemen dinamis sys.dm_database_encryption_keys .
<> db_state_option ::=
Berlaku untuk: SQL Server
Mengontrol status database.
LURING
Database ditutup, dimatikan dengan bersih, dan ditandai offline. Database tidak dapat dimodifikasi saat sedang offline.
DARING
Database terbuka dan tersedia untuk digunakan.
DARURAT
Database ditandai READ_ONLY, pengelogan dinonaktifkan, dan akses terbatas pada anggota peran server tetap sysadmin. EMERGENCY terutama digunakan untuk tujuan pemecahan masalah. Misalnya, database yang ditandai sebagai tersangka karena file log yang rusak dapat diatur ke status DARURAT. Pengaturan ini dapat mengaktifkan akses baca-saja administrator sistem ke database. Hanya anggota peran server tetap sysadmin yang dapat mengatur database ke status DARURAT.
ALTER DATABASE
Memerlukan izin untuk database subjek, untuk mengubah database ke status offline atau darurat, dan izin tingkat ALTER ANY DATABASE
server untuk memindahkan database dari offline ke online.
Anda dapat menentukan status opsi ini dengan memeriksa state
kolom dan state_desc
dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa Status
properti fungsi DATABASEPROPERTYEX . Untuk informasi selengkapnya, lihat Status Database.
Database yang ditandai sebagai PEMULIHAN tidak dapat diatur ke OFFLINE, ONLINE, atau DARURAT. Database mungkin dalam status PEMULIHAN selama operasi pemulihan aktif atau ketika operasi pemulihan database atau file log gagal karena file cadangan yang rusak.
<> db_update_option ::=
Mengontrol apakah pembaruan diizinkan pada database.
READ_ONLY
Pengguna dapat membaca data dari database tetapi tidak mengubahnya.
Catatan
Untuk meningkatkan performa kueri, perbarui statistik sebelum mengatur database ke READ_ONLY. Jika statistik tambahan diperlukan setelah database diatur ke READ_ONLY, Mesin Database akan membuat statistik dalam
tempdb
database sistem. Untuk informasi selengkapnya tentang statistik untuk database baca-saja, lihat Statistik.BACA_TULIS
Database tersedia untuk operasi baca dan tulis.
Untuk mengubah status ini, Anda harus memiliki akses eksklusif ke database. Untuk informasi selengkapnya, lihat klausa SINGLE_USER.
Catatan
Pada database federasi Azure SQL Database, SET { READ_ONLY | READ_WRITE }
dinonaktifkan.
<> db_user_access_option ::=
Mengontrol akses pengguna ke database.
SINGLE_USER
Berlaku untuk: SQL Server
Menentukan bahwa hanya satu pengguna pada satu waktu yang dapat mengakses database. Jika Anda menentukan SINGLE_USER dan pengguna lain tersambung ke database, pernyataan ALTER DATABASE diblokir hingga semua pengguna terputus dari database yang ditentukan. Untuk mengambil alih perilaku ini, lihat klausul penghentian> WITH<.
Database tetap dalam mode SINGLE_USER meskipun pengguna yang mengatur opsi keluar. Pada saat itu, pengguna yang berbeda, tetapi hanya satu, yang dapat tersambung ke database.
Sebelum Anda mengatur database ke SINGLE_USER, verifikasi opsi AUTO_UPDATE_STATISTICS_ASYNC diatur ke NONAKTIF. Saat diatur ke AKTIF, utas latar belakang yang digunakan untuk memperbarui statistik mengambil koneksi terhadap database, dan Anda tidak akan dapat mengakses database dalam mode pengguna tunggal. Untuk menampilkan status opsi ini, kueri is_auto_update_stats_async_on
kolom dalam tampilan katalog sys.databases . Jika opsi diatur ke AKTIF, lakukan tugas berikut:
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
Hanya memungkinkan anggota db_owner
peran database tetap dan dbcreator
peran sysadmin
server tetap untuk menyambungkan ke database. RESTRICTED_USER tidak membatasi jumlahnya. Putuskan sambungan semua koneksi ke database menggunakan jangka waktu yang ditentukan oleh klausa penghentian pernyataan ALTER DATABASE. Setelah database beralih ke status RESTRICTED_USER, upaya koneksi oleh pengguna yang tidak memenuhi syarat ditolak.
MULTI_USER
Semua pengguna yang memiliki izin yang sesuai untuk menyambungkan ke database diizinkan. Anda dapat menentukan status opsi ini dengan memeriksa user_access
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa UserAccess
properti fungsi DATABASEPROPERTYEX .
<> delayed_durability_option ::=
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2014 (12.x))
Mengontrol apakah transaksi berkomitmen sepenuhnya tahan lama atau tertunda tahan lama.
DINONAKTIFKAN
Semua transaksi berikut
SET DISABLED
sepenuhnya tahan lama. Setiap opsi durabilitas yang diatur dalam blok atom atau pernyataan penerapan diabaikan.DIPERBOLEHKAN
Semua transaksi berikut
SET ALLOWED
sepenuhnya tahan lama atau tertunda tahan lama, tergantung pada opsi durabilitas yang ditetapkan dalam blok atom atau pernyataan penerapan.DIPAKSA
Semua transaksi berikut
SET FORCED
tertunda tahan lama. Setiap opsi durabilitas yang diatur dalam blok atom atau pernyataan penerapan diabaikan.
<> external_access_option ::=
Berlaku untuk: SQL Server
Mengontrol apakah database dapat diakses oleh sumber daya eksternal, seperti objek dari database lain.
DB_CHAINING { ON | NONAKTIF }
AKTIF
Database dapat menjadi sumber atau target rantai kepemilikan lintas database.
TIDAK AKTIF
Database tidak dapat berpartisipasi dalam rantai kepemilikan lintas database.
Penting
Instans SQL Server akan mengenali pengaturan ini ketika opsi server rantai kepemilikan silang db adalah 0 (NONAKTIF). Ketika rantai kepemilikan lintas db adalah 1 (AKTIF), semua database pengguna dapat berpartisipasi dalam rantai kepemilikan lintas database, terlepas dari nilai opsi ini. Opsi ini diatur dengan menggunakan sp_configure.
Untuk mengatur opsi ini, memerlukan CONTROL SERVER
izin pada database.
Opsi DB_CHAINING tidak dapat diatur pada master
database sistem , model
, dan tempdb
.
Anda dapat menentukan status opsi ini dengan memeriksa is_db_chaining_on
kolom dalam tampilan katalog sys.databases .
DAPAT DIPERCAYA { AKTIF | NONAKTIF }
AKTIF
Modul database (misalnya, fungsi yang ditentukan pengguna atau prosedur tersimpan) yang menggunakan konteks peniruan dapat mengakses sumber daya di luar database.
TIDAK AKTIF
Modul database dalam konteks peniruan tidak dapat mengakses sumber daya di luar database.
TRUSTWORTHY diatur ke NONAKTIF setiap kali database dilampirkan.
Secara default, semua database sistem kecuali msdb
database memiliki TRUSTWORTHY yang diatur ke NONAKTIF. Nilai tidak dapat diubah untuk model
database dan tempdb
. Kami menyarankan agar Anda tidak pernah mengatur opsi TRUSTWORTHY ke AKTIF untuk master
database.
Untuk mengatur opsi ini, memerlukan CONTROL SERVER
izin pada database.
Anda dapat menentukan status opsi ini dengan memeriksa is_trustworthy_on
kolom dalam tampilan katalog sys.databases .
DEFAULT_FULLTEXT_LANGUAGE
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))
Menentukan nilai bahasa default untuk kolom terindeks teks lengkap.
Penting
Opsi ini hanya diperbolehkan ketika CONTAINMENT telah diatur ke PARSIAL. Jika CONTAINMENT diatur ke NONE, kesalahan akan terjadi.
DEFAULT_LANGUAGE
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))
Menentukan bahasa default untuk semua login yang baru dibuat. Bahasa dapat ditentukan dengan memberikan ID lokal (lcid), nama bahasa, atau alias bahasa. Untuk daftar nama bahasa dan alias yang dapat diterima, lihat sys.syslanguages. Opsi ini hanya diperbolehkan ketika CONTAINMENT telah diatur ke PARSIAL. Jika CONTAINMENT diatur ke NONE, kesalahan akan terjadi.
NESTED_TRIGGERS
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))
Menentukan apakah pemicu AFTER dapat berskala; yaitu, melakukan tindakan yang memulai pemicu lain, yang memulai pemicu lain, dan sebagainya. Opsi ini hanya diperbolehkan ketika CONTAINMENT telah diatur ke PARSIAL. Jika CONTAINMENT diatur ke NONE, kesalahan akan terjadi.
TRANSFORM_NOISE_WORDS
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))
Digunakan untuk menekan pesan kesalahan jika kata kebisingan, atau stopword, menyebabkan operasi Boolean pada kueri teks lengkap gagal. Opsi ini hanya diperbolehkan ketika CONTAINMENT telah diatur ke PARSIAL. Jika CONTAINMENT diatur ke NONE, kesalahan akan terjadi.
TWO_DIGIT_YEAR_CUTOFF
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))
Menentukan bilangan bulat dari 1753 hingga 9999 yang mewakili tahun cutoff untuk menafsirkan tahun dua digit sebagai tahun empat digit. Opsi ini hanya diperbolehkan ketika CONTAINMENT telah diatur ke PARSIAL. Jika CONTAINMENT diatur ke NONE, kesalahan akan terjadi.
<> FILESTREAM_option ::=
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))
Mengontrol pengaturan untuk FileTables.
NON_TRANSACTED_ACCESS = { NONAKTIF | READ_ONLY | PENUH }
TIDAK AKTIF
Akses non-transaksional ke data FileTable dinonaktifkan.
READ_ONLY
Data FILESTREAM dalam FileTables dalam database ini dapat dibaca oleh proses non-transaksi.
FULL
Mengaktifkan akses penuh non-transaksi ke data FILESTREAM di FileTables diaktifkan.
DIRECTORY_NAME = <directory_name>
Nama direktori yang kompatibel dengan Windows. Nama ini harus unik di antara semua nama direktori tingkat database dalam instans SQL Server. Perbandingan keunikan tidak peka huruf besar/kecil, terlepas dari pengaturan kolase. Opsi ini harus diatur sebelum membuat FileTable dalam database ini.
<> HADR_options ::=
Berlaku untuk: SQL Server
Lihat MENGUBAH HADR KUMPULAN DATABASE.
<> mixed_page_allocation_option ::=
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2016 (13.x))
Mengontrol apakah database dapat membuat halaman awal menggunakan tingkat campuran untuk delapan halaman pertama tabel atau indeks.
MIXED_PAGE_ALLOCATION { NONAKTIF | ON }
TIDAK AKTIF
Database selalu membuat halaman awal menggunakan tingkat seragam. OFF adalah nilai default.
AKTIF
Database dapat membuat halaman awal menggunakan tingkat campuran.
Pengaturan ini AKTIF untuk semua database sistem. Database tempdb
sistem adalah satu-satunya database sistem yang mendukung NONAKTIF.
<> PARAMETERIZATION_option ::=
Mengontrol opsi parameterisasi. Untuk informasi selengkapnya tentang parameterisasi, lihat Panduan Arsitektur Pemrosesan Kueri.
PARAMETERISASI { SEDERHANA | FORCED }
SEDERHANA
Kueri diparameterkan berdasarkan perilaku default database.
DIPAKSA
SQL Server membuat parameter semua kueri dalam database.
Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa is_parameterization_forced
kolom dalam tampilan katalog sys.databases .
<> query_store_options ::=
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2016 (13.x))
AKTIF | OFF [ ( PAKSA ) ] | JELAS [ SEMUA ]
Mengontrol apakah Penyimpanan Kueri diaktifkan dalam database ini, dan juga mengontrol penghapusan konten Penyimpanan Kueri. Untuk informasi selengkapnya, lihat Skenario Penggunaan Penyimpanan Kueri.
AKTIF
Mengaktifkan Penyimpanan Kueri.
Banyak fitur performa baru SQL Server 2022 (16.x) seperti petunjuk Penyimpanan Kueri, Umpan Balik CE, umpan balik Tingkat Paralelisme (DOP), dan persistensi Umpan balik Pemberian Memori (MGF) yang diperlukan Penyimpanan Kueri untuk diaktifkan. Untuk database yang telah dipulihkan dari instans SQL Server lainnya dan untuk database yang ditingkatkan dari peningkatan di tempat ke SQL Server 2022 (16.x), database ini akan mempertahankan pengaturan Penyimpanan Kueri sebelumnya. Jika ada kekhawatiran tentang Overhead Query Store dapat diperkenalkan, administrator dapat memanfaatkan kebijakan penangkapan kustom dengan
QUERY_CAPTURE_MODE = CUSTOM
. Untuk contoh cara mengaktifkan Penyimpanan Kueri dengan opsi kebijakan penangkapan kustom, lihat bagian Contoh nanti di artikel ini.OFF [ ( PAKSA ) ]
Menonaktifkan Penyimpanan Kueri. FORCED bersifat opsional. FORCED membatalkan semua tugas latar belakang Penyimpanan Kueri yang berjalan, dan melewati flush sinkron saat Penyimpanan Kueri dinonaktifkan. Menyebabkan Penyimpanan Kueri dimatikan secepat mungkin. FORCED berlaku untuk SQL Server 2016 (13.x) SP2 CU14, SQL Server 2017 (14.x) CU21, SQL Server 2019 (15.x) CU6, dan build yang lebih baru.
Catatan
Penyimpanan Kueri tidak dapat dinonaktifkan di database tunggal Azure SQL Database dan Kumpulan Elastis.
ALTER DATABASE [database] SET QUERY_STORE = OFF
Menjalankan akan mengembalikan peringatan'QUERY_STORE=OFF' is not supported in this version of SQL Server.
.JELAS [ SEMUA ]
Menghapus data terkait kueri dari Penyimpanan Kueri. ALL bersifat opsional. SEMUA menghapus data dan metadata terkait kueri dari Penyimpanan Kueri.
OPERATION_MODE { READ_ONLY | READ_WRITE }
Menjelaskan mode operasi Penyimpanan Kueri.
BACA_TULIS
Penyimpanan Kueri mengumpulkan dan mempertahankan rencana kueri dan informasi statistik eksekusi runtime.
READ_ONLY
Informasi dapat dibaca dari Penyimpanan Kueri, tetapi informasi baru tidak ditambahkan. Jika ruang maksimum yang dikeluarkan dari Penyimpanan Kueri telah habis, Penyimpanan Kueri akan berubah adalah mode operasi menjadi READ_ONLY.
CLEANUP_POLICY
Menjelaskan kebijakan penyimpanan data Penyimpanan Kueri. STALE_QUERY_THRESHOLD_DAYS menentukan jumlah hari di mana informasi untuk kueri disimpan di Penyimpanan Kueri. STALE_QUERY_THRESHOLD_DAYS jenis besar. Nilai default adalah 30.
DATA_FLUSH_INTERVAL_SECONDS
Menentukan frekuensi di mana data yang ditulis ke Penyimpanan Kueri dipertahankan ke disk. Untuk mengoptimalkan performa, data yang dikumpulkan oleh Penyimpanan Kueri ditulis secara asinkron ke disk. Frekuensi di mana transfer asinkron ini terjadi dikonfigurasi dengan menggunakan argumen DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS jenis besar. Nilai defaultnya adalah 900 (15 menit).
MAX_STORAGE_SIZE_MB
Menentukan ruang yang dikeluarkan untuk Penyimpanan Kueri. MAX_STORAGE_SIZE_MB adalah jenis bigint. Nilai defaultnya adalah 100 MB untuk SQL Server (SQL Server 2016 (13.x) melalui SQL Server 2017 (14.x)). Dimulai dengan SQL Server 2019 (15.x), nilai defaultnya adalah 1000 MB.
MAX_STORAGE_SIZE_MB
batas tidak diberlakukan secara ketat. Ukuran penyimpanan dicentang hanya saat Penyimpanan Kueri menulis data ke disk. Interval ini diatur oleh DATA_FLUSH_INTERVAL_SECONDS
opsi atau opsi dialog Penyimpanan Kueri Studio Manajemen Interval Flush Data. Nilai default interval adalah 900 detik (atau 15 menit).
Jika Penyimpanan Kueri telah melanggar MAX_STORAGE_SIZE_MB
batas antara pemeriksaan ukuran penyimpanan, penyimpanan akan beralih ke mode baca-saja. Jika SIZE_BASED_CLEANUP_MODE
diaktifkan, mekanisme pembersihan untuk memberlakukan MAX_STORAGE_SIZE_MB
batas juga dipicu.
Setelah cukup ruang dibersihkan, mode Penyimpanan Kueri akan secara otomatis beralih kembali ke baca-tulis.
Penting
Jika Anda berpikir bahwa pengambilan beban kerja Anda akan membutuhkan lebih dari 10 GB ruang disk, Anda mungkin harus memikirkan kembali dan mengoptimalkan beban kerja Anda untuk menggunakan kembali rencana kueri (misalnya menggunakan parameterisasi paksa, atau menyesuaikan konfigurasi Penyimpanan Kueri.
Dimulai dengan SQL Server 2019 (15.x) dan di Azure SQL Database, Anda dapat mengatur QUERY_CAPTURE_MODE
ke KUSTOM untuk kontrol tambahan atas kebijakan pengambilan kueri.
INTERVAL_LENGTH_MINUTES
Menentukan interval waktu di mana data statistik eksekusi runtime dikumpulkan ke dalam Penyimpanan Kueri. Untuk mengoptimalkan penggunaan ruang, statistik eksekusi runtime di penyimpanan statistik runtime dikumpulkan selama jendela waktu tetap. Jendela waktu tetap ini dikonfigurasi dengan menggunakan argumen INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES jenis besar. Nilai defaultnya adalah 60.
SIZE_BASED_CLEANUP_MODE { AUTO | NONAKTIF }
Mengontrol apakah pembersihan diaktifkan secara otomatis ketika jumlah total data mendekati ukuran maksimum.
AUTO
Pembersihan berbasis ukuran akan diaktifkan secara otomatis ketika ukuran pada disk mencapai 90% dari MAX_STORAGE_SIZE_MB. Pembersihan berbasis ukuran menghapus kueri yang paling murah dan terlama terlebih dahulu. Ini berhenti pada sekitar 80% dari MAX_STORAGE_SIZE_MB. Nilai ini adalah nilai konfigurasi default.
TIDAK AKTIF
Pembersihan berbasis ukuran tidak akan diaktifkan secara otomatis.
SIZE_BASED_CLEANUP_MODE adalah jenis nvarchar.
QUERY_CAPTURE_MODE { ALL | AUTO | KUSTOM | TIDAK ADA }
Menunjuk mode pengambilan kueri yang saat ini aktif. Setiap mode menentukan kebijakan pengambilan kueri tertentu. QUERY_CAPTURE_MODE adalah jenis nvarchar.
Catatan
Kursor, kueri di dalam Prosedur Tersimpan, dan Kueri yang dikompilasi secara asli selalu diambil saat mode pengambilan kueri diatur ke SEMUA, OTOMATIS, atau KUSTOM.
SEMUA
Mengambil semua kueri. ALL adalah nilai konfigurasi default untuk SQL Server (SQL Server 2016 (13.x) melalui SQL Server 2017 (14.x)).
AUTO
Tangkap kueri yang relevan berdasarkan jumlah eksekusi dan konsumsi sumber daya. Ini adalah nilai konfigurasi default untuk SQL Server (Dimulai dengan SQL Server 2019 (15.x)) dan Azure SQL Database.
NONE
Berhenti mengambil kueri baru. Penyimpanan Kueri akan terus mengumpulkan statistik kompilasi dan runtime untuk kueri yang sudah diambil. Gunakan konfigurasi ini dengan hati-hati karena Anda mungkin kehilangan pengambilan kueri penting.
KUSTOM
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2019 (15.x))
Memungkinkan kontrol atas opsi QUERY_CAPTURE_POLICY. Kebijakan penangkapan kustom dapat membantu Penyimpanan Kueri mengambil kueri terpenting dalam beban kerja Anda. <Lihat query_capture_policy_option_list> untuk opsi yang dapat disesuaikan.
MAX_PLANS_PER_QUERY
Menentukan jumlah maksimum paket yang dipertahankan untuk setiap kueri. MAX_PLANS_PER_QUERY adalah tipe int. Nilai defaultnya adalah 200.
WAIT_STATS_CAPTURE_MODE { ON | NONAKTIF }
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2017 (14.x)))
Mengontrol apakah statistik tunggu akan diambil per kueri.
AKTIF
Informasi statistik tunggu per kueri diambil. Nilai ini adalah nilai konfigurasi default.
TIDAK AKTIF
Informasi statistik tunggu per kueri tidak akan diambil.
<> query_capture_policy_option_list :: =
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2019 (15.x))
Mengontrol opsi kebijakan penangkapan Penyimpanan Kueri. Kecuali untuk STALE_CAPTURE_POLICY_THRESHOLD, opsi ini menentukan kondisi OR yang perlu terjadi agar kueri diambil dalam nilai Ambang Kebijakan Pengambilan Kedaluarsa yang ditentukan.
Dimulai dengan SQL Server 2019 (15.x), QUERY_CAPTURE_MODE = AUTO
pengaturan mengambil detail penyimpanan kueri ketika salah satu ambang batas berikut terpaut:
- EXECUTION_COUNT = 30 eksekusi = jumlah eksekusi
- TOTAL_COMPILE_CPU_TIME_MS = 1 detik = waktu kompilasi dalam milidetik
- TOTAL_EXECUTION_CPU_TIME_MS = 100 md = waktu CPU eksekusi dalam milidetik
Contohnya:
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
Anda dapat menyesuaikan opsi ini dengan QUERY_CAPTURE_MODE = CUSTOM
:
STALE_CAPTURE_POLICY_THRESHOLD = bilangan bulat { DAYS | JAM }
Menentukan periode interval evaluasi untuk menentukan apakah kueri harus diambil. Defaultnya adalah 1 hari, dan dapat diatur dari 1 jam hingga tujuh hari.
EXECUTION_COUNT = bilangan bulat
Menentukan berapa kali kueri dijalankan selama periode evaluasi. Defaultnya adalah 30, yang berarti bahwa untuk Ambang Kebijakan Pengambilan Kedaluarsa default, kueri harus dijalankan setidaknya 30 kali dalam satu hari untuk dipertahankan di Penyimpanan Kueri. EXECUTION_COUNT adalah jenis int.
TOTAL_COMPILE_CPU_TIME_MS = bilangan bulat
Menentukan total waktu CPU kompilasi yang berlalu yang digunakan oleh kueri selama periode evaluasi. Defaultnya adalah 1000, yang berarti bahwa untuk Ambang Kebijakan Pengambilan Kedaluarsa default, kueri harus memiliki total setidaknya satu detik waktu CPU yang dihabiskan selama kompilasi kueri dalam satu hari untuk dipertahankan di Penyimpanan Kueri. TOTAL_COMPILE_CPU_TIME_MS adalah tipe int.
TOTAL_EXECUTION_CPU_TIME_MS = bilangan bulat
Menentukan total waktu CPU eksekusi yang berlalu yang digunakan oleh kueri selama periode evaluasi. Defaultnya adalah 100 yang berarti bahwa untuk Ambang Kebijakan Pengambilan Kedaluarsa default, kueri harus memiliki total setidaknya 100 md waktu CPU yang dihabiskan selama eksekusi dalam satu hari untuk dipertahankan di Penyimpanan Kueri. TOTAL_EXECUTION_CPU_TIME_MS adalah jenis int.
<> recovery_option ::=
Berlaku untuk: SQL Server
Mengontrol opsi pemulihan database dan pemeriksaan kesalahan I/O disk.
FULL
Menyediakan pemulihan penuh setelah kegagalan media dengan menggunakan pencadangan log transaksi. Jika file data rusak, pemulihan media dapat memulihkan semua transaksi yang dilakukan. Untuk informasi selengkapnya, lihat Model Pemulihan.
BULK_LOGGED
Menyediakan pemulihan setelah kegagalan media. Menggabungkan performa terbaik dan jumlah penggunaan ruang log paling sedikit untuk operasi skala besar atau massal tertentu. Untuk informasi tentang operasi apa yang dapat dicatat secara minimal, lihat Log Transaksi. Di bawah model pemulihan BULK_LOGGED, pengelogan untuk operasi ini minimal. Untuk informasi selengkapnya, lihat Model Pemulihan.
SEDERHANA
Strategi pencadangan sederhana yang menggunakan ruang log minimal disediakan. Ruang log dapat digunakan kembali secara otomatis saat tidak lagi diperlukan untuk pemulihan kegagalan server. Untuk informasi selengkapnya, lihat Model Pemulihan.
Penting
Model pemulihan sederhana lebih mudah dikelola daripada dua model lainnya tetapi dengan mengorbankan paparan kehilangan data yang lebih besar jika file data rusak. Semua perubahan karena database terbaru atau cadangan database diferensial hilang dan harus masuk kembali secara manual.
Model pemulihan default ditentukan oleh model model
pemulihan database sistem. Untuk informasi selengkapnya tentang memilih model pemulihan yang sesuai, lihat Model Pemulihan.
Anda dapat menentukan status opsi ini dengan memeriksa recovery_model
kolom dan recovery_model_desc
dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa Recovery
properti fungsi DATABASEPROPERTYEX .
TORN_PAGE_DETECTION { ON | NONAKTIF }
AKTIF
Halaman yang tidak lengkap dapat dideteksi oleh Mesin Database.
TIDAK AKTIF
Halaman yang tidak lengkap tidak dapat dideteksi oleh Mesin Database.
Penting
Struktur sintaks TORN_PAGE_DETECTION ON | OFF akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan struktur sintaks ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan struktur sintaks. Gunakan opsi PAGE_VERIFY sebagai gantinya.
PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | TIDAK ADA }
Menemukan halaman database yang rusak yang disebabkan oleh kesalahan jalur I/O disk. Kesalahan jalur I/O disk dapat menjadi penyebab masalah kerusakan database. Kesalahan ini paling sering disebabkan oleh kegagalan daya atau kegagalan perangkat keras disk yang terjadi pada saat halaman ditulis ke disk.
CHECKSUM
Menghitung checksum atas konten seluruh halaman dan menyimpan nilai di header halaman saat halaman ditulis ke disk. Ketika halaman dibaca dari disk, checksum dikomputasi ulang dan dibandingkan dengan nilai checksum yang disimpan di header halaman. Jika nilai tidak cocok, pesan kesalahan 824 (menunjukkan kegagalan checksum) dilaporkan ke log kesalahan SQL Server dan log peristiwa Windows. Kegagalan checksum menunjukkan masalah jalur I/O. Untuk menentukan akar penyebab memerlukan penyelidikan perangkat keras, driver firmware, BIOS, driver filter (seperti perangkat lunak virus), dan komponen jalur I/O lainnya.
TORN_PAGE_DETECTION
Menyimpan pola 2-bit tertentu untuk setiap sektor 512-byte di halaman database 8 kilobyte (KB) dan disimpan di header halaman database saat halaman ditulis ke disk. Ketika halaman dibaca dari disk, bit robek yang disimpan di header halaman dibandingkan dengan informasi sektor halaman aktual.
Nilai yang tidak cocok menunjukkan bahwa hanya sebagian halaman yang ditulis ke disk. Dalam situasi ini, pesan kesalahan 824 (menunjukkan kesalahan halaman yang robek) dilaporkan ke log kesalahan SQL Server dan log peristiwa Windows. Halaman robek biasanya terdeteksi oleh pemulihan database jika benar-benar penulisan halaman yang tidak lengkap. Namun, kegagalan jalur I/O lainnya dapat menyebabkan halaman robek kapan saja.
NONE
Penulisan halaman database tidak akan menghasilkan nilai CHECKSUM atau TORN_PAGE_DETECTION. SQL Server tidak akan memverifikasi checksum atau halaman robek selama baca meskipun nilai CHECKSUM atau TORN_PAGE_DETECTION ada di header halaman.
Pertimbangkan poin penting berikut saat Anda menggunakan opsi PAGE_VERIFY:
Defaultnya adalah CHECKSUM.
Ketika database pengguna atau sistem ditingkatkan ke SQL Server 2005 (9.x) atau versi yang lebih baru, nilai PAGE_VERIFY (TIDAK ADA atau TORN_PAGE_DETECTION) tidak diubah. Kami menyarankan agar Anda mengubah ke CHECKSUM.
Catatan
Di versi SQL Server yang lebih lama, opsi database PAGE_VERIFY diatur ke NONE untuk
tempdb
database dan tidak dapat dimodifikasi. Dimulai dengan SQL Server 2008 (10.0.x), nilai default untuktempdb
database adalah CHECKSUM untuk penginstalan baru SQL Server. Saat meningkatkan penginstalan SQL Server, nilai default tetap TIDAK ADA. Opsi dapat dimodifikasi. Kami menyarankan agar Anda menggunakan CHECKSUM untuktempdb
database.TORN_PAGE_DETECTION dapat menggunakan lebih sedikit sumber daya tetapi memberikan subset minimal dari perlindungan CHECKSUM.
PAGE_VERIFY dapat diatur tanpa membuat database offline, mengunci database, atau menghambat konkurensi pada database tersebut.
CHECKSUM saling eksklusif untuk TORN_PAGE_DETECTION. Kedua opsi tidak dapat diaktifkan secara bersamaan.
Ketika halaman robek atau kegagalan checksum terdeteksi, Anda dapat memulihkan dengan memulihkan data atau berpotensi membangun kembali indeks jika kegagalan hanya terbatas pada halaman indeks. Jika Anda mengalami kegagalan checksum, untuk menentukan jenis halaman database atau halaman yang terpengaruh, jalankan DBCC CHECKDB. Untuk informasi selengkapnya tentang opsi pemulihan, lihat PULIHKAN Argumen. Meskipun memulihkan data akan menyelesaikan masalah kerusakan data, akar penyebabnya, misalnya, kegagalan perangkat keras disk, harus didiagnosis dan diperbaiki sesegera mungkin untuk mencegah kesalahan yang berkelanjutan.
SQL Server akan mencoba kembali setiap bacaan yang gagal dengan checksum, halaman robek, atau kesalahan I/O lainnya empat kali. Jika baca berhasil dalam salah satu upaya coba lagi, pesan ditulis ke log kesalahan. Perintah yang memicu bacaan akan berlanjut. Perintah akan gagal dengan pesan kesalahan 824 jika upaya coba lagi gagal.
Untuk informasi selengkapnya tentang pesan kesalahan 823, 824, dan 825, lihat:
- 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.
Penting
Stretch Database tidak digunakan lagi di SQL Server 2022 (16.x) dan Azure SQL Database. Fitur ini akan dihapus dalam versi Mesin Database di masa mendatang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.
REMOTE_DATA_ARCHIVE = { ON ( SERVER = <server_name>, { CREDENTIAL = <db_scoped_credential_name> | FEDERATED_SERVICE_ACCOUNT = AKTIF | NONAKTIF } ) | OFF
AKTIF
Mengaktifkan Stretch Database untuk database. Untuk informasi selengkapnya, termasuk prasyarat tambahan, lihat Mengaktifkan Stretch Database untuk database.
db_owner
Memerlukan izin untuk mengaktifkan Stretch Database untuk tabel.db_owner
Memerlukan izin danCONTROL DATABASE
untuk mengaktifkan Stretch Database untuk database.SERVER = <server_name>
Menentukan alamat server Azure. Sertakan
.database.windows.net
bagian nama. Contohnya,MyStretchDatabaseServer.database.windows.net
.INFO MASUK = <db_scoped_credential_name>
Menentukan kredensial cakupan database yang digunakan instans SQL Server untuk menyambungkan ke server Azure. Pastikan kredensial ada sebelum Anda menjalankan perintah ini. Untuk informasi selengkapnya, lihat MEMBUAT KREDENSIAL CAKUPAN DATABASE.
FEDERATED_SERVICE_ACCOUNT = { AKTIF | NONAKTIF }
Anda dapat menggunakan akun layanan federasi untuk SQL Server lokal untuk berkomunikasi dengan server Azure jarak jauh saat kondisi berikut ini semuanya benar.
- Akun layanan tempat instans SQL Server berjalan adalah akun domain.
- Akun domain milik domain yang Direktori Aktifnya digabungkan dengan ID Microsoft Entra (sebelumnya Azure Active Directory).
- Server Azure jarak jauh dikonfigurasi untuk mendukung autentikasi Microsoft Entra.
- Akun layanan tempat instans SQL Server berjalan harus dikonfigurasi sebagai
dbmanager
akun atausysadmin
di server Azure jarak jauh.
Jika Anda menentukan bahwa akun layanan federasi AKTIF, Anda juga tidak dapat menentukan argumen KREDENSIAL. Berikan argumen INFO MASUK jika Anda menentukan NONAKTIF.
TIDAK AKTIF
Menonaktifkan Stretch Database untuk database. Untuk informasi selengkapnya, lihat Menonaktifkan Stretch Database dan membawa kembali data jarak jauh.
Anda hanya bisa menonaktifkan Stretch Database untuk database setelah database tidak lagi berisi tabel apa pun yang diaktifkan untuk Stretch Database. Setelah Anda menonaktifkan Stretch Database, migrasi data berhenti. Selain itu, hasil kueri tidak lagi menyertakan hasil dari tabel jarak jauh.
Menonaktifkan Stretch Database tidak menghapus database jarak jauh. Untuk menghapus database jarak jauh, letakkan dengan menggunakan portal Azure.
<> service_broker_option ::=
Berlaku untuk: SQL Server
Mengontrol opsi Service Broker berikut: mengaktifkan atau menonaktifkan pengiriman pesan, mengatur pengidentifikasi Service Broker baru, atau mengatur prioritas percakapan ke AKTIF atau NONAKTIF.
ENABLE_BROKER
Menentukan bahwa Service Broker diaktifkan untuk database yang ditentukan. Pengiriman pesan dimulai, dan is_broker_enabled
bendera diatur ke true dalam tampilan katalog sys.databases . Database menyimpan pengidentifikasi Service Broker yang ada. Broker layanan tidak dapat diaktifkan saat database adalah prinsipal dalam konfigurasi pencerminan database.
Catatan
ENABLE_BROKER memerlukan kunci database eksklusif. Jika sesi lain telah mengunci sumber daya dalam database, ENABLE_BROKER akan menunggu hingga sesi lain melepaskan kuncinya. Untuk mengaktifkan Service Broker dalam database pengguna, pastikan bahwa tidak ada sesi lain yang menggunakan database sebelum Anda menjalankan ALTER DATABASE SET ENABLE_BROKER
pernyataan, seperti dengan menempatkan database dalam mode pengguna tunggal. Untuk mengaktifkan Service Broker dalam database, pertama-tama msdb
hentikan SQL Server Agent sehingga Service Broker dapat memperoleh kunci yang diperlukan.
DISABLE_BROKER
Menentukan bahwa Service Broker dinonaktifkan untuk database yang ditentukan. Pengiriman pesan dihentikan, dan is_broker_enabled
bendera diatur ke false dalam tampilan katalog sys.databases . Database menyimpan pengidentifikasi Service Broker yang ada.
NEW_BROKER
Menentukan bahwa database harus menerima pengidentifikasi broker baru. Database bertindak sebagai broker layanan baru. Dengan demikian, semua percakapan yang ada dalam database segera dihapus tanpa menghasilkan pesan dialog akhir. Rute apa pun yang mereferensikan pengidentifikasi Service Broker lama harus dibuat ulang dengan pengidentifikasi baru.
ERROR_BROKER_CONVERSATIONS
Menentukan bahwa pengiriman pesan Service Broker diaktifkan. Pengaturan ini mempertahankan pengidentifikasi Service Broker yang ada untuk database. Service Broker mengakhiri semua percakapan dalam database dengan kesalahan. Pengaturan ini memungkinkan aplikasi menjalankan pembersihan reguler untuk percakapan yang ada.
HONOR_BROKER_PRIORITY { ON | NONAKTIF }
AKTIF
Operasi pengiriman mempertimbangkan tingkat prioritas yang ditetapkan ke percakapan. Pesan dari percakapan yang memiliki tingkat prioritas tinggi dikirim sebelum pesan dari percakapan yang diberi tingkat prioritas rendah.
TIDAK AKTIF
Operasi pengiriman berjalan seolah-olah semua percakapan memiliki tingkat prioritas default.
Perubahan pada opsi HONOR_BROKER_PRIORITY berlaku segera untuk dialog atau dialog baru yang tidak memiliki pesan yang menunggu untuk dikirim. Dialog dengan pesan yang akan dikirim ketika ALTER DATABASE dijalankan tidak akan mengambil pengaturan baru hingga beberapa pesan untuk dialog dikirim. Jumlah waktu sebelum semua dialog mulai menggunakan pengaturan baru dapat sangat bervariasi.
Pengaturan properti ini saat ini dilaporkan dalam is_broker_priority_honored
kolom dalam tampilan katalog sys.databases .
<> snapshot_option ::=
Menghitung tingkat isolasi transaksi.
ALLOW_SNAPSHOT_ISOLATION { ON | NONAKTIF }
AKTIF
Mengaktifkan opsi Rekam Jepret di tingkat database. Saat diaktifkan, pernyataan DML mulai menghasilkan versi baris bahkan ketika tidak ada transaksi yang menggunakan Isolasi Rekam Jepret. Setelah opsi ini diaktifkan, transaksi dapat menentukan tingkat isolasi transaksi SNAPSHOT. Ketika transaksi berjalan di tingkat isolasi SNAPSHOT, semua pernyataan melihat rekam jepret data seperti yang ada di awal transaksi. Jika transaksi yang berjalan di tingkat isolasi SNAPSHOT mengakses data dalam beberapa database, baik ALLOW_SNAPSHOT_ISOLATION harus diatur ke AKTIF di semua database, atau setiap pernyataan dalam transaksi harus menggunakan petunjuk penguncian pada referensi apa pun dalam klausul FROM ke tabel dalam database di mana ALLOW_SNAPSHOT_ISOLATION NONAKTIF.
TIDAK AKTIF
Menonaktifkan opsi Rekam Jepret di tingkat database. Transaksi tidak dapat menentukan tingkat isolasi transaksi SNAPSHOT.
Saat Anda mengatur ALLOW_SNAPSHOT_ISOLATION ke status baru (dari AKTIF ke NONAKTIF, atau dari NONAKTIF ke AKTIF), ALTER DATABASE tidak mengembalikan kontrol ke pemanggil hingga semua transaksi yang ada dalam database diterapkan. Jika database sudah dalam status yang ditentukan dalam pernyataan ALTER DATABASE, kontrol akan segera dikembalikan ke pemanggil. Jika pernyataan ALTER DATABASE tidak ditampilkan dengan cepat, gunakan sys.dm_tran_active_snapshot_database_transactions untuk menentukan apakah ada transaksi yang berjalan lama. Jika pernyataan ALTER DATABASE dibatalkan, database tetap dalam status saat ALTER DATABASE dimulai. Tampilan katalog sys.databases menunjukkan status transaksi isolasi rekam jepret dalam database. Jika snapshot_isolation_state_desc
= IN_TRANSITION_TO_ON, perintah ALTER DATABASE ... ALLOW_SNAPSHOT_ISOLATION OFF
akan menjeda enam detik dan mencoba kembali operasi.
Anda tidak dapat mengubah status ALLOW_SNAPSHOT_ISOLATION jika database OFFLINE.
Jika Anda mengatur ALLOW_SNAPSHOT_ISOLATION dalam database READ_ONLY, pengaturan akan disimpan jika database nanti diatur ke READ_WRITE.
Anda dapat mengubah pengaturan ALLOW_SNAPSHOT_ISOLATION untuk master
database , , model
msdb
, dan tempdb
. Pengaturan disimpan setiap kali instans Mesin Database dihentikan dan dimulai ulang jika Anda mengubah pengaturan untuk tempdb
. Jika Anda mengubah pengaturan untuk model
, pengaturan tersebut menjadi default untuk database baru apa pun yang dibuat, kecuali untuk tempdb
.
Opsinya adalah AKTIF secara default untuk master
database dan msdb
.
Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa snapshot_isolation_state
kolom dalam tampilan katalog sys.databases .
READ_COMMITTED_SNAPSHOT { ON | NONAKTIF }
AKTIF
Mengaktifkan opsi Rekam Jepret Yang Diterapkan Baca di tingkat database. Saat diaktifkan, pernyataan DML mulai menghasilkan versi baris bahkan ketika tidak ada transaksi yang menggunakan Isolasi Rekam Jepret. Setelah opsi ini diaktifkan, transaksi yang menentukan tingkat isolasi yang diterapkan baca menggunakan penerapan versi baris alih-alih mengunci. Semua pernyataan melihat rekam jepret data seperti yang ada di awal pernyataan saat transaksi berjalan di tingkat isolasi READ COMMITTED.
TIDAK AKTIF
Menonaktifkan opsi Rekam Jepret Yang Diterapkan Baca di tingkat database. Transaksi yang menentukan tingkat isolasi READ COMMITTED menggunakan penguncian.
Untuk mengatur READ_COMMITTED_SNAPSHOT AKTIF atau NONAKTIF, tidak boleh ada koneksi aktif ke database kecuali untuk koneksi yang menjalankan perintah ALTER DATABASE. Namun, database tidak harus dalam mode pengguna tunggal. Anda tidak dapat mengubah status opsi ini saat database OFFLINE.
Jika Anda mengatur READ_COMMITTED_SNAPSHOT dalam database READ_ONLY, pengaturan akan disimpan saat database nanti diatur ke READ_WRITE.
READ_COMMITTED_SNAPSHOT tidak dapat diaktifkan untuk master
database 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
Saat tabel dibuat dengan DURABILITY = SCHEMA_ONLY, dan READ_COMMITTED_SNAPSHOT kemudian diubah menggunakan ALTER DATABASE, data dalam tabel akan hilang.
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | NONAKTIF }
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2014 (12.x))
AKTIF
Ketika tingkat isolasi transaksi diatur ke tingkat isolasi apa pun yang lebih rendah dari SNAPSHOT, semua operasi Transact-SQL yang ditafsirkan pada tabel yang dioptimalkan memori dijalankan di bawah isolasi SNAPSHOT. Contoh tingkat isolasi yang lebih rendah dari rekam jepret adalah READ COMMITTED atau READ UNCOMMITTED. Operasi ini berjalan apakah tingkat isolasi transaksi diatur secara eksplisit pada tingkat sesi, atau default digunakan secara implisit.
TIDAK AKTIF
Tidak meningkatkan tingkat isolasi transaksi untuk operasi Transact-SQL yang ditafsirkan pada tabel yang dioptimalkan memori.
Anda tidak dapat mengubah status MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT jika database OFFLINE.
Opsi default adalah NONAKTIF.
Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa is_memory_optimized_elevate_to_snapshot_on
kolom dalam tampilan katalog sys.databases .
<> sql_option ::=
Mengontrol opsi kepatuhan ANSI di tingkat database.
ANSI_NULL_DEFAULT { ON | NONAKTIF }
Menentukan nilai default, NULL atau NOT NULL, dari kolom atau tipe yang ditentukan pengguna CLR di mana nullability tidak ditentukan secara eksplisit dalam pernyataan CREATE TABLE atau ALTER TABLE. Kolom yang ditentukan dengan batasan mengikuti aturan batasan apa pun pengaturan ini.
AKTIF
Nilai default untuk kolom yang tidak ditentukan adalah NULL.
TIDAK AKTIF
Nilai default untuk kolom yang tidak ditentukan adalah NOT NULL.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan tingkat database default untuk ANSI_NULL_DEFAULT. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_NULL_DEFAULT ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR ANSI_NULL_DFLT_ON.
Untuk kompatibilitas ANSI, atur opsi database ANSI_NULL_DEFAULT ke AKTIF mengubah default database menjadi NULL.
Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_null_default_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiNullDefault
properti fungsi DATABASEPROPERTYEX .
ANSI_NULLS { ON | NONAKTIF }
AKTIF
Semua perbandingan dengan nilai null dievaluasi ke UNKNOWN.
TIDAK AKTIF
Perbandingan nilai non-Unicode dengan nilai null dievaluasi ke TRUE jika kedua nilai adalah NULL.
Penting
Dalam versi SQL Server di masa mendatang, ANSI_NULLS akan selalu AKTIF dan aplikasi apa pun yang secara eksplisit mengatur opsi ke NONAKTIF akan menghasilkan kesalahan. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk ANSI_NULLS. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_NULLS ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat SET ANSI_NULLS.
Penting
SET ANSI_NULLS juga harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.
Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_nulls_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiNullsEnabled
properti fungsi DATABASEPROPERTYEX .
ANSI_PADDING { ON | NONAKTIF }
AKTIF
String diisi dengan panjang yang sama sebelum konversi. Juga diisi dengan panjang yang sama sebelum menyisipkan ke jenis data varchar atau nvarchar .
TIDAK AKTIF
Menyisipkan kosong di belakang dalam nilai karakter ke dalam kolom varchar atau nvarchar . Juga meninggalkan nol di belakang dalam nilai biner yang disisipkan ke dalam kolom varbinary . Nilai tidak diisi ke panjang kolom.
Ketika OFF ditentukan, pengaturan ini hanya memengaruhi definisi kolom baru.
Penting
Dalam versi SQL Server di masa mendatang, ANSI_PADDING akan selalu AKTIF dan aplikasi apa pun yang secara eksplisit mengatur opsi ke NONAKTIF akan menghasilkan kesalahan. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Kami menyarankan agar Anda selalu mengatur ANSI_PADDING ke AKTIF. ANSI_PADDING harus AKTIF saat Anda membuat atau memanipulasi indeks pada kolom komputasi atau tampilan terindeks.
kolom char(n) dan biner(n) yang memungkinkan null diisi ke panjang kolom saat ANSI_PADDING diatur ke AKTIF. Kosong berikutnya dan nol dipangkas saat ANSI_PADDING NONAKTIF. kolom char(n) dan biner(n) yang tidak mengizinkan null selalu diisi ke panjang kolom.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan tingkat database default untuk ANSI_PADDING. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_PADDING ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat SET ANSI_PADDING.
Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_padding_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiPaddingEnabled
properti fungsi DATABASEPROPERTYEX .
ANSI_WARNINGS { ON | NONAKTIF }
AKTIF
Kesalahan atau peringatan dikeluarkan ketika kondisi seperti pembagian dengan nol terjadi. Kesalahan dan peringatan juga dikeluarkan ketika nilai null muncul dalam fungsi agregat.
TIDAK AKTIF
Tidak ada peringatan yang dimunculkan dan nilai null dikembalikan ketika kondisi seperti membagi demi nol terjadi.
Penting
SET ANSI_WARNINGS harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk ANSI_WARNINGS. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_WARNINGS ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR ANSI_WARNINGS.
Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_warnings_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiWarningsEnabled
properti fungsi DATABASEPROPERTYEX .
ARITHABORT { ON | NONAKTIF }
AKTIF
Kueri berakhir ketika terjadi kesalahan luapan atau membagi berdasarkan nol selama eksekusi kueri.
TIDAK AKTIF
Pesan peringatan ditampilkan ketika salah satu kesalahan ini terjadi. Kueri, batch, atau transaksi terus diproses seolah-olah tidak ada kesalahan yang terjadi meskipun peringatan ditampilkan.
Penting
ATUR ARITHABORT harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.
Anda dapat menentukan status opsi ini dengan memeriksa is_arithabort_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsArithmeticAbortEnabled
properti fungsi DATABASEPROPERTYEX .
COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Untuk informasi selengkapnya, lihat MENGUBAH Tingkat Kompatibilitas DATABASE.
CONCAT_NULL_YIELDS_NULL { ON | NONAKTIF }
AKTIF
Hasil dari operasi perangkaian adalah NULL ketika salah satu operand adalah NULL. Misalnya, menggabungkan string karakter "Ini" dan NULL mengembalikan nilai NULL alih-alih nilai "Ini adalah".
TIDAK AKTIF
Nilai null diperlakukan sebagai string karakter kosong.
Penting
CONCAT_NULL_YIELDS_NULL harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.
Dalam versi SQL Server yang akan datang, CONCAT_NULL_YIELDS_NULL akan selalu AKTIF, dan aplikasi apa pun yang secara eksplisit mengatur opsi ke NONAKTIF akan memicu kesalahan. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk CONCAT_NULL_YIELDS_NULL. Secara default, klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi CONCAT_NULL_YIELDS_NULL ke AKTIF untuk sesi saat menyambungkan ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR CONCAT_NULL_YIELDS_NULL.
Anda dapat menentukan status opsi ini dengan memeriksa is_concat_null_yields_null_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsNullConcat
properti fungsi DATABASEPROPERTYEX .
NUMERIC_ROUNDABORT { ON | NONAKTIF }
AKTIF
Kesalahan dihasilkan ketika hilangnya presisi terjadi dalam ekspresi.
TIDAK AKTIF
Hilangnya presisi tidak menghasilkan pesan kesalahan, dan hasilnya dibulatkan ke presisi kolom atau variabel yang menyimpan hasilnya.
Penting
NUMERIC_ROUNDABORT harus diatur ke NONAKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.
Anda dapat menentukan status opsi ini di is_numeric_roundabort_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsNumericRoundAbortEnabled
properti fungsi DATABASEPROPERTYEX .
QUOTED_IDENTIFIER { ON | NONAKTIF }
AKTIF
Tanda kutip ganda dapat digunakan untuk mengapit pengidentifikasi yang dibatasi.
Semua string yang dibatasi oleh tanda kutip ganda ditafsirkan sebagai pengidentifikasi objek. Pengidentifikasi yang dikutip tidak harus mengikuti aturan Transact-SQL untuk pengidentifikasi. Mereka dapat menjadi kata kunci dan dapat menyertakan karakter yang tidak diizinkan dalam pengidentifikasi Transact-SQL. Jika tanda kutip ganda (
"
) adalah bagian dari pengidentifikasi, tanda kutip ganda dapat diwakili oleh dua tanda kutip ganda (""
).TIDAK AKTIF
Pengidentifikasi tidak boleh dalam tanda kutip dan harus mengikuti semua aturan Transact-SQL untuk pengidentifikasi. Literal dapat dibatasi dengan tanda kutip tunggal atau ganda.
SQL Server juga memungkinkan pengidentifikasi dibatasi oleh tanda kurung siku ([
dan ]
). Pengidentifikasi kurung selalu dapat digunakan, apa pun pengaturan QUOTED_IDENTIFIER. Untuk informasi selengkapnya, lihat Pengidentifikasi Database.
Saat tabel dibuat, opsi PENGIDENTIFIKASI KUTIPan selalu disimpan sebagai AKTIF dalam metadata tabel. Opsi disimpan meskipun opsi diatur ke NONAKTIF saat tabel dibuat.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk QUOTED_IDENTIFIER. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi QUOTED_IDENTIFIER ke AKTIF, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR QUOTED_IDENTIFIER.
Anda dapat menentukan status opsi ini dengan memeriksa is_quoted_identifier_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsQuotedIdentifiersEnabled
properti fungsi DATABASEPROPERTYEX .
RECURSIVE_TRIGGERS { ON | NONAKTIF }
AKTIF
Penembakan rekursif pemicu AFTER diizinkan.
TIDAK AKTIF
Anda dapat menentukan status opsi ini dengan memeriksa
is_recursive_triggers_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksaIsRecursiveTriggersEnabled
properti fungsi DATABASEPROPERTYEX .
Catatan
Hanya rekursi langsung yang dicegah saat RECURSIVE_TRIGGERS diatur ke NONAKTIF. Untuk menonaktifkan rekursi tidak langsung, Anda juga harus mengatur opsi server pemicu berlapis ke 0.
Anda dapat menentukan status opsi ini dengan memeriksa is_recursive_triggers_on
kolom dalam tampilan katalog sys.databases atau IsRecursiveTriggersEnabled
properti fungsi DATABASEPROPERTYEX .
<> suspend_for_snapshot_backup ::=
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2022 (16.x))
Menangguhkan database untuk pencadangan rekam jepret. Dapat menentukan grup dari satu atau beberapa database. Dapat menunjuk mode salin saja.
SET SUSPEND_FOR_SNAPSHOT_BACKUP = { ON | NONAKTIF }
Menangguhkan, atau membatalkan penangguhan database. DEFAULT NONAKTIF.
MODE = COPY_ONLY
Opsional. Menggunakan mode COPY_ONLY.
<> target_recovery_time_option ::=
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2012 (11.x))
Menentukan frekuensi titik pemeriksaan tidak langsung berdasarkan per database. Dimulai dengan SQL Server 2016 (13.x) nilai default untuk database baru adalah 1 menit, yang menunjukkan database akan menggunakan titik pemeriksaan tidak langsung. Untuk versi yang lebih lama, defaultnya adalah 0, yang menunjukkan bahwa database akan menggunakan titik pemeriksaan otomatis, yang frekuensinya tergantung pada pengaturan interval pemulihan instans server. Microsoft merekomendasikan 1 menit untuk sebagian besar sistem.
TARGET_RECOVERY_TIME = target_recovery_time { DETIK | MENIT }
target_recovery_time
Menentukan batas maksimum pada waktu untuk memulihkan database yang ditentukan jika terjadi crash. target_recovery_time adalah tipe int.
DETIK
Menunjukkan bahwa target_recovery_time dinyatakan sebagai jumlah detik.
MENIT
Menunjukkan bahwa target_recovery_time dinyatakan sebagai jumlah menit.
Untuk informasi selengkapnya tentang titik pemeriksaan tidak langsung, lihat Titik Pemeriksaan Database.
DENGAN <penghentian> ::=
Menentukan kapan harus mengembalikan transaksi yang tidak lengkap saat database ditransisikan dari satu status ke status lainnya. Jika klausul penghentian dihilangkan, pernyataan ALTER DATABASE menunggu tanpa batas waktu jika ada kunci pada database. Hanya satu klausul penghentian yang dapat ditentukan, dan mengikuti klausul SET.
Catatan
Tidak semua opsi database menggunakan klausa penghentian> WITH<. Untuk informasi selengkapnya, lihat tabel di bawah Opsi pengaturan bagian "Keterangan" di artikel ini.
ROLLBACK SETELAH bilangan bulat [DETIK] | ROLLBACK SEGERA
Menentukan apakah akan digulung balik setelah jumlah detik yang ditentukan atau segera.
NO_WAIT
Menentukan bahwa permintaan akan gagal jika status database yang diminta atau perubahan opsi tidak dapat segera diselesaikan. Menyelesaikan dengan segera berarti tidak menunggu transaksi dilakukan atau digulung balik sendiri.
Atur opsi
Untuk mengambil pengaturan saat ini untuk opsi database, gunakan tampilan katalog sys.databases atau DATABASEPROPERTYEX
Setelah Anda mengatur opsi database, pengaturan baru akan segera berlaku.
Anda bisa mengubah nilai default untuk salah satu opsi database untuk semua database yang baru dibuat. Untuk melakukannya, ubah opsi database yang sesuai dalam model
database.
Tidak semua opsi database menggunakan klausa penghentian> WITH <atau dapat ditentukan dalam kombinasi dengan opsi lain. Tabel berikut mencantumkan opsi ini beserta opsi dan status penghentiannya.
Kategori opsi | Dapat ditentukan dengan opsi lain | Dapat menggunakan klausul penghentian> WITH < |
---|---|---|
<db_state_option> | Ya | Ya |
<db_user_access_option> | Ya | Ya |
<db_update_option> | Ya | Ya |
<delayed_durability_option> | Ya | Ya |
<external_access_option> | Ya | Tidak |
<cursor_option> | Ya | Tidak |
<auto_option> | Ya | Tidak |
<sql_option> | Ya | Tidak |
<recovery_option> | Ya | Tidak |
<target_recovery_time_option> | Tidak | Ya |
<database_mirroring_option> | Tidak | Tidak |
ALLOW_SNAPSHOT_ISOLATION | Tidak | Tidak |
READ_COMMITTED_SNAPSHOT | Tidak | Ya |
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT | Ya | Ya |
<service_broker_option> | Ya | Tidak |
DATE_CORRELATION_OPTIMIZATION | Ya | Ya |
<parameterization_option> | Ya | Ya |
<change_tracking_option> | Ya | Ya |
<db_encryption_option> | Ya | Tidak |
<accelerated_database_recovery> | Ya | Ya |
Cache paket untuk instans SQL Server dibersihkan dengan mengatur salah satu opsi berikut:
LURING
DARING
MODIFY_NAME
COLLATE
READ_ONLY
BACA_TULIS
UBAH FILEGROUP DEFAULT
UBAH fileGROUP READ_WRITE
UBAH fileGROUP READ_ONLY
Cache paket juga dibersihkan dalam skenario berikut.
- Database memiliki opsi database AUTO_CLOSE diatur ke AKTIF. Ketika tidak ada referensi koneksi pengguna atau menggunakan database, tugas latar belakang mencoba menutup dan mematikan database secara otomatis.
- Anda menjalankan beberapa kueri terhadap database yang memiliki opsi default. Kemudian, database dihilangkan.
- Rekam jepret database untuk database sumber dihilangkan.
- Anda berhasil membangun kembali log transaksi untuk database.
- Anda memulihkan cadangan database.
- Anda melepas database.
Menghapus cache rencana menyebabkan kompilasi ulang semua rencana eksekusi berikutnya dan dapat menyebabkan penurunan performa kueri secara tiba-tiba dan sementara. Untuk setiap penyimpanan cache yang dihapus dalam cache paket, log kesalahan SQL Server berisi pesan informasi berikut: SQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations
. Pesan ini dicatat setiap lima menit selama cache dihapus dalam interval waktu tersebut.
Contoh
J. Mengatur opsi pada database
Contoh berikut mengatur model pemulihan dan opsi verifikasi halaman data untuk AdventureWorks2022
database sampel.
USE master;
GO
ALTER DATABASE [database_name]
SET RECOVERY FULL PAGE_VERIFY CHECKSUM;
GO
B. Atur database ke READ_ONLY
Mengubah status database atau grup file menjadi READ_ONLY atau READ_WRITE memerlukan akses eksklusif ke database. Contoh berikut mengatur database ke SINGLE_USER
mode untuk mendapatkan akses eksklusif. Contoh kemudian mengatur status AdventureWorks2022
database ke READ_ONLY
dan mengembalikan akses ke database ke semua pengguna.
Catatan
Contoh ini menggunakan opsi WITH ROLLBACK IMMEDIATE
penghentian dalam pernyataan pertama ALTER DATABASE
. Semua transaksi yang tidak lengkap akan digulung balik dan koneksi lain ke AdventureWorks2022
database akan segera terputus.
USE master;
GO
ALTER DATABASE [database_name]
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE [database_name]
SET READ_ONLY
GO
ALTER DATABASE [database_name]
SET MULTI_USER;
GO
C. Mengaktifkan isolasi rekam jepret pada database
Contoh berikut mengaktifkan opsi kerangka kerja isolasi rekam jepret untuk AdventureWorks2022
database.
USE [database_name];
USE master;
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
-- Check the state of the snapshot_isolation_framework
-- in the database.
SELECT name, snapshot_isolation_state,
snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'[database_name]';
GO
Kumpulan hasil menunjukkan bahwa kerangka kerja isolasi rekam jepret diaktifkan.
nama | snapshot_isolation_state | description |
---|---|---|
[nama_database] | 1 | AKTIF |
D. Mengaktifkan, memodifikasi, atau menonaktifkan pelacakan perubahan
Contoh berikut memungkinkan pelacakan perubahan untuk AdventureWorks2022
database dan mengatur periode retensi ke 2
hari.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);
Contoh berikut menunjukkan cara mengubah periode retensi menjadi 3
hari.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);
Contoh berikut menunjukkan cara menonaktifkan pelacakan perubahan untuk AdventureWorks2022
database.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
E. Mengaktifkan Penyimpanan Kueri
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2016 (13.x))
Contoh berikut mengaktifkan Penyimpanan Kueri dan mengonfigurasi parameternya.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
QUERY_CAPTURE_MODE = AUTO,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60
);
F. Mengaktifkan Penyimpanan Kueri dengan statistik tunggu
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2017 (14.x))
Contoh berikut mengaktifkan Penyimpanan Kueri dan mengonfigurasi parameternya.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON,
);
G. Mengaktifkan Penyimpanan Kueri dengan opsi kebijakan penangkapan kustom
Berlaku untuk: SQL Server (Dimulai dengan SQL Server 2019 (15.x))
Contoh berikut mengaktifkan Penyimpanan Kueri dan mengonfigurasi parameternya.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON,
QUERY_CAPTURE_MODE = CUSTOM,
QUERY_CAPTURE_POLICY = (
STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
)
);
Lihat juga
- 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 ALTER DATABASE Compatibility Level.
Catatan
Banyak opsi kumpulan database dapat dikonfigurasi untuk sesi saat ini dengan menggunakan Pernyataan SET dan sering dikonfigurasi oleh aplikasi saat tersambung. Opsi set tingkat sesi mengambil alih ALTER DATABASE SET
nilai. Opsi database yang dijelaskan di bagian berikut ini adalah nilai yang dapat diatur untuk sesi yang tidak secara eksplisit menyediakan nilai opsi set lainnya.
Sintaks
ALTER DATABASE { database_name | Current }
SET
{
<option_spec> [ ,...n ] [ WITH <termination> ]
}
;
<option_spec> ::=
{
<auto_option>
| <automatic_tuning_option>
| <change_tracking_option>
| <cursor_option>
| <db_encryption_option>
| <db_update_option>
| <db_user_access_option>
| <delayed_durability_option>
| <parameterization_option>
| <query_store_options>
| <snapshot_option>
| <sql_option>
| <target_recovery_time_option>
| <termination>
| <temporal_history_retention>
}
;
<auto_option> ::=
{
AUTO_CREATE_STATISTICS { OFF | ON [ ( INCREMENTAL = { ON | OFF } ) ] }
| AUTO_SHRINK { ON | OFF }
| AUTO_UPDATE_STATISTICS { ON | OFF }
| AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}
<automatic_tuning_option> ::=
{
AUTOMATIC_TUNING = { AUTO | INHERIT | CUSTOM }
| AUTOMATIC_TUNING ( CREATE_INDEX = { DEFAULT | ON | OFF } )
| AUTOMATIC_TUNING ( DROP_INDEX = { DEFAULT | ON | OFF } )
| AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF } )
}
<change_tracking_option> ::=
{
CHANGE_TRACKING
{
= OFF
| = ON [ ( <change_tracking_option_list > [,...n] ) ]
| ( <change_tracking_option_list> [,...n] )
}
}
<change_tracking_option_list> ::=
{
AUTO_CLEANUP = { ON | OFF }
| CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
}
<cursor_option> ::=
{
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
}
<db_encryption_option> ::=
ENCRYPTION { ON | OFF }
<db_update_option> ::=
{ READ_ONLY | READ_WRITE }
<db_user_access_option> ::=
{ RESTRICTED_USER | MULTI_USER }
<delayed_durability_option> ::= DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }
<parameterization_option> ::=
PARAMETERIZATION { SIMPLE | FORCED }
<query_store_options> ::=
{
QUERY_STORE
{
= OFF
| = ON [ ( <query_store_option_list> [,... n] ) ]
| ( < query_store_option_list> [,... n] )
| CLEAR [ ALL ]
}
}
<query_store_option_list> ::=
{
OPERATION_MODE = { READ_WRITE | READ_ONLY }
| CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = number )
| DATA_FLUSH_INTERVAL_SECONDS = number
| MAX_STORAGE_SIZE_MB = number
| INTERVAL_LENGTH_MINUTES = number
| SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
| QUERY_CAPTURE_MODE = { ALL | AUTO | CUSTOM | NONE }
| MAX_PLANS_PER_QUERY = number
| WAIT_STATS_CAPTURE_MODE = { ON | OFF }
| QUERY_CAPTURE_POLICY = ( <query_capture_policy_option_list> [,...n] )
}
<query_capture_policy_option_list> :: =
{
STALE_CAPTURE_POLICY_THRESHOLD = number { DAYS | HOURS }
| EXECUTION_COUNT = number
| TOTAL_COMPILE_CPU_TIME_MS = number
| TOTAL_EXECUTION_CPU_TIME_MS = number
}
<snapshot_option> ::=
{
ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
| READ_COMMITTED_SNAPSHOT { ON | OFF }
| MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }
}
<sql_option> ::=
{
ANSI_NULL_DEFAULT { ON | OFF }
| ANSI_NULLS { ON | OFF }
| ANSI_PADDING { ON | OFF }
| ANSI_WARNINGS { ON | OFF }
| ARITHABORT { ON | OFF }
| COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
| CONCAT_NULL_YIELDS_NULL { ON | OFF }
| NUMERIC_ROUNDABORT { ON | OFF }
| QUOTED_IDENTIFIER { ON | OFF }
| RECURSIVE_TRIGGERS { ON | OFF }
}
<termination>::=
{
ROLLBACK AFTER integer [ SECONDS ]
| ROLLBACK IMMEDIATE
| NO_WAIT
}
<temporal_history_retention>::=TEMPORAL_HISTORY_RETENTION { ON | OFF }
Argumen
database_name
Adalah nama database yang akan dimodifikasi.
CURRENT
CURRENT
menjalankan tindakan dalam database saat ini.CURRENT
tidak didukung untuk semua opsi dalam semua konteks. JikaCURRENT
gagal, berikan nama database.
<> auto_option ::=
Mengontrol opsi otomatis.
AUTO_CREATE_STATISTICS { ON | NONAKTIF }
AKTIF
Pengoptimal Kueri membuat statistik pada kolom tunggal dalam predikat kueri, seperlunya, untuk meningkatkan rencana kueri dan performa kueri. Statistik kolom tunggal ini dibuat saat Pengoptimal Kueri mengkompilasi kueri. Statistik kolom tunggal dibuat hanya pada kolom yang belum menjadi kolom pertama dari objek statistik yang ada.
Defaultnya adalah ON. Kami menyarankan agar Anda menggunakan pengaturan default untuk sebagian besar database.
TIDAK AKTIF
Pengoptimal Kueri tidak membuat statistik pada satu kolom dalam predikat kueri saat mengkompilasi kueri. Mengatur opsi ini ke NONAKTIF dapat menyebabkan rencana kueri suboptimal dan performa kueri yang terdegradasi.
Anda dapat menentukan status opsi ini dengan memeriksa is_auto_create_stats_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAutoCreateStatistics
properti fungsi DATABASEPROPERTYEX .
Untuk informasi selengkapnya, lihat bagian "Opsi statistik" di Statistik.
INKREMENTAL = AKTIF | OFF
Atur AUTO_CREATE_STATISTICS ke AKTIF, dan atur INCREMENTAL ke AKTIF. Pengaturan ini membuat statistik yang dibuat secara otomatis sebagai bertahap setiap kali statistik inkremental didukung. Nilai defaultnya adalah NONAKTIF. Untuk informasi selengkapnya, lihat MEMBUAT STATISTIK.
AUTO_SHRINK { ON | NONAKTIF }
AKTIF
File database adalah kandidat untuk penyusutan berkala. Kecuali Anda memiliki persyaratan tertentu, jangan atur opsi database AUTO_SHRINK ke AKTIF. Untuk informasi selengkapnya, lihat Menyusutkan database.
File data dan file log dapat disusutkan secara otomatis. AUTO_SHRINK mengurangi ukuran log transaksi hanya jika Anda mengatur database ke model pemulihan SIMPLE atau jika Anda mencadangkan log. Saat diatur ke NONAKTIF, file database tidak secara otomatis menyusut selama pemeriksaan berkala untuk ruang yang tidak digunakan.
Opsi AUTO_SHRINK menyebabkan file diciutkan ketika lebih dari 25 persen file berisi ruang yang tidak digunakan. Opsi ini menyebabkan file menyusut ke salah satu dari dua ukuran. Ini menyusut ke mana pun yang lebih besar:
- Ukuran di mana 25 persen dari file adalah ruang yang tidak digunakan
- Ukuran file ketika dibuat
Anda tidak dapat menyusutkan database baca-saja.
TIDAK AKTIF
File database tidak disusutkan secara otomatis selama pemeriksaan berkala untuk ruang yang tidak digunakan.
Anda dapat menentukan status opsi ini dengan memeriksa is_auto_shrink_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAutoShrink
properti fungsi DATABASEPROPERTYEX .
Catatan
Opsi AUTO_SHRINK tidak tersedia dalam database mandiri.
AUTO_UPDATE_STATISTICS { ON | NONAKTIF }
AKTIF
Menentukan bahwa Pengoptimal Kueri memperbarui statistik saat digunakan oleh kueri dan kapan mungkin sudah kedaluarsa. Statistik menjadi kedaluarsa setelah operasi sisipkan, perbarui, hapus, atau gabungkan mengubah distribusi data dalam tabel atau tampilan terindeks. Pengoptimal Kueri menentukan kapan statistik mungkin kedaluarsa dengan menghitung jumlah modifikasi data sejak pembaruan statistik terakhir dan membandingkan jumlah modifikasi dengan ambang batas. Ambang didasarkan pada jumlah baris dalam tabel atau tampilan terindeks.
Pengoptimal Kueri memeriksa statistik yang sudah kedaluwarsa sebelum mengkompilasi kueri dan menjalankan rencana kueri yang di-cache. Pengoptimal Kueri menggunakan kolom, tabel, dan tampilan terindeks dalam predikat kueri untuk menentukan statistik mana yang mungkin sudah kedaluarsa. Pengoptimal Kueri menentukan informasi ini sebelum mengkompilasi kueri. Sebelum menjalankan rencana kueri yang di-cache, Mesin Database memverifikasi bahwa rencana kueri mereferensikan statistik terbaru.
Opsi AUTO_UPDATE_STATISTICS berlaku untuk statistik yang dibuat untuk indeks, kolom tunggal dalam predikat kueri, dan statistik yang dibuat dengan menggunakan pernyataan CREATE STATISTICS. Opsi ini juga berlaku untuk statistik yang difilter.
Defaultnya adalah ON. Kami menyarankan agar Anda menggunakan pengaturan default untuk sebagian besar database.
Gunakan opsi AUTO_UPDATE_STATISTICS_ASYNC untuk menentukan apakah statistik diperbarui secara sinkron atau asinkron.
TIDAK AKTIF
Menentukan bahwa Pengoptimal Kueri tidak memperbarui statistik saat digunakan oleh kueri. Pengoptimal Kueri juga tidak memperbarui statistik saat mungkin sudah kedaluarsa. Mengatur opsi ini ke NONAKTIF dapat menyebabkan rencana kueri suboptimal dan performa kueri yang terdegradasi.
Anda dapat menentukan status opsi ini dengan memeriksa
is_auto_update_stats_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksaIsAutoUpdateStatistics
properti fungsi DATABASEPROPERTYEX .Untuk informasi selengkapnya, lihat bagian "Opsi statistik" di Statistik.
AUTO_UPDATE_STATISTICS_ASYNC { ON | NONAKTIF }
AKTIF
Menentukan bahwa pembaruan statistik untuk opsi AUTO_UPDATE_STATISTICS tidak sinkron. Pengoptimal Kueri tidak menunggu pembaruan statistik selesai sebelum mengkompilasi kueri.
Mengatur opsi ini ke AKTIF tidak berpengaruh kecuali AUTO_UPDATE_STATISTICS diatur ke AKTIF.
Secara default, opsi AUTO_UPDATE_STATISTICS_ASYNC diatur ke NONAKTIF, dan statistik pembaruan Pengoptimal Kueri secara sinkron.
TIDAK AKTIF
Menentukan bahwa pembaruan statistik untuk opsi AUTO_UPDATE_STATISTICS sinkron. Pengoptimal Kueri menunggu pembaruan statistik selesai sebelum mengkompilasi kueri.
Mengatur opsi ini ke NONAKTIF tidak berpengaruh kecuali AUTO_UPDATE_STATISTICS diatur ke AKTIF.
Anda dapat menentukan status opsi ini dengan memeriksa is_auto_update_stats_async_on
kolom dalam tampilan katalog sys.databases .
Untuk informasi selengkapnya yang menjelaskan kapan harus menggunakan pembaruan statistik sinkron atau asinkron, lihat bagian "Opsi statistik" di Statistik.
<> automatic_tuning_option ::=
Mengontrol opsi otomatis untuk Penyetelan otomatis. Anda dapat melihat opsi untuk pengaturan berikut di portal Azure atau melalui T-SQL dalam tampilan sys.database_automatic_tuning_options
.
AUTOMATIC_TUNING = { AUTO | WARISAN | KUSTOM }
AUTO
Mengatur nilai Penyetelan otomatis ke AUTO akan menerapkan default konfigurasi Azure untuk Penyetelan otomatis. Dalam portal Azure, ini mencerminkan opsi untuk "Mewarisi dari: Default Azure".
MEWARISI
Menggunakan nilai INHERIT mewarisi konfigurasi default dari server induk. Dalam portal Azure, ini mencerminkan opsi untuk "Mewarisi dari: Server". Ini sangat berguna jika Anda ingin menyesuaikan konfigurasi Penyetelan otomatis pada server induk, dan memiliki semua database di server tersebut MEWARISI pengaturan kustom ini. Harap dicatat bahwa agar warisan berfungsi, tiga opsi penyetelan individu FORCE_LAST_GOOD_PLAN, CREATE_INDEX, dan DROP_INDEX perlu diatur ke DEFAULT pada database.
KUSTOM
Dengan menggunakan nilai KUSTOM, Anda harus mengonfigurasi setiap opsi Penyetelan Otomatis yang tersedia di database. Dalam portal Azure, ini mencerminkan opsi untuk "Mewarisi dari: Jangan mewarisi".
CREATE_INDEX = { DEFAULT | AKTIF | NONAKTIF }
Mengaktifkan atau menonaktifkan opsi manajemen CREATE_INDEX
indeks otomatis penyetelan otomatis. Anda dapat melihat status untuk opsi ini di portal Azure atau melalui T-SQL dalam tampilan sys.database_automatic_tuning_options
.
DEFAULT
Mewarisi pengaturan default dari server. Dalam hal ini, opsi untuk mengaktifkan atau menonaktifkan fitur penyetelan Otomatis individual didefinisikan pada tingkat server.
AKTIF
Saat diaktifkan, indeks yang hilang secara otomatis dihasilkan pada database. Setelah pembuatan indeks, perolehan performa beban kerja diverifikasi. Ketika indeks yang dibuat tersebut tidak lagi memberikan manfaat untuk performa beban kerja, indeks tersebut secara otomatis dikembalikan. Indeks yang dibuat secara otomatis ditandai sebagai sistem yang dihasilkan diindeks.
TIDAK AKTIF
Tidak secara otomatis menghasilkan indeks yang hilang pada database.
DROP_INDEX = { DEFAULT | AKTIF | NONAKTIF }
Mengaktifkan atau menonaktifkan opsi manajemen DROP_INDEX
indeks otomatis Penyetelan Otomatis. Anda dapat melihat status untuk opsi ini di portal Azure atau melalui T-SQL dalam tampilan sys.database_automatic_tuning_options
.
DEFAULT
Mewarisi pengaturan default dari server. Dalam hal ini, opsi untuk mengaktifkan atau menonaktifkan fitur penyetelan Otomatis individual didefinisikan pada tingkat server.
AKTIF
Secara otomatis menghilangkan indeks duplikat atau tidak lagi berguna ke beban kerja performa.
TIDAK AKTIF
Tidak secara otomatis menghilangkan indeks yang hilang pada database.
FORCE_LAST_GOOD_PLAN = { DEFAULT | AKTIF | NONAKTIF }
Mengaktifkan atau menonaktifkan opsi koreksi FORCE_LAST_GOOD_PLAN
paket otomatis penyetelan otomatis. Anda dapat melihat status untuk opsi ini di portal Azure atau melalui T-SQL dalam tampilan sys.database_automatic_tuning_options
.
DEFAULT
Mewarisi pengaturan default dari server. Dalam hal ini, opsi untuk mengaktifkan atau menonaktifkan fitur penyetelan Otomatis individual didefinisikan pada tingkat server. Ini adalah nilai default. Nilai default untuk server Azure SQL baru adalah AKTIF, yang berarti bahwa secara default, database baru akan mewarisi pengaturan AKTIF.
AKTIF
Mesin Database secara otomatis memaksa rencana baik terakhir yang diketahui pada kueri Transact-SQL di mana rencana kueri baru menyebabkan regresi performa. Mesin Database terus memantau performa kueri kueri Transact-SQL dengan paket paksa. Jika terdapat peningkatan performa, Mesin Database akan terus menggunakan rencana optimal terakhir yang diketahui. Jika tidak terdapat peningkatan performa, Mesin Database akan menghasilkan rencana kueri baru. Pernyataan akan gagal jika Penyimpanan Kueri tidak diaktifkan atau jika tidak dalam mode Baca-Tulis .
TIDAK AKTIF
Mesin Database melaporkan potensi regresi performa kueri yang disebabkan oleh perubahan rencana kueri dalam tampilan sys.dm_db_tuning_recommendations . Namun, rekomendasi ini tidak diterapkan secara otomatis. Pengguna dapat memantau rekomendasi aktif dan memperbaiki masalah yang diidentifikasi dengan menerapkan skrip Transact-SQL yang ditampilkan dalam tampilan.
<> change_tracking_option ::=
Mengontrol opsi pelacakan perubahan. Anda dapat mengaktifkan pelacakan perubahan, mengatur opsi, mengubah opsi, dan menonaktifkan pelacakan perubahan. Misalnya, lihat bagian Contoh nanti di artikel ini.
AKTIF
Mengaktifkan pelacakan perubahan untuk database. Saat mengaktifkan pelacakan perubahan, Anda juga dapat mengatur opsi PEMBERSIHAN OTOMATIS dan UBAH RETENSI.
AUTO_CLEANUP = { AKTIF | NONAKTIF }
AKTIF
Informasi pelacakan perubahan dihapus secara otomatis setelah periode retensi yang ditentukan.
TIDAK AKTIF
Data pelacakan perubahan tidak dihapus dari database.
CHANGE_RETENTION = retention_period { DAYS | JAM | MENIT }
Menentukan periode minimum untuk menyimpan informasi pelacakan perubahan dalam database. Data dihapus hanya ketika nilai AUTO_CLEANUP AKTIF.
retention_period adalah bilangan bulat yang menentukan komponen numerik dari periode retensi.
Periode retensi default adalah 2 hari. Periode retensi minimum adalah 1 menit. Jenis retensi default adalah DAYS.
TIDAK AKTIF
Menonaktifkan pelacakan perubahan untuk database. Nonaktifkan pelacakan perubahan pada semua tabel sebelum Anda menonaktifkan pelacakan perubahan dari database.
<> cursor_option ::=
Mengontrol opsi kursor.
CURSOR_CLOSE_ON_COMMIT { ON | NONAKTIF }
AKTIF
Setiap kursor terbuka saat Anda menerapkan atau mengembalikan transaksi ditutup.
TIDAK AKTIF
Kursor tetap terbuka ketika transaksi dilakukan; mengembalikan transaksi menutup kursor apa pun kecuali yang didefinisikan sebagai INSENSITIVE atau STATIC.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk CURSOR_CLOSE_ON_COMMIT. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi CURSOR_CLOSE_ON_COMMIT ke NONAKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR CURSOR_CLOSE_ON_COMMIT.
Anda dapat menentukan status opsi ini dengan memeriksa is_cursor_close_on_commit_on
kolom dalam tampilan katalog sys.databases atau IsCloseCursorsOnCommitEnabled
properti fungsi DATABASEPROPERTYEX . Kursor secara implisit dibatalkan alokasinya hanya pada pemutusan sambungan. Untuk informasi selengkapnya, lihat MENDEKLARASIKAN KURSOR.
<> db_encryption_option ::=
Mengontrol status enkripsi database.
ENKRIPSI { AKTIF | NONAKTIF }
Mengatur database yang akan dienkripsi (AKTIF) atau tidak dienkripsi (NONAKTIF). Untuk informasi selengkapnya tentang enkripsi database, lihat Enkripsi Data Transparan, dan Enkripsi Data Transparan dengan Azure SQL Database.
Ketika enkripsi diaktifkan di tingkat database, semua grup file akan dienkripsi. Setiap grup file baru akan mewarisi properti terenkripsi. Jika ada grup file dalam database yang diatur ke BACA SAJA, operasi enkripsi database akan gagal.
Anda dapat melihat status enkripsi database dengan menggunakan tampilan manajemen dinamis sys.dm_database_encryption_keys .
<> db_update_option ::=
Mengontrol apakah pembaruan diizinkan pada database.
READ_ONLY
Pengguna dapat membaca data dari database tetapi tidak mengubahnya.
Catatan
Untuk meningkatkan performa kueri, perbarui statistik sebelum mengatur database ke READ_ONLY. Jika statistik tambahan diperlukan setelah database diatur ke READ_ONLY, Mesin Database akan membuat statistik di
tempdb
. Untuk informasi selengkapnya tentang statistik untuk database baca-saja, lihat Statistik.BACA_TULIS
Database tersedia untuk operasi baca dan tulis.
Untuk mengubah status ini, Anda harus memiliki akses eksklusif ke database. Untuk informasi selengkapnya, lihat klausa SINGLE_USER.
Catatan
Pada database federasi Azure SQL Database, SET { READ_ONLY | READ_WRITE }
dinonaktifkan.
<> db_user_access_option ::=
Mengontrol akses pengguna ke database.
RESTRICTED_USER
Hanya memungkinkan anggota
db_owner
peran database tetap dandbcreator
peransysadmin
server tetap untuk menyambungkan ke database, tetapi tidak membatasi jumlah mereka. Semua koneksi ke database terputus dalam jangka waktu yang ditentukan oleh klausul penghentian pernyataan ALTER DATABASE. Setelah database beralih ke status RESTRICTED_USER, upaya koneksi oleh pengguna yang tidak memenuhi syarat ditolak. Di Azure SQL Database, harus dijalankan dari dalam database pengguna. Darimaster
database, Anda mungkin mengalami pesan kesalahanMsg 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 atauUserAccess
properti fungsi DATABASEPROPERTYEX . Di Azure SQL Database, harus dijalankan dari dalam database pengguna. Darimaster
database, Anda mungkin mengalami pesan kesalahanMsg 42008, Level 16, State 3, Line 1 ODBC error: State: 28000: Error: 18456 Message:'[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user '##MS_InstanceCertificate##'.'.
<> delayed_durability_option ::=
Mengontrol apakah transaksi berkomitmen sepenuhnya tahan lama atau tertunda tahan lama.
DINONAKTIFKAN
Semua transaksi berikut
SET DISABLED
sepenuhnya tahan lama. Setiap opsi durabilitas yang diatur dalam blok atom atau pernyataan penerapan diabaikan.DIPERBOLEHKAN
Semua transaksi berikut
SET ALLOWED
sepenuhnya tahan lama atau tertunda tahan lama, tergantung pada opsi durabilitas yang ditetapkan dalam blok atom atau pernyataan penerapan.DIPAKSA
Semua transaksi berikut
SET FORCED
tertunda tahan lama. Setiap opsi durabilitas yang diatur dalam blok atom atau pernyataan penerapan diabaikan.
<> PARAMETERIZATION_option ::=
Mengontrol opsi parameterisasi.
PARAMETERISASI { SEDERHANA | FORCED }
SEDERHANA
Kueri diparameterkan berdasarkan perilaku default database.
DIPAKSA
SQL Server membuat parameter semua kueri dalam database.
Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa is_parameterization_forced
kolom dalam tampilan katalog sys.databases .
<> query_store_options ::=
AKTIF | NONAKTIF | JELAS [ SEMUA ]
Mengontrol apakah Penyimpanan Kueri diaktifkan dalam database ini, dan juga mengontrol penghapusan konten Penyimpanan Kueri.
AKTIF
Mengaktifkan Penyimpanan Kueri. AKTIF adalah nilai default.
TIDAK AKTIF
Menonaktifkan Penyimpanan Kueri.
Catatan
Penyimpanan Kueri tidak dapat dinonaktifkan di database tunggal Azure SQL Database dan Kumpulan Elastis.
ALTER DATABASE [database] SET QUERY_STORE = OFF
Menjalankan akan mengembalikan peringatan'QUERY_STORE=OFF' is not supported in this version of SQL Server.
.KOSONGKAN
Hapus konten Penyimpanan Kueri.
OPERATION_MODE
Menjelaskan mode operasi Penyimpanan Kueri. Nilai yang valid adalah READ_ONLY dan READ_WRITE. Dalam mode READ_WRITE, Penyimpanan Kueri mengumpulkan dan mempertahankan rencana kueri dan informasi statistik eksekusi runtime. Dalam mode READ_ONLY, informasi dapat dibaca dari Penyimpanan Kueri, tetapi informasi baru tidak ditambahkan. Jika ruang maksimum yang dialokasikan dari Penyimpanan Kueri telah habis, Penyimpanan Kueri akan berubah adalah mode operasi menjadi READ_ONLY.
CLEANUP_POLICY
Menjelaskan kebijakan penyimpanan data Penyimpanan Kueri. STALE_QUERY_THRESHOLD_DAYS menentukan jumlah hari di mana informasi untuk kueri disimpan di Penyimpanan Kueri. STALE_QUERY_THRESHOLD_DAYS jenis besar. Nilai default adalah 30. Untuk edisi SQL Database Basic, defaultnya adalah 7 hari.
DATA_FLUSH_INTERVAL_SECONDS
Menentukan frekuensi di mana data yang ditulis ke Penyimpanan Kueri dipertahankan ke disk. Untuk mengoptimalkan performa, data yang dikumpulkan oleh Penyimpanan Kueri ditulis secara asinkron ke disk. Frekuensi di mana transfer asinkron ini terjadi dikonfigurasi dengan menggunakan argumen DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS jenis besar. Nilai defaultnya adalah 900 (15 menit).
MAX_STORAGE_SIZE_MB
Menentukan ruang yang dialokasikan ke Penyimpanan Kueri. MAX_STORAGE_SIZE_MB adalah jenis bigint.
Catatan
Di Azure SQL Database, nilai default MAX_STORAGE_SIZE_MB
berbeda menurut tingkat layanan, sebagai berikut: Premium, Business Critical, dan Hyperscale: 1.024 MB; Tujuan Standar dan Umum: 100 MB; Dasar: 10 MB Nilai maksimum yang diizinkan MAX_STORAGE_SIZE_MB
adalah 10.240 MB.
Catatan
MAX_STORAGE_SIZE_MB
batas tidak diberlakukan secara ketat. Ukuran penyimpanan dicentang hanya saat Penyimpanan Kueri menulis data ke disk. Interval ini diatur oleh DATA_FLUSH_INTERVAL_SECONDS
opsi atau opsi dialog Penyimpanan Kueri Studio Manajemen Interval Flush Data. Nilai default interval adalah 900 detik (atau 15 menit).
Jika Penyimpanan Kueri telah melanggar MAX_STORAGE_SIZE_MB
batas antara pemeriksaan ukuran penyimpanan, penyimpanan akan beralih ke mode baca-saja. Jika SIZE_BASED_CLEANUP_MODE
diaktifkan, mekanisme pembersihan untuk memberlakukan MAX_STORAGE_SIZE_MB
batas juga dipicu.
Setelah cukup ruang dibersihkan, mode Penyimpanan Kueri akan secara otomatis beralih kembali ke baca-tulis.
Penting
Jika Anda berpikir bahwa pengambilan beban kerja Anda akan membutuhkan lebih dari 10 GB ruang disk, Anda mungkin harus memikirkan kembali dan mengoptimalkan beban kerja Anda untuk menggunakan kembali rencana kueri (misalnya menggunakan parameterisasi paksa, atau menyesuaikan konfigurasi Penyimpanan Kueri.
Dimulai dengan SQL Server 2019 (15.x) dan di Azure SQL Database, Anda dapat mengatur QUERY_CAPTURE_MODE
ke KUSTOM untuk kontrol tambahan atas kebijakan pengambilan kueri.
INTERVAL_LENGTH_MINUTES
Menentukan interval waktu di mana data statistik eksekusi runtime dikumpulkan ke dalam Penyimpanan Kueri. Untuk mengoptimalkan penggunaan ruang, statistik eksekusi runtime di penyimpanan statistik runtime dikumpulkan selama jendela waktu tetap. Jendela waktu tetap ini dikonfigurasi dengan menggunakan argumen INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES jenis besar. Nilai defaultnya adalah 60.
SIZE_BASED_CLEANUP_MODE = { AUTO | NONAKTIF }
Mengontrol apakah pembersihan akan diaktifkan secara otomatis ketika jumlah total data mendekati ukuran maksimum.
TIDAK AKTIF
Pembersihan berbasis ukuran tidak akan diaktifkan secara otomatis.
AUTO
Pembersihan berbasis ukuran akan diaktifkan secara otomatis ketika ukuran pada disk mencapai 90% dari max_storage_size_mb. Pembersihan berbasis ukuran menghapus kueri yang paling murah dan terlama terlebih dahulu. Ini berhenti pada sekitar 80% dari max_storage_size_mb. Ini adalah nilai konfigurasi default.
SIZE_BASED_CLEANUP_MODE adalah jenis nvarchar.
QUERY_CAPTURE_MODE { ALL | AUTO | KUSTOM | TIDAK ADA }
Menunjuk mode pengambilan kueri yang saat ini aktif. Setiap mode menentukan kebijakan pengambilan kueri tertentu.
Catatan
Kursor, kueri di dalam Prosedur Tersimpan, dan Kueri yang dikompilasi secara asli selalu diambil saat mode pengambilan kueri diatur ke SEMUA, OTOMATIS, atau KUSTOM.
SEMUA
Mengambil semua kueri.
AUTO
Tangkap kueri yang relevan berdasarkan jumlah eksekusi dan konsumsi sumber daya. Ini adalah nilai konfigurasi default untuk Azure SQL Database.
NONE
Berhenti mengambil kueri baru. Penyimpanan Kueri akan terus mengumpulkan statistik kompilasi dan runtime untuk kueri yang sudah diambil. Gunakan konfigurasi ini dengan hati-hati karena Anda mungkin kehilangan pengambilan kueri penting.
KUSTOM
Memungkinkan kontrol atas opsi QUERY_CAPTURE_POLICY.
QUERY_CAPTURE_MODE adalah jenis nvarchar.
MAX_PLANS_PER_QUERY
Menentukan jumlah maksimum paket yang dipertahankan untuk setiap kueri. MAX_PLANS_PER_QUERY adalah tipe int. Nilai defaultnya adalah 200.
WAIT_STATS_CAPTURE_MODE { ON | NONAKTIF }
Mengontrol apakah statistik tunggu akan diambil per kueri.
AKTIF
Informasi statistik tunggu per kueri diambil. Nilai ini adalah nilai konfigurasi default.
TIDAK AKTIF
Informasi statistik tunggu per kueri tidak akan diambil.
<> query_capture_policy_option_list :: =
Mengontrol opsi kebijakan penangkapan Penyimpanan Kueri. Kecuali untuk STALE_CAPTURE_POLICY_THRESHOLD, opsi ini menentukan kondisi OR yang perlu terjadi agar kueri diambil dalam nilai Ambang Kebijakan Pengambilan Kedaluarsa yang ditentukan.
STALE_CAPTURE_POLICY_THRESHOLD = bilangan bulat { DAYS | JAM }
Menentukan periode interval evaluasi untuk menentukan apakah kueri harus diambil. Defaultnya adalah 1 hari, dan dapat diatur dari 1 jam hingga tujuh hari. angka adalah tipe int.
EXECUTION_COUNT = bilangan bulat
Menentukan berapa kali kueri dijalankan selama periode evaluasi. Defaultnya adalah 30, yang berarti bahwa untuk Ambang Kebijakan Pengambilan Kedaluarsa default, kueri harus dijalankan setidaknya 30 kali dalam satu hari untuk dipertahankan di Penyimpanan Kueri. EXECUTION_COUNT adalah jenis int.
TOTAL_COMPILE_CPU_TIME_MS = bilangan bulat
Menentukan total waktu CPU kompilasi yang berlalu yang digunakan oleh kueri selama periode evaluasi. Defaultnya adalah 1000, yang berarti bahwa untuk Ambang Kebijakan Pengambilan Kedaluarsa default, kueri harus memiliki total setidaknya satu detik waktu CPU yang dihabiskan selama kompilasi kueri dalam satu hari untuk dipertahankan di Penyimpanan Kueri. TOTAL_COMPILE_CPU_TIME_MS adalah tipe int.
TOTAL_EXECUTION_CPU_TIME_MS = bilangan bulat
Menentukan total waktu CPU eksekusi yang berlalu yang digunakan oleh kueri selama periode evaluasi. Defaultnya adalah 100 yang berarti bahwa untuk Ambang Kebijakan Pengambilan Kedaluarsa default, kueri harus memiliki total setidaknya 100 md waktu CPU yang dihabiskan selama eksekusi dalam satu hari untuk dipertahankan di Penyimpanan Kueri. TOTAL_EXECUTION_CPU_TIME_MS adalah jenis int.
<> snapshot_option ::=
Menentukan tingkat isolasi transaksi.
ALLOW_SNAPSHOT_ISOLATION { ON | NONAKTIF }
AKTIF
Mengaktifkan opsi Rekam Jepret di tingkat database. Saat diaktifkan, pernyataan DML mulai menghasilkan versi baris bahkan ketika tidak ada transaksi yang menggunakan Isolasi Rekam Jepret. Setelah opsi ini diaktifkan, transaksi dapat menentukan tingkat isolasi transaksi SNAPSHOT. Ketika transaksi berjalan di tingkat isolasi SNAPSHOT, semua pernyataan melihat rekam jepret data seperti yang ada di awal transaksi. Jika transaksi yang berjalan di tingkat isolasi SNAPSHOT mengakses data dalam beberapa database, baik ALLOW_SNAPSHOT_ISOLATION harus diatur ke AKTIF di semua database, atau setiap pernyataan dalam transaksi harus menggunakan petunjuk penguncian pada referensi apa pun dalam klausul FROM ke tabel dalam database di mana ALLOW_SNAPSHOT_ISOLATION NONAKTIF.
TIDAK AKTIF
Menonaktifkan opsi Rekam Jepret di tingkat database. Transaksi tidak dapat menentukan tingkat isolasi transaksi SNAPSHOT.
Saat Anda mengatur ALLOW_SNAPSHOT_ISOLATION ke status baru (dari AKTIF ke NONAKTIF, atau dari NONAKTIF ke AKTIF), ALTER DATABASE tidak mengembalikan kontrol ke pemanggil hingga semua transaksi yang ada dalam database diterapkan. Jika database sudah dalam status yang ditentukan dalam pernyataan ALTER DATABASE, kontrol akan segera dikembalikan ke pemanggil. Jika pernyataan ALTER DATABASE tidak ditampilkan dengan cepat, gunakan sys.dm_tran_active_snapshot_database_transactions untuk menentukan apakah ada transaksi yang berjalan lama. Jika pernyataan ALTER DATABASE dibatalkan, database tetap dalam status saat ALTER DATABASE dimulai. Tampilan katalog sys.databases menunjukkan status transaksi isolasi rekam jepret dalam database. Jika snapshot_isolation_state_desc
= IN_TRANSITION_TO_ON, pernyataan ALTER DATABASE .... ALLOW_SNAPSHOT_ISOLATION OFF
akan menjeda enam detik dan mencoba kembali operasi.
Anda tidak dapat mengubah status ALLOW_SNAPSHOT_ISOLATION jika database OFFLINE.
Jika Anda mengatur ALLOW_SNAPSHOT_ISOLATION dalam database READ_ONLY, pengaturan akan disimpan jika database nanti diatur ke READ_WRITE.
Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa snapshot_isolation_state
kolom dalam tampilan katalog sys.databases .
READ_COMMITTED_SNAPSHOT { ON | NONAKTIF }
AKTIF
Mengaktifkan opsi Rekam Jepret Yang Diterapkan Baca di tingkat database. Saat diaktifkan, pernyataan DML mulai menghasilkan versi baris bahkan ketika tidak ada transaksi yang menggunakan Isolasi Rekam Jepret. Setelah opsi ini diaktifkan, transaksi yang menentukan tingkat isolasi READ COMMITTED menggunakan penerapan versi baris alih-alih mengunci. Semua pernyataan melihat rekam jepret data seperti yang ada di awal pernyataan saat transaksi berjalan di tingkat isolasi READ COMMITTED.
TIDAK AKTIF
Menonaktifkan opsi Rekam Jepret Yang Diterapkan Baca di tingkat database. Transaksi yang menentukan tingkat isolasi READ COMMITTED menggunakan penguncian.
Untuk mengatur READ_COMMITTED_SNAPSHOT AKTIF atau NONAKTIF, tidak boleh ada koneksi aktif ke database kecuali untuk koneksi yang menjalankan perintah ALTER DATABASE. Namun, database tidak harus dalam mode pengguna tunggal. Anda tidak dapat mengubah status opsi ini saat database OFFLINE.
Jika Anda mengatur READ_COMMITTED_SNAPSHOT dalam database READ_ONLY, pengaturan akan disimpan saat database nanti diatur ke READ_WRITE.
READ_COMMITTED_SNAPSHOT tidak dapat diaktifkan untuk master
database 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
Saat tabel dibuat dengan DURABILITY = SCHEMA_ONLY
, dan READ_COMMITTED_SNAPSHOT kemudian diubah menggunakan ALTER DATABASE
, data dalam tabel akan hilang.
Tip
Di Azure SQL Database, ALTER DATABASE
perintah untuk mengatur READ_COMMITTED_SNAPSHOT AKTIF atau NONAKTIF untuk database harus dijalankan dalam master
database.
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | NONAKTIF }
AKTIF
Ketika tingkat isolasi transaksi diatur ke tingkat isolasi apa pun yang lebih rendah dari SNAPSHOT, semua operasi Transact-SQL yang ditafsirkan pada tabel yang dioptimalkan memori dijalankan di bawah isolasi SNAPSHOT. Contoh tingkat isolasi yang lebih rendah dari rekam jepret adalah READ COMMITTED atau READ UNCOMMITTED. Operasi ini berjalan apakah tingkat isolasi transaksi diatur secara eksplisit pada tingkat sesi, atau default digunakan secara implisit.
TIDAK AKTIF
Tidak meningkatkan tingkat isolasi transaksi untuk operasi Transact-SQL yang ditafsirkan pada tabel yang dioptimalkan memori.
Anda tidak dapat mengubah status MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT jika database OFFLINE.
Nilai defaultnya adalah NONAKTIF.
Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa is_memory_optimized_elevate_to_snapshot_on
kolom dalam tampilan katalog sys.databases .
<> sql_option ::=
Mengontrol opsi kepatuhan ANSI di tingkat database.
ANSI_NULL_DEFAULT { ON | NONAKTIF }
Menentukan nilai default, NULL atau NOT NULL, dari kolom atau tipe yang ditentukan pengguna CLR di mana nullability tidak ditentukan secara eksplisit dalam pernyataan CREATE TABLE atau ALTER TABLE. Kolom yang ditentukan dengan batasan mengikuti aturan batasan apa pun pengaturan ini.
AKTIF
Nilai defaultnya adalah NULL.
TIDAK AKTIF
Nilai defaultnya ADALAH NOT NULL.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan tingkat database default untuk ANSI_NULL_DEFAULT. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_NULL_DEFAULT ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR ANSI_NULL_DFLT_ON.
Untuk kompatibilitas ANSI, atur opsi database ANSI_NULL_DEFAULT ke AKTIF mengubah default database menjadi NULL.
Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_null_default_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiNullDefault
properti fungsi DATABASEPROPERTYEX .
ANSI_NULLS { ON | NONAKTIF }
AKTIF
Semua perbandingan dengan nilai null dievaluasi ke UNKNOWN.
TIDAK AKTIF
Perbandingan nilai non-Unicode dengan nilai null dievaluasi ke TRUE jika kedua nilai adalah NULL.
Penting
Dalam versi SQL Server di masa mendatang, ANSI_NULLS akan selalu AKTIF dan aplikasi apa pun yang secara eksplisit mengatur opsi ke NONAKTIF akan menghasilkan kesalahan. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk ANSI_NULLS. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_NULLS ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat SET ANSI_NULLS.
Catatan
SET ANSI_NULLS juga harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.
Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_nulls_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiNullsEnabled
properti fungsi DATABASEPROPERTYEX .
ANSI_PADDING { ON | NONAKTIF }
AKTIF
String diisi dengan panjang yang sama sebelum konversi. Juga diisi dengan panjang yang sama sebelum menyisipkan ke jenis data varchar atau nvarchar .
TIDAK AKTIF
Menyisipkan kosong di belakang dalam nilai karakter ke dalam kolom varchar atau nvarchar . Juga meninggalkan nol di belakang dalam nilai biner yang disisipkan ke dalam kolom varbinary . Nilai tidak diisi ke panjang kolom.
Ketika OFF ditentukan, pengaturan ini hanya memengaruhi definisi kolom baru.
Penting
Dalam versi SQL Server di masa mendatang, ANSI_PADDING akan selalu AKTIF dan aplikasi apa pun yang secara eksplisit mengatur opsi ke NONAKTIF akan menghasilkan kesalahan. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Kami menyarankan agar Anda selalu mengatur ANSI_PADDING ke AKTIF. ANSI_PADDING harus AKTIF saat Anda membuat atau memanipulasi indeks pada kolom komputasi atau tampilan terindeks.
kolom char(n) dan biner(n) yang memungkinkan null diisi ke panjang kolom saat ANSI_PADDING diatur ke AKTIF. Kosong berikutnya dan nol dipangkas saat ANSI_PADDING NONAKTIF. kolom char(n) dan biner(n) yang tidak mengizinkan null selalu diisi ke panjang kolom.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan tingkat database default untuk ANSI_PADDING. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_PADDING ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat SET ANSI_PADDING.
Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_padding_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiPaddingEnabled
properti fungsi DATABASEPROPERTYEX .
ANSI_WARNINGS { ON | NONAKTIF }
AKTIF
Kesalahan atau peringatan dikeluarkan ketika kondisi seperti pembagian dengan nol terjadi. Kesalahan dan peringatan juga dikeluarkan ketika nilai null muncul dalam fungsi agregat.
TIDAK AKTIF
Tidak ada peringatan yang dimunculkan dan nilai null dikembalikan ketika kondisi seperti membagi demi nol terjadi.
Catatan
SET ANSI_WARNINGS harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk ANSI_WARNINGS. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_WARNINGS ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR ANSI_WARNINGS.
Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_warnings_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiWarningsEnabled
properti fungsi DATABASEPROPERTYEX .
ARITHABORT { ON | NONAKTIF }
AKTIF
Kueri berakhir ketika terjadi kesalahan luapan atau membagi berdasarkan nol selama eksekusi kueri.
TIDAK AKTIF
Pesan peringatan ditampilkan ketika salah satu kesalahan ini terjadi. Kueri, batch, atau transaksi terus diproses seolah-olah tidak ada kesalahan yang terjadi meskipun peringatan ditampilkan.
Catatan
ATUR ARITHABORT harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.
Anda dapat menentukan status opsi ini dengan memeriksa is_arithabort_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsArithmeticAbortEnabled
properti fungsi DATABASEPROPERTYEX .
COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Untuk informasi selengkapnya, lihat MENGUBAH Tingkat Kompatibilitas DATABASE.
CONCAT_NULL_YIELDS_NULL { ON | NONAKTIF }
AKTIF
Hasil dari operasi perangkaian adalah NULL ketika salah satu operand adalah NULL. Misalnya, menggabungkan string karakter "Ini" dan NULL menyebabkan nilai NULL, alih-alih nilai "Ini".
TIDAK AKTIF
Nilai null diperlakukan sebagai string karakter kosong.
Catatan
CONCAT_NULL_YIELDS_NULL harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.
Dalam versi SQL Server di masa mendatang, CONCAT_NULL_YIELDS_NULL akan selalu AKTIF dan aplikasi apa pun yang secara eksplisit mengatur opsi ke NONAKTIF akan menghasilkan kesalahan. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk CONCAT_NULL_YIELDS_NULL. Secara default, klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi CONCAT_NULL_YIELDS_NULL ke AKTIF untuk sesi saat menyambungkan ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR CONCAT_NULL_YIELDS_NULL.
Anda dapat menentukan status opsi ini dengan memeriksa is_concat_null_yields_null_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsNullConcat
properti fungsi DATABASEPROPERTYEX .
NUMERIC_ROUNDABORT { ON | NONAKTIF }
AKTIF
Kesalahan dihasilkan ketika hilangnya presisi terjadi dalam ekspresi.
TIDAK AKTIF
Hilangnya presisi tidak menghasilkan pesan kesalahan, dan hasilnya dibulatkan ke presisi kolom atau variabel yang menyimpan hasilnya.
Penting
NUMERIC_ROUNDABORT harus diatur ke NONAKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.
Anda dapat menentukan status untuk opsi ini di is_numeric_roundabort_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsNumericRoundAbortEnabled
properti fungsi DATABASEPROPERTYEX .
QUOTED_IDENTIFIER { ON | NONAKTIF }
AKTIF
Tanda kutip ganda dapat digunakan untuk mengapit pengidentifikasi yang dibatasi.
Semua string yang dibatasi oleh tanda kutip ganda ditafsirkan sebagai pengidentifikasi objek. Pengidentifikasi yang dikutip tidak harus mengikuti aturan Transact-SQL untuk pengidentifikasi. Mereka dapat menjadi kata kunci dan dapat menyertakan karakter yang tidak diizinkan dalam pengidentifikasi Transact-SQL. Jika tanda kutip ganda (
"
) adalah bagian dari pengidentifikasi, tanda kutip ganda dapat diwakili oleh dua tanda kutip ganda (""
).TIDAK AKTIF
Pengidentifikasi tidak boleh dalam tanda kutip dan harus mengikuti semua aturan Transact-SQL untuk pengidentifikasi. Literal dapat dibatasi dengan tanda kutip tunggal atau ganda.
SQL Server juga memungkinkan pengidentifikasi dibatasi oleh tanda kurung siku ([
dan ]
). Pengidentifikasi kurung selalu dapat digunakan, apa pun pengaturan QUOTED_IDENTIFIER. Untuk informasi selengkapnya, lihat Pengidentifikasi Database.
Saat tabel dibuat, opsi PENGIDENTIFIKASI KUTIPan selalu disimpan sebagai AKTIF dalam metadata tabel. Opsi disimpan meskipun opsi diatur ke NONAKTIF saat tabel dibuat.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk QUOTED_IDENTIFIER. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi QUOTED_IDENTIFIER ke AKTIF, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR QUOTED_IDENTIFIER.
Anda dapat menentukan status opsi ini dengan memeriksa is_quoted_identifier_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsQuotedIdentifiersEnabled
properti fungsi DATABASEPROPERTYEX .
RECURSIVE_TRIGGERS { ON | NONAKTIF }
AKTIF
Penembakan rekursif pemicu AFTER diizinkan.
TIDAK AKTIF
Anda dapat menentukan status opsi ini dengan memeriksa
is_recursive_triggers_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksaIsRecursiveTriggersEnabled
properti fungsi DATABASEPROPERTYEX .
Catatan
Hanya rekursi langsung yang dicegah saat RECURSIVE_TRIGGERS diatur ke NONAKTIF. Untuk menonaktifkan rekursi tidak langsung, Anda juga harus mengatur opsi server pemicu berlapis ke 0.
Anda dapat menentukan status opsi ini dengan memeriksa is_recursive_triggers_on
kolom dalam tampilan katalog sys.databases atau IsRecursiveTriggersEnabled
properti fungsi DATABASEPROPERTYEX .
<> target_recovery_time_option ::=
Menentukan frekuensi titik pemeriksaan tidak langsung berdasarkan per database. Dimulai dengan SQL Server 2016 (13.x) nilai default untuk database baru adalah 1 menit, yang menunjukkan database akan menggunakan titik pemeriksaan tidak langsung. Untuk versi yang lebih lama, defaultnya adalah 0, yang menunjukkan bahwa database akan menggunakan titik pemeriksaan otomatis, yang frekuensinya tergantung pada pengaturan interval pemulihan instans server. Microsoft merekomendasikan 1 menit untuk sebagian besar sistem.
TARGET_RECOVERY_TIME = target_recovery_time { DETIK | MENIT }
target_recovery_time
Menentukan batas maksimum pada waktu untuk memulihkan database yang ditentukan jika terjadi crash. target_recovery_time adalah tipe int.
DETIK
Menunjukkan bahwa target_recovery_time dinyatakan sebagai jumlah detik.
MENIT
Menunjukkan bahwa target_recovery_time dinyatakan sebagai jumlah menit.
Untuk informasi selengkapnya tentang titik pemeriksaan tidak langsung, lihat Titik Pemeriksaan Database.
DENGAN <penghentian> ::=
Menentukan kapan harus mengembalikan transaksi yang tidak lengkap saat database ditransisikan dari satu status ke status lainnya. Jika klausul penghentian dihilangkan, pernyataan ALTER DATABASE menunggu tanpa batas waktu jika ada kunci pada database. Hanya satu klausul penghentian yang dapat ditentukan, dan mengikuti klausul SET.
Catatan
Tidak semua opsi database menggunakan klausa penghentian> WITH<. Untuk informasi selengkapnya, lihat tabel di bawah Opsi pengaturan bagian "Keterangan" di artikel ini.
ROLLBACK SETELAH bilangan bulat [DETIK] | ROLLBACK SEGERA
Menentukan apakah akan digulung balik setelah jumlah detik yang ditentukan atau segera.
NO_WAIT
Menentukan bahwa permintaan akan gagal jika status database yang diminta atau perubahan opsi tidak dapat segera diselesaikan. Menyelesaikan dengan segera berarti tidak menunggu transaksi dilakukan atau digulung balik sendiri.
<> temporal_history_retention ::=
TEMPORAL_HISTORY_RETENTION { ON | NONAKTIF }
AKTIF secara default tetapi juga secara otomatis diatur ke NONAKTIF setelah operasi pemulihan titik waktu. Untuk informasi selengkapnya termasuk cara mengaktifkan pengaturan ini, lihat Cara mengonfigurasi kebijakan penyimpanan.
AKTIF
Default. Mengaktifkan kebijakan penyimpanan tabel temporal. Untuk informasi selengkapnya, lihat Mengelola retensi data historis dalam tabel temporal versi sistem.
TIDAK AKTIF
Jangan melakukan kebijakan penyimpanan historis temporal.
Atur opsi
Untuk mengambil pengaturan saat ini untuk opsi database, gunakan tampilan katalog sys.databases atau DATABASEPROPERTYEX
Setelah Anda mengatur opsi database, pengaturan baru akan segera berlaku.
Anda bisa mengubah nilai default untuk salah satu opsi database untuk semua database yang baru dibuat. Untuk melakukannya, ubah opsi database yang sesuai dalam model
database.
Tidak semua opsi database menggunakan klausa penghentian> WITH <atau dapat ditentukan dalam kombinasi dengan opsi lain. Tabel berikut mencantumkan opsi ini beserta opsi dan status penghentiannya.
Kategori opsi | Dapat ditentukan dengan opsi lain | Dapat menggunakan klausul penghentian> WITH < |
---|---|---|
<auto_option> | Ya | Tidak |
<change_tracking_option> | Ya | Ya |
<cursor_option> | Ya | Tidak |
<db_encryption_option> | Ya | Tidak |
<db_update_option> | Ya | Ya |
<db_user_access_option> | Ya | Ya |
<delayed_durability_option> | Ya | Ya |
<parameterization_option> | Ya | Ya |
ALLOW_SNAPSHOT_ISOLATION | Tidak | Tidak |
READ_COMMITTED_SNAPSHOT | Tidak | Ya |
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT | Ya | Ya |
DATE_CORRELATION_OPTIMIZATION | Ya | Ya |
<sql_option> | Ya | Tidak |
<target_recovery_time_option> | Tidak | Ya |
Contoh
J. Atur database ke READ_ONLY
Mengubah status database atau grup file menjadi READ_ONLY atau READ_WRITE memerlukan akses eksklusif ke database dan mungkin memerlukan waktu beberapa detik untuk diselesaikan. Contoh berikut mengatur database ke RESTRICTED_USER
mode untuk membatasi akses. Contoh kemudian mengatur status AdventureWorks2022
database ke READ_ONLY
dan mengembalikan akses ke database ke semua pengguna.
--Connect to [database_name];
GO
ALTER DATABASE [database_name]
SET RESTRICTED_USER;
GO
ALTER DATABASE [database_name]
SET READ_ONLY
--`SET READ_ONLY` command may take a few seconds to complete.
GO
ALTER DATABASE [database_name]
SET MULTI_USER;
GO
Untuk mengatur kembali database ke mode baca-tulis:
--Connect to [database_name];
GO
ALTER DATABASE [database_name]
SET READ_WRITE
GO
Untuk melakukan pemeriksaan:
SELECT [name], user_access_desc, is_read_only FROM sys.databases
WHERE [name] = 'database_name'
GO
B. Mengaktifkan isolasi rekam jepret pada database
Contoh berikut mengaktifkan opsi kerangka kerja isolasi rekam jepret untuk AdventureWorks2022
database.
--Connect to [database_name]
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
Verifikasi status snapshot_isolation_framework
dalam database.
--Connect to [database_name]
SELECT name, snapshot_isolation_state,
snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'database_name';
GO
Kumpulan hasil menunjukkan bahwa kerangka kerja isolasi rekam jepret diaktifkan.
nama | snapshot_isolation_state | description |
---|---|---|
[nama_database] | 1 | AKTIF |
C. Mengaktifkan, memodifikasi, atau menonaktifkan pelacakan perubahan
Contoh berikut memungkinkan pelacakan perubahan untuk AdventureWorks2022
database dan mengatur periode retensi ke 2
hari.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);
Contoh berikut menunjukkan cara mengubah periode retensi menjadi 3 hari.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);
Contoh berikut menunjukkan cara menonaktifkan pelacakan perubahan untuk AdventureWorks2022
database.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
D. Mengaktifkan Penyimpanan Kueri
Contoh berikut mengaktifkan Penyimpanan Kueri dan mengonfigurasi parameter Penyimpanan Kueri.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
QUERY_CAPTURE_MODE = AUTO,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60
);
E. Mengaktifkan Penyimpanan Kueri dengan statistik tunggu
Contoh berikut mengaktifkan Penyimpanan Kueri dan mengonfigurasi parameternya.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON
);
F. Mengaktifkan Penyimpanan Kueri dengan opsi kebijakan penangkapan kustom
Contoh berikut mengaktifkan Penyimpanan Kueri dan mengonfigurasi parameternya.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON,
QUERY_CAPTURE_MODE = CUSTOM,
QUERY_CAPTURE_POLICY = (
STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
)
);
Lihat juga
- 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 ALTER DATABASE Compatibility Level.
Catatan
Banyak opsi kumpulan database dapat dikonfigurasi untuk sesi saat ini dengan menggunakan Pernyataan SET dan sering dikonfigurasi oleh aplikasi saat tersambung. Opsi set tingkat sesi mengambil alih ALTER DATABASE SET
nilai. Opsi database yang dijelaskan di bagian berikut ini adalah nilai yang dapat diatur untuk sesi yang tidak secara eksplisit menyediakan nilai opsi set lainnya.
Sintaks
ALTER DATABASE { database_name | Current }
SET
{
<optionspec> [ ,...n ]
}
;
<optionspec> ::=
{
<auto_option>
| <change_tracking_option>
| <cursor_option>
| <db_encryption_option>
| <delayed_durability_option>
| <parameterization_option>
| <query_store_options>
| <snapshot_option>
| <sql_option>
| <target_recovery_time_option>
| <termination>
| <temporal_history_retention>
}
;
<auto_option> ::=
{
AUTO_CREATE_STATISTICS { OFF | ON [ ( INCREMENTAL = { ON | OFF } ) ] }
| AUTO_SHRINK { ON | OFF }
| AUTO_UPDATE_STATISTICS { ON | OFF }
| AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}
<automatic_tuning_option> ::=
{
AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF } )
}
<change_tracking_option> ::=
{
CHANGE_TRACKING
{
= OFF
| = ON [ ( <change_tracking_option_list > [,...n] ) ]
| ( <change_tracking_option_list> [,...n] )
}
}
<change_tracking_option_list> ::=
{
AUTO_CLEANUP = { ON | OFF }
| CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
}
<cursor_option> ::=
{
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
}
<db_encryption_option> ::=
ENCRYPTION { ON | OFF }
<delayed_durability_option> ::=DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }
<parameterization_option> ::=
PARAMETERIZATION { SIMPLE | FORCED }
<query_store_options> ::=
{
QUERY_STORE
{
= OFF
| = ON [ ( <query_store_option_list> [,... n] ) ]
| ( < query_store_option_list> [,... n] )
| CLEAR [ ALL ]
}
}
<query_store_option_list> ::=
{
OPERATION_MODE = { READ_WRITE | READ_ONLY }
| CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = number )
| DATA_FLUSH_INTERVAL_SECONDS = number
| MAX_STORAGE_SIZE_MB = number
| INTERVAL_LENGTH_MINUTES = number
| SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
| QUERY_CAPTURE_MODE = { ALL | AUTO | CUSTOM | NONE }
| MAX_PLANS_PER_QUERY = number
| WAIT_STATS_CAPTURE_MODE = { ON | OFF }
| QUERY_CAPTURE_POLICY = ( <query_capture_policy_option_list> [,...n] )
}
<query_capture_policy_option_list> :: =
{
STALE_CAPTURE_POLICY_THRESHOLD = number { DAYS | HOURS }
| EXECUTION_COUNT = number
| TOTAL_COMPILE_CPU_TIME_MS = number
| TOTAL_EXECUTION_CPU_TIME_MS = number
}
<snapshot_option> ::=
{
ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
| READ_COMMITTED_SNAPSHOT { ON | OFF }
| MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }
}
<sql_option> ::=
{
ANSI_NULL_DEFAULT { ON | OFF }
| ANSI_NULLS { ON | OFF }
| ANSI_PADDING { ON | OFF }
| ANSI_WARNINGS { ON | OFF }
| ARITHABORT { ON | OFF }
| COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
| CONCAT_NULL_YIELDS_NULL { ON | OFF }
| NUMERIC_ROUNDABORT { ON | OFF }
| QUOTED_IDENTIFIER { ON | OFF }
| RECURSIVE_TRIGGERS { ON | OFF }
}
<temporal_history_retention>::= TEMPORAL_HISTORY_RETENTION { ON | OFF }
Argumen
database_name
Adalah nama database yang akan dimodifikasi.
CURRENT
CURRENT
menjalankan tindakan dalam database saat ini. CURRENT
tidak didukung untuk semua opsi dalam semua konteks. Jika CURRENT
gagal, berikan nama database.
<> auto_option ::=
Mengontrol opsi otomatis.
AUTO_CREATE_STATISTICS { ON | NONAKTIF }
AKTIF
Pengoptimal Kueri membuat statistik pada kolom tunggal dalam predikat kueri, seperlunya, untuk meningkatkan rencana kueri dan performa kueri. Statistik kolom tunggal ini dibuat saat Pengoptimal Kueri mengkompilasi kueri. Statistik kolom tunggal dibuat hanya pada kolom yang belum menjadi kolom pertama dari objek statistik yang ada.
Defaultnya adalah ON. Kami menyarankan agar Anda menggunakan pengaturan default untuk sebagian besar database.
TIDAK AKTIF
Pengoptimal Kueri tidak membuat statistik pada satu kolom dalam predikat kueri saat mengkompilasi kueri. Mengatur opsi ini ke NONAKTIF dapat menyebabkan rencana kueri suboptimal dan performa kueri yang terdegradasi.
Anda dapat menentukan status opsi ini dengan memeriksa
is_auto_create_stats_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksaIsAutoCreateStatistics
properti fungsi DATABASEPROPERTYEX .Untuk informasi selengkapnya, lihat bagian "Opsi statistik" di Statistik.
INKREMENTAL = AKTIF | OFF
Atur AUTO_CREATE_STATISTICS ke AKTIF, dan atur INCREMENTAL ke AKTIF. Pengaturan ini membuat statistik yang dibuat secara otomatis sebagai bertahap setiap kali statistik inkremental didukung. Nilai defaultnya adalah NONAKTIF. Untuk informasi selengkapnya, lihat MEMBUAT STATISTIK.
AUTO_SHRINK { ON | NONAKTIF }
AKTIF
File database adalah kandidat untuk penyusutan berkala. Kecuali Anda memiliki persyaratan tertentu, jangan atur opsi database AUTO_SHRINK ke AKTIF. Untuk informasi selengkapnya, lihat Menyusutkan database.
File data dan file log dapat disusutkan secara otomatis. AUTO_SHRINK mengurangi ukuran log transaksi hanya jika Anda mengatur database ke model pemulihan SIMPLE atau jika Anda mencadangkan log. Saat diatur ke NONAKTIF, file database tidak secara otomatis menyusut selama pemeriksaan berkala untuk ruang yang tidak digunakan.
Opsi AUTO_SHRINK menyebabkan file diciutkan ketika lebih dari 25 persen file berisi ruang yang tidak digunakan. Opsi ini menyebabkan file menyusut ke salah satu dari dua ukuran. Ini menyusut ke mana pun yang lebih besar:
- Ukuran di mana 25 persen dari file adalah ruang yang tidak digunakan
- Ukuran file ketika dibuat
Anda tidak dapat menyusutkan database baca-saja.
TIDAK AKTIF
File database tidak disusutkan secara otomatis selama pemeriksaan berkala untuk ruang yang tidak digunakan.
Anda dapat menentukan status opsi ini dengan memeriksa is_auto_shrink_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAutoShrink
properti fungsi DATABASEPROPERTYEX .
Catatan
Opsi AUTO_SHRINK tidak tersedia dalam Database Terkandung.
AUTO_UPDATE_STATISTICS { ON | NONAKTIF }
AKTIF
Menentukan bahwa Pengoptimal Kueri memperbarui statistik saat digunakan oleh kueri dan kapan mungkin sudah kedaluarsa. Statistik menjadi kedaluarsa setelah operasi sisipkan, perbarui, hapus, atau gabungkan mengubah distribusi data dalam tabel atau tampilan terindeks. Pengoptimal Kueri menentukan kapan statistik mungkin kedaluarsa dengan menghitung jumlah modifikasi data sejak pembaruan statistik terakhir dan membandingkan jumlah modifikasi dengan ambang batas. Ambang didasarkan pada jumlah baris dalam tabel atau tampilan terindeks.
Pengoptimal Kueri memeriksa statistik yang sudah kedaluwarsa sebelum mengkompilasi kueri dan menjalankan rencana kueri yang di-cache. Pengoptimal Kueri menggunakan kolom, tabel, dan tampilan terindeks dalam predikat kueri untuk menentukan statistik mana yang mungkin sudah kedaluarsa. Pengoptimal Kueri menentukan informasi ini sebelum mengkompilasi kueri. Sebelum menjalankan rencana kueri yang di-cache, Mesin Database memverifikasi bahwa rencana kueri mereferensikan statistik terbaru.
Opsi AUTO_UPDATE_STATISTICS berlaku untuk statistik yang dibuat untuk indeks, kolom tunggal dalam predikat kueri, dan statistik yang dibuat dengan menggunakan pernyataan CREATE STATISTICS. Opsi ini juga berlaku untuk statistik yang difilter.
Defaultnya adalah ON. Kami menyarankan agar Anda menggunakan pengaturan default untuk sebagian besar database.
Gunakan opsi AUTO_UPDATE_STATISTICS_ASYNC untuk menentukan apakah statistik diperbarui secara sinkron atau asinkron.
TIDAK AKTIF
Menentukan bahwa Pengoptimal Kueri tidak memperbarui statistik saat digunakan oleh kueri. Pengoptimal Kueri juga tidak memperbarui statistik saat mungkin sudah kedaluarsa. Mengatur opsi ini ke NONAKTIF dapat menyebabkan rencana kueri suboptimal dan performa kueri yang terdegradasi.
Anda dapat menentukan status opsi ini dengan memeriksa is_auto_update_stats_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAutoUpdateStatistics
properti fungsi DATABASEPROPERTYEX .
Untuk informasi selengkapnya, lihat bagian "Menggunakan opsi statistik di seluruh database" dalam Statistik.
AUTO_UPDATE_STATISTICS_ASYNC { ON | NONAKTIF }
AKTIF
Menentukan bahwa pembaruan statistik untuk opsi AUTO_UPDATE_STATISTICS tidak sinkron. Pengoptimal Kueri tidak menunggu pembaruan statistik selesai sebelum mengkompilasi kueri.
Mengatur opsi ini ke AKTIF tidak berpengaruh kecuali AUTO_UPDATE_STATISTICS diatur ke AKTIF.
Secara default, opsi AUTO_UPDATE_STATISTICS_ASYNC diatur ke NONAKTIF, dan statistik pembaruan Pengoptimal Kueri secara sinkron.
TIDAK AKTIF
Menentukan bahwa pembaruan statistik untuk opsi AUTO_UPDATE_STATISTICS sinkron. Pengoptimal Kueri menunggu pembaruan statistik selesai sebelum mengkompilasi kueri.
Mengatur opsi ini ke NONAKTIF tidak berpengaruh kecuali AUTO_UPDATE_STATISTICS diatur ke AKTIF.
Anda dapat menentukan status opsi ini dengan memeriksa is_auto_update_stats_async_on
kolom dalam tampilan katalog sys.databases .
Untuk informasi selengkapnya yang menjelaskan kapan harus menggunakan pembaruan statistik sinkron atau asinkron, lihat bagian "Menggunakan opsi statistik di seluruh database" dalam Statistik.
<> automatic_tuning_option ::=
Mengontrol opsi otomatis untuk Penyetelan otomatis.
FORCE_LAST_GOOD_PLAN = { DEFAULT | AKTIF | NONAKTIF }
Mengaktifkan atau menonaktifkan FORCE_LAST_GOOD_PLAN
opsi Penyetelan otomatis.
DEFAULT
Nilai default untuk Azure SQL Managed Instance adalah AKTIF.
AKTIF
Mesin Database secara otomatis memaksa rencana baik terakhir yang diketahui pada kueri Transact-SQL di mana rencana kueri baru menyebabkan regresi performa. Mesin Database terus memantau performa kueri kueri Transact-SQL dengan paket paksa. Jika terdapat peningkatan performa, Mesin Database akan terus menggunakan rencana optimal terakhir yang diketahui. Jika tidak terdapat peningkatan performa, Mesin Database akan menghasilkan rencana kueri baru. Pernyataan akan gagal jika Penyimpanan Kueri tidak diaktifkan atau jika tidak dalam mode Baca-Tulis . Ini adalah nilai default.
TIDAK AKTIF
Mesin Database melaporkan potensi regresi performa kueri yang disebabkan oleh perubahan rencana kueri dalam tampilan sys.dm_db_tuning_recommendations . Namun, rekomendasi ini tidak diterapkan secara otomatis. Pengguna dapat memantau rekomendasi aktif dan memperbaiki masalah yang diidentifikasi dengan menerapkan skrip Transact-SQL yang ditampilkan dalam tampilan.
<> change_tracking_option ::=
Mengontrol opsi pelacakan perubahan. Anda dapat mengaktifkan pelacakan perubahan, mengatur opsi, mengubah opsi, dan menonaktifkan pelacakan perubahan. Misalnya, lihat bagian Contoh nanti di artikel ini.
AKTIF
Mengaktifkan pelacakan perubahan untuk database. Saat mengaktifkan pelacakan perubahan, Anda juga dapat mengatur opsi PEMBERSIHAN OTOMATIS dan UBAH RETENSI.
AUTO_CLEANUP = { AKTIF | NONAKTIF }
AKTIF
Informasi pelacakan perubahan dihapus secara otomatis setelah periode retensi yang ditentukan.
TIDAK AKTIF
Data pelacakan perubahan tidak dihapus dari database.
CHANGE_RETENTION = retention_period { DAYS | JAM | MENIT }
Menentukan periode minimum untuk menyimpan informasi pelacakan perubahan dalam database. Data dihapus hanya ketika nilai AUTO_CLEANUP AKTIF.
retention_period adalah bilangan bulat yang menentukan komponen numerik dari periode retensi.
Periode retensi default adalah 2 hari. Periode retensi minimum adalah 1 menit. Jenis retensi default adalah DAYS.
TIDAK AKTIF
Menonaktifkan pelacakan perubahan untuk database. Nonaktifkan pelacakan perubahan pada semua tabel sebelum Anda menonaktifkan pelacakan perubahan dari database.
<> cursor_option ::=
Mengontrol opsi kursor.
CURSOR_CLOSE_ON_COMMIT { ON | NONAKTIF }
AKTIF
Setiap kursor terbuka saat Anda menerapkan atau mengembalikan transaksi ditutup.
TIDAK AKTIF
Kursor tetap terbuka ketika transaksi dilakukan; mengembalikan transaksi menutup kursor apa pun kecuali yang didefinisikan sebagai INSENSITIVE atau STATIC.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk CURSOR_CLOSE_ON_COMMIT. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi CURSOR_CLOSE_ON_COMMIT ke NONAKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR CURSOR_CLOSE_ON_COMMIT.
Anda dapat menentukan status opsi ini dengan memeriksa kolom dalam tampilan katalog sys.databases atau properti IsCloseCursorsOnCommitEnabled dari fungsi DATABASEPROPERTYEX.is_cursor_close_on_commit_on
Kursor secara implisit dibatalkan alokasinya hanya pada pemutusan sambungan. Untuk informasi selengkapnya, lihat MENDEKLARASIKAN KURSOR.
<> db_encryption_option ::=
Mengontrol status enkripsi database.
ENKRIPSI { AKTIF | NONAKTIF }
Mengatur database yang akan dienkripsi (AKTIF) atau tidak dienkripsi (NONAKTIF). Untuk informasi selengkapnya tentang enkripsi database, lihat Enkripsi Data Transparan, dan Enkripsi Data Transparan dengan Azure SQL Database.
Ketika enkripsi diaktifkan di tingkat database, semua grup file akan dienkripsi. Setiap grup file baru akan mewarisi properti terenkripsi. Jika ada grup file dalam database yang diatur ke BACA SAJA, operasi enkripsi database akan gagal.
Anda dapat melihat status enkripsi database dengan menggunakan tampilan manajemen dinamis sys.dm_database_encryption_keys .
<> delayed_durability_option ::=
Mengontrol apakah transaksi berkomitmen sepenuhnya tahan lama atau tertunda tahan lama.
DINONAKTIFKAN
Semua transaksi berikut
SET DISABLED
sepenuhnya tahan lama. Setiap opsi durabilitas yang diatur dalam blok atom atau pernyataan penerapan diabaikan.DIPERBOLEHKAN
Semua transaksi berikut
SET ALLOWED
sepenuhnya tahan lama atau tertunda tahan lama, tergantung pada opsi durabilitas yang ditetapkan dalam blok atom atau pernyataan penerapan.DIPAKSA
Semua transaksi berikut
SET FORCED
tertunda tahan lama. Setiap opsi durabilitas yang diatur dalam blok atom atau pernyataan penerapan diabaikan.
<> PARAMETERIZATION_option ::=
Mengontrol opsi parameterisasi.
PARAMETERISASI { SEDERHANA | FORCED }
SEDERHANA
Kueri diparameterkan berdasarkan perilaku default database.
DIPAKSA
SQL Server membuat parameter semua kueri dalam database.
Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa is_parameterization_forced
kolom dalam tampilan katalog sys.databases .
<> query_store_options ::=
AKTIF | NONAKTIF | JELAS [ SEMUA ]
Mengontrol apakah Penyimpanan Kueri diaktifkan dalam database ini, dan juga mengontrol penghapusan konten Penyimpanan Kueri.
AKTIF
Mengaktifkan Penyimpanan Kueri.
TIDAK AKTIF
Menonaktifkan Penyimpanan Kueri. Ini adalah nilai default.
KOSONGKAN
Hapus konten Penyimpanan Kueri.
OPERATION_MODE
Menjelaskan mode operasi Penyimpanan Kueri. Nilai yang valid adalah READ_ONLY dan READ_WRITE. Dalam mode READ_WRITE, Penyimpanan Kueri mengumpulkan dan mempertahankan rencana kueri dan informasi statistik eksekusi runtime. Dalam mode READ_ONLY, informasi dapat dibaca dari Penyimpanan Kueri, tetapi informasi baru tidak ditambahkan. Jika ruang maksimum yang dialokasikan dari Penyimpanan Kueri telah habis, Penyimpanan Kueri akan berubah adalah mode operasi menjadi READ_ONLY.
CLEANUP_POLICY
Menjelaskan kebijakan penyimpanan data Penyimpanan Kueri. STALE_QUERY_THRESHOLD_DAYS menentukan jumlah hari di mana informasi untuk kueri disimpan di Penyimpanan Kueri. STALE_QUERY_THRESHOLD_DAYS jenis besar. Nilai default adalah 30. Untuk edisi SQL Database Basic, defaultnya adalah 7 hari.
DATA_FLUSH_INTERVAL_SECONDS
Menentukan frekuensi di mana data yang ditulis ke Penyimpanan Kueri dipertahankan ke disk. Untuk mengoptimalkan performa, data yang dikumpulkan oleh Penyimpanan Kueri ditulis secara asinkron ke disk. Frekuensi di mana transfer asinkron ini terjadi dikonfigurasi dengan menggunakan argumen DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS jenis besar. Nilai defaultnya adalah 900 (15 menit).
MAX_STORAGE_SIZE_MB
Menentukan ruang yang dialokasikan ke Penyimpanan Kueri. MAX_STORAGE_SIZE_MB adalah jenis bigint. Nilai defaultnya adalah 100 MB.
MAX_STORAGE_SIZE_MB
batas tidak diberlakukan secara ketat. Ukuran penyimpanan dicentang hanya saat Penyimpanan Kueri menulis data ke disk. Interval ini diatur oleh DATA_FLUSH_INTERVAL_SECONDS
opsi atau opsi dialog Penyimpanan Kueri Studio Manajemen Interval Flush Data. Nilai default interval adalah 900 detik (atau 15 menit).
Jika Penyimpanan Kueri telah melanggar MAX_STORAGE_SIZE_MB
batas antara pemeriksaan ukuran penyimpanan, penyimpanan akan beralih ke mode baca-saja. Jika SIZE_BASED_CLEANUP_MODE
diaktifkan, mekanisme pembersihan untuk memberlakukan MAX_STORAGE_SIZE_MB
batas juga dipicu.
Setelah cukup ruang dibersihkan, mode Penyimpanan Kueri akan secara otomatis beralih kembali ke baca-tulis.
Penting
- Jika Anda berpikir bahwa pengambilan beban kerja Anda akan membutuhkan lebih dari 10 GB ruang disk, Anda mungkin harus memikirkan kembali dan mengoptimalkan beban kerja Anda untuk menggunakan kembali rencana kueri (misalnya menggunakan parameterisasi paksa, atau menyesuaikan konfigurasi Penyimpanan Kueri.
- Dimulai dengan SQL Server 2019 (15.x) dan di Azure SQL Database, Anda dapat mengatur
QUERY_CAPTURE_MODE
ke KUSTOM untuk kontrol tambahan atas kebijakan pengambilan kueri. MAX_STORAGE_SIZE_MB
batas pengaturan adalah 10.240 MB pada Azure SQL Managed Instance.
INTERVAL_LENGTH_MINUTES
Menentukan interval waktu di mana data statistik eksekusi runtime dikumpulkan ke dalam Penyimpanan Kueri. Untuk mengoptimalkan penggunaan ruang, statistik eksekusi runtime di penyimpanan statistik runtime dikumpulkan selama jendela waktu tetap. Jendela waktu tetap ini dikonfigurasi dengan menggunakan argumen INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES jenis besar. Nilai defaultnya adalah 60.
SIZE_BASED_CLEANUP_MODE = { AUTO | NONAKTIF }
Mengontrol apakah pembersihan akan diaktifkan secara otomatis ketika jumlah total data mendekati ukuran maksimum.
TIDAK AKTIF
Pembersihan berbasis ukuran tidak akan diaktifkan secara otomatis.
AUTO
Pembersihan berbasis ukuran akan diaktifkan secara otomatis ketika ukuran pada disk mencapai 90% dari max_storage_size_mb. Pembersihan berbasis ukuran menghapus kueri yang paling murah dan terlama terlebih dahulu. Ini berhenti pada sekitar 80% dari max_storage_size_mb. Ini adalah nilai konfigurasi default.
SIZE_BASED_CLEANUP_MODE adalah jenis nvarchar.
QUERY_CAPTURE_MODE { ALL | AUTO | KUSTOM | TIDAK ADA }
Menunjuk mode pengambilan kueri yang saat ini aktif.
SEMUA
Semua kueri diambil.
AUTO
Tangkap kueri yang relevan berdasarkan jumlah eksekusi dan konsumsi sumber daya. Ini adalah nilai konfigurasi default untuk Azure SQL Database.
NONE
Berhenti mengambil kueri baru. Penyimpanan Kueri akan terus mengumpulkan statistik kompilasi dan runtime untuk kueri yang sudah diambil. Gunakan konfigurasi ini dengan hati-hati karena Anda mungkin kehilangan pengambilan kueri penting.
QUERY_CAPTURE_MODE adalah jenis nvarchar.
MAX_PLANS_PER_QUERY
Bilangan bulat yang mewakili jumlah maksimum paket yang dipertahankan untuk setiap kueri. MAX_PLANS_PER_QUERY adalah tipe int. Nilai defaultnya adalah 200.
WAIT_STATS_CAPTURE_MODE { ON | NONAKTIF }
Mengontrol apakah statistik tunggu akan diambil per kueri.
AKTIF
Informasi statistik tunggu per kueri diambil. Nilai ini adalah nilai konfigurasi default.
TIDAK AKTIF
Informasi statistik tunggu per kueri tidak akan diambil.
<> query_capture_policy_option_list :: =
Mengontrol opsi kebijakan penangkapan Penyimpanan Kueri. Kecuali untuk STALE_CAPTURE_POLICY_THRESHOLD, opsi ini menentukan kondisi OR yang perlu terjadi agar kueri diambil dalam nilai Ambang Kebijakan Pengambilan Kedaluarsa yang ditentukan.
STALE_CAPTURE_POLICY_THRESHOLD = bilangan bulat { DAYS | JAM }
Menentukan periode interval evaluasi untuk menentukan apakah kueri harus diambil. Defaultnya adalah 1 hari, dan dapat diatur dari 1 jam hingga tujuh hari.
EXECUTION_COUNT = bilangan bulat
Menentukan berapa kali kueri dijalankan selama periode evaluasi. Defaultnya adalah 30, yang berarti bahwa untuk Ambang Kebijakan Pengambilan Kedaluarsa default, kueri harus dijalankan setidaknya 30 kali dalam satu hari untuk dipertahankan di Penyimpanan Kueri. EXECUTION_COUNT adalah jenis int.
TOTAL_COMPILE_CPU_TIME_MS = bilangan bulat
Menentukan total waktu CPU kompilasi yang berlalu yang digunakan oleh kueri selama periode evaluasi. Defaultnya adalah 1000, yang berarti bahwa untuk Ambang Kebijakan Pengambilan Kedaluarsa default, kueri harus memiliki total setidaknya satu detik waktu CPU yang dihabiskan selama kompilasi kueri dalam satu hari untuk dipertahankan di Penyimpanan Kueri. TOTAL_COMPILE_CPU_TIME_MS adalah tipe int.
TOTAL_EXECUTION_CPU_TIME_MS = bilangan bulat
Menentukan total waktu CPU eksekusi yang berlalu yang digunakan oleh kueri selama periode evaluasi. Defaultnya adalah 100, yang berarti bahwa untuk Ambang Kebijakan Pengambilan Kedaluarsa default, kueri harus memiliki total setidaknya 100 md waktu CPU yang dihabiskan selama eksekusi dalam satu hari untuk dipertahankan di Penyimpanan Kueri. TOTAL_EXECUTION_CPU_TIME_MS adalah jenis int.
<> snapshot_option ::=
Menentukan tingkat isolasi transaksi.
ALLOW_SNAPSHOT_ISOLATION { ON | NONAKTIF }
AKTIF
Mengaktifkan opsi Rekam Jepret di tingkat database. Saat diaktifkan, pernyataan DML mulai menghasilkan versi baris bahkan ketika tidak ada transaksi yang menggunakan Isolasi Rekam Jepret. Setelah opsi ini diaktifkan, transaksi dapat menentukan tingkat isolasi transaksi SNAPSHOT. Ketika transaksi berjalan di tingkat isolasi SNAPSHOT, semua pernyataan melihat rekam jepret data seperti yang ada di awal transaksi. Jika transaksi yang berjalan di tingkat isolasi SNAPSHOT mengakses data dalam beberapa database, baik ALLOW_SNAPSHOT_ISOLATION harus diatur ke AKTIF di semua database, atau setiap pernyataan dalam transaksi harus menggunakan petunjuk penguncian pada referensi apa pun dalam klausul FROM ke tabel dalam database di mana ALLOW_SNAPSHOT_ISOLATION NONAKTIF.
TIDAK AKTIF
Menonaktifkan opsi Rekam Jepret di tingkat database. Transaksi tidak dapat menentukan tingkat isolasi transaksi SNAPSHOT.
Saat Anda mengatur ALLOW_SNAPSHOT_ISOLATION ke status baru (dari AKTIF ke NONAKTIF, atau dari NONAKTIF ke AKTIF), ALTER DATABASE tidak mengembalikan kontrol ke pemanggil hingga semua transaksi yang ada dalam database diterapkan. Jika database sudah dalam status yang ditentukan dalam pernyataan ALTER DATABASE, kontrol akan segera dikembalikan ke pemanggil. Jika pernyataan ALTER DATABASE tidak ditampilkan dengan cepat, gunakan sys.dm_tran_active_snapshot_database_transactions untuk menentukan apakah ada transaksi yang berjalan lama. Jika pernyataan ALTER DATABASE dibatalkan, database tetap dalam status saat ALTER DATABASE dimulai. Tampilan katalog sys.databases menunjukkan status transaksi isolasi rekam jepret dalam database. Jika snapshot_isolation_state_desc = IN_TRANSITION_TO_ON, pernyataan ALTER DATABASE ... ALLOW_SNAPSHOT_ISOLATION OFF
akan menjeda enam detik dan mencoba kembali operasi.
Anda tidak dapat mengubah status ALLOW_SNAPSHOT_ISOLATION jika database OFFLINE.
Anda dapat mengubah pengaturan ALLOW_SNAPSHOT_ISOLATION untuk master
database , , model
msdb
, dan tempdb
. Pengaturan disimpan setiap kali instans Mesin Database dihentikan dan dimulai ulang jika Anda mengubah pengaturan untuk tempdb
. Jika Anda mengubah pengaturan untuk database sistem, pengaturan tersebut model
menjadi default untuk database baru apa pun yang dibuat, kecuali untuk tempdb
.
Opsinya adalah AKTIF, secara default, untuk master
database dan msdb
.
Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa snapshot_isolation_state
kolom dalam tampilan katalog sys.databases .
READ_COMMITTED_SNAPSHOT { ON | NONAKTIF }
AKTIF
Mengaktifkan opsi Rekam Jepret Yang Diterapkan Baca di tingkat database. Saat diaktifkan, pernyataan DML mulai menghasilkan versi baris bahkan ketika tidak ada transaksi yang menggunakan Isolasi Rekam Jepret. Setelah opsi ini diaktifkan, transaksi yang menentukan tingkat isolasi READ COMMITTED menggunakan penerapan versi baris alih-alih mengunci. Semua pernyataan melihat rekam jepret data seperti yang ada di awal pernyataan saat transaksi berjalan di tingkat isolasi READ COMMITTED.
TIDAK AKTIF
Menonaktifkan opsi Rekam Jepret yang Diterapkan Baca di tingkat database. Transaksi yang menentukan tingkat isolasi READ COMMITTED menggunakan penguncian.
Untuk mengatur READ_COMMITTED_SNAPSHOT ke AKTIF atau NONAKTIF, tidak boleh ada koneksi aktif ke database kecuali untuk koneksi yang menjalankan perintah UBAH DATABASE. Namun, database tidak harus dalam mode pengguna tunggal. Anda tidak dapat mengubah status opsi ini saat database OFFLINE.
READ_COMMITTED_SNAPSHOT tidak dapat diaktifkan untuk master
database sistem , , tempdb
atau msdb
. Jika Anda mengubah pengaturan untuk database sistem, pengaturan tersebut model
menjadi default untuk database baru yang dibuat, kecuali untuk tempdb
.
Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa is_read_committed_snapshot_on
kolom dalam tampilan katalog sys.databases .
Peringatan
Saat tabel dibuat dengan DURABILITY = SCHEMA_ONLY, dan READ_COMMITTED_SNAPSHOT kemudian diubah menggunakan ALTER DATABASE, data dalam tabel akan hilang.
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | NONAKTIF }
AKTIF
Ketika tingkat isolasi transaksi diatur ke tingkat isolasi apa pun yang lebih rendah dari SNAPSHOT, semua operasi Transact-SQL yang ditafsirkan pada tabel yang dioptimalkan memori dijalankan di bawah isolasi SNAPSHOT. Contoh tingkat isolasi yang lebih rendah dari rekam jepret adalah READ COMMITTED atau READ UNCOMMITTED. Operasi ini berjalan apakah tingkat isolasi transaksi diatur secara eksplisit pada tingkat sesi, atau default digunakan secara implisit.
TIDAK AKTIF
Tidak meningkatkan tingkat isolasi transaksi untuk operasi Transact-SQL yang ditafsirkan pada tabel yang dioptimalkan memori.
Anda tidak dapat mengubah status MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT jika database OFFLINE.
Nilai defaultnya adalah NONAKTIF.
Pengaturan opsi ini saat ini dapat ditentukan dengan memeriksa is_memory_optimized_elevate_to_snapshot_on
kolom dalam tampilan katalog sys.databases .
<> sql_option ::=
Mengontrol opsi kepatuhan ANSI di tingkat database.
ANSI_NULL_DEFAULT { ON | NONAKTIF }
Menentukan nilai default, NULL atau NOT NULL, dari kolom atau tipe yang ditentukan pengguna CLR di mana nullability tidak ditentukan secara eksplisit dalam pernyataan CREATE TABLE atau ALTER TABLE. Kolom yang ditentukan dengan batasan mengikuti aturan batasan apa pun pengaturan ini.
AKTIF
Nilai defaultnya adalah NULL.
TIDAK AKTIF
Nilai defaultnya ADALAH NOT NULL.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan tingkat database default untuk ANSI_NULL_DEFAULT. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_NULL_DEFAULT ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR ANSI_NULL_DFLT_ON.
Untuk kompatibilitas ANSI, atur opsi database ANSI_NULL_DEFAULT ke AKTIF mengubah default database menjadi NULL.
Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_null_default_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiNullDefault
properti fungsi DATABASEPROPERTYEX .
ANSI_NULLS { ON | NONAKTIF }
AKTIF
Semua perbandingan dengan nilai null dievaluasi ke UNKNOWN.
TIDAK AKTIF
Perbandingan nilai non-Unicode dengan nilai null dievaluasi ke TRUE jika kedua nilai adalah NULL.
Penting
Dalam versi SQL Server di masa mendatang, ANSI_NULLS akan selalu AKTIF dan aplikasi apa pun yang secara eksplisit mengatur opsi ke NONAKTIF akan menghasilkan kesalahan. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk ANSI_NULLS. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_NULLS ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat SET ANSI_NULLS.
Penting
SET ANSI_NULLS juga harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.
Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_nulls_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiNullsEnabled
properti fungsi DATABASEPROPERTYEX .
ANSI_PADDING { ON | NONAKTIF }
AKTIF
String diisi dengan panjang yang sama sebelum konversi. Juga diisi dengan panjang yang sama sebelum menyisipkan ke jenis data varchar atau nvarchar .
TIDAK AKTIF
Menyisipkan kosong di belakang dalam nilai karakter ke dalam kolom varchar atau nvarchar . Juga meninggalkan nol di belakang dalam nilai biner yang disisipkan ke dalam kolom varbinary . Nilai tidak diisi ke panjang kolom.
Ketika OFF ditentukan, pengaturan ini hanya memengaruhi definisi kolom baru.
Penting
Dalam versi SQL Server di masa mendatang, ANSI_PADDING akan selalu AKTIF dan aplikasi apa pun yang secara eksplisit mengatur opsi ke NONAKTIF akan menghasilkan kesalahan. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Kami menyarankan agar Anda selalu mengatur ANSI_PADDING ke AKTIF. ANSI_PADDING harus AKTIF saat Anda membuat atau memanipulasi indeks pada kolom komputasi atau tampilan terindeks.
kolom char(n) dan biner(n) yang memungkinkan null diisi ke panjang kolom saat ANSI_PADDING diatur ke AKTIF. Kosong berikutnya dan nol dipangkas saat ANSI_PADDING NONAKTIF. kolom char(n) dan biner(n) yang tidak mengizinkan null selalu diisi ke panjang kolom.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan tingkat database default untuk ANSI_PADDING. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_PADDING ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat SET ANSI_PADDING.
Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_padding_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiPaddingEnabled
properti fungsi DATABASEPROPERTYEX .
ANSI_WARNINGS { ON | NONAKTIF }
AKTIF
Kesalahan atau peringatan dikeluarkan ketika kondisi seperti pembagian dengan nol terjadi. Kesalahan dan peringatan juga dikeluarkan ketika nilai null muncul dalam fungsi agregat.
TIDAK AKTIF
Tidak ada peringatan yang dimunculkan dan nilai null dikembalikan ketika kondisi seperti membagi demi nol terjadi.
Penting
SET ANSI_WARNINGS harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk ANSI_WARNINGS. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi ANSI_WARNINGS ke AKTIF untuk sesi tersebut, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR ANSI_WARNINGS.
Anda dapat menentukan status opsi ini dengan memeriksa is_ansi_warnings_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAnsiWarningsEnabled
properti fungsi DATABASEPROPERTYEX .
ARITHABORT { ON | NONAKTIF }
AKTIF
Kueri berakhir ketika terjadi kesalahan luapan atau membagi berdasarkan nol selama eksekusi kueri.
TIDAK AKTIF
Pesan peringatan ditampilkan ketika salah satu kesalahan ini terjadi. Kueri, batch, atau transaksi terus diproses seolah-olah tidak ada kesalahan yang terjadi meskipun peringatan ditampilkan.
Penting
ATUR ARITHABORT harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.
Anda dapat menentukan status opsi ini dengan memeriksa is_arithabort_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsArithmeticAbortEnabled
properti fungsi DATABASEPROPERTYEX .
COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Untuk informasi selengkapnya, lihat MENGUBAH Tingkat Kompatibilitas DATABASE.
CONCAT_NULL_YIELDS_NULL { ON | NONAKTIF }
AKTIF
Hasil dari operasi perangkaian adalah NULL ketika salah satu operand adalah NULL. Misalnya, menggabungkan string karakter "Ini" dan NULL menyebabkan nilai NULL, alih-alih nilai "Ini".
TIDAK AKTIF
Nilai null diperlakukan sebagai string karakter kosong.
Penting
CONCAT_NULL_YIELDS_NULL harus diatur ke AKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.
Dalam versi SQL Server di masa mendatang, CONCAT_NULL_YIELDS_NULL akan selalu AKTIF dan aplikasi apa pun yang secara eksplisit mengatur opsi ke NONAKTIF akan menghasilkan kesalahan. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk CONCAT_NULL_YIELDS_NULL. Secara default, klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi CONCAT_NULL_YIELDS_NULL ke AKTIF untuk sesi saat menyambungkan ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR CONCAT_NULL_YIELDS_NULL.
Anda dapat menentukan status opsi ini dengan memeriksa is_concat_null_yields_null_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsNullConcat
properti fungsi DATABASEPROPERTYEX .
NUMERIC_ROUNDABORT { ON | NONAKTIF }
AKTIF
Kesalahan dihasilkan ketika hilangnya presisi terjadi dalam ekspresi.
TIDAK AKTIF
Hilangnya presisi tidak menghasilkan pesan kesalahan, dan hasilnya dibulatkan ke presisi kolom atau variabel yang menyimpan hasilnya.
Penting
NUMERIC_ROUNDABORT harus diatur ke NONAKTIF saat Anda membuat atau membuat perubahan pada indeks pada kolom komputasi atau tampilan terindeks.
Anda dapat menentukan status opsi ini di is_numeric_roundabort_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsNumericRoundAbortEnabled
properti fungsi DATABASEPROPERTYEX .
QUOTED_IDENTIFIER { ON | NONAKTIF }
AKTIF
Tanda kutip ganda dapat digunakan untuk mengapit pengidentifikasi yang dibatasi.
Semua string yang dibatasi oleh tanda kutip ganda ditafsirkan sebagai pengidentifikasi objek. Pengidentifikasi yang dikutip tidak harus mengikuti aturan Transact-SQL untuk pengidentifikasi. Mereka dapat menjadi kata kunci dan dapat menyertakan karakter yang tidak diizinkan dalam pengidentifikasi Transact-SQL. Jika tanda kutip ganda (
"
) adalah bagian dari pengidentifikasi, tanda kutip ganda dapat diwakili oleh dua tanda kutip ganda (""
).TIDAK AKTIF
Pengidentifikasi tidak boleh dalam tanda kutip dan harus mengikuti semua aturan Transact-SQL untuk pengidentifikasi. Literal dapat dibatasi dengan tanda kutip tunggal atau ganda.
SQL Server juga memungkinkan pengidentifikasi dibatasi oleh tanda kurung siku ([
dan ]
). Pengidentifikasi kurung selalu dapat digunakan, apa pun pengaturan QUOTED_IDENTIFIER. Untuk informasi selengkapnya, lihat Pengidentifikasi Database.
Saat tabel dibuat, opsi PENGIDENTIFIKASI KUTIPan selalu disimpan sebagai AKTIF dalam metadata tabel. Opsi disimpan meskipun opsi diatur ke NONAKTIF saat tabel dibuat.
Pengaturan tingkat koneksi yang diatur dengan menggunakan pernyataan SET mengambil alih pengaturan database default untuk QUOTED_IDENTIFIER. Klien ODBC dan OLE DB mengeluarkan pengaturan pernyataan SET tingkat koneksi QUOTED_IDENTIFIER ke AKTIF, secara default. Klien menjalankan pernyataan saat Anda tersambung ke instans SQL Server. Untuk informasi selengkapnya, lihat MENGATUR QUOTED_IDENTIFIER.
Anda dapat menentukan status opsi ini dengan memeriksa is_quoted_identifier_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsQuotedIdentifiersEnabled
properti fungsi DATABASEPROPERTYEX .
RECURSIVE_TRIGGERS { ON | NONAKTIF }
AKTIF
Penembakan rekursif pemicu AFTER diizinkan.
TIDAK AKTIF
Anda dapat menentukan status opsi ini dengan memeriksa
is_recursive_triggers_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksaIsRecursiveTriggersEnabled
properti fungsi DATABASEPROPERTYEX .Catatan
Hanya rekursi langsung yang dicegah saat RECURSIVE_TRIGGERS diatur ke NONAKTIF. Untuk menonaktifkan rekursi tidak langsung, Anda juga harus mengatur opsi server pemicu berlapis ke 0.
Anda dapat menentukan status opsi ini dengan memeriksa is_recursive_triggers_on
kolom dalam tampilan katalog sys.databases atau IsRecursiveTriggersEnabled
properti fungsi DATABASEPROPERTYEX .
<> target_recovery_time_option ::=
target_recovery_time_option tidak didukung di Azure SQL Managed Instance.
Menentukan frekuensi titik pemeriksaan tidak langsung berdasarkan per database. Dimulai dengan SQL Server 2016 (13.x) nilai default untuk database baru adalah 1 menit, yang menunjukkan database akan menggunakan titik pemeriksaan tidak langsung. Untuk versi yang lebih lama, defaultnya adalah 0, yang menunjukkan bahwa database akan menggunakan titik pemeriksaan otomatis, yang frekuensinya tergantung pada pengaturan interval pemulihan instans server. Microsoft merekomendasikan 1 menit untuk sebagian besar sistem.
DENGAN <penghentian> ::=
Menentukan kapan harus mengembalikan transaksi yang tidak lengkap saat database ditransisikan dari satu status ke status lainnya. Jika klausul penghentian dihilangkan, pernyataan ALTER DATABASE menunggu tanpa batas waktu jika ada kunci pada database. Hanya satu klausul penghentian yang dapat ditentukan, dan mengikuti klausul SET.
Catatan
Tidak semua opsi database menggunakan klausa penghentian> WITH<. Untuk informasi selengkapnya, lihat tabel di bawah Opsi pengaturan bagian "Keterangan" di artikel ini.
ROLLBACK SETELAH bilangan bulat [DETIK] | ROLLBACK SEGERA
Menentukan apakah akan digulung balik setelah jumlah detik yang ditentukan atau segera.
NO_WAIT
Menentukan bahwa permintaan akan gagal jika status database yang diminta atau perubahan opsi tidak dapat segera diselesaikan. Menyelesaikan dengan segera berarti tidak menunggu transaksi dilakukan atau digulung balik sendiri.
<> temporal_history_retention ::=
TEMPORAL_HISTORY_RETENTION { ON | NONAKTIF }
AKTIF secara default tetapi juga secara otomatis diatur ke NONAKTIF setelah operasi pemulihan titik waktu. Untuk informasi selengkapnya termasuk cara mengaktifkan pengaturan ini, lihat Cara mengonfigurasi kebijakan penyimpanan.
AKTIF
Default. Mengaktifkan kebijakan penyimpanan tabel temporal. Untuk informasi selengkapnya, lihat Mengelola retensi data historis dalam tabel temporal versi sistem.
TIDAK AKTIF
Jangan melakukan kebijakan penyimpanan historis temporal.
Atur opsi
Untuk mengambil pengaturan saat ini untuk opsi database, gunakan tampilan katalog sys.databases atau DATABASEPROPERTYEX
Setelah Anda mengatur opsi database, pengaturan baru akan segera berlaku.
Anda bisa mengubah nilai default untuk salah satu opsi database untuk semua database yang baru dibuat. Untuk melakukannya, ubah opsi database yang sesuai dalam model
database sistem.
Contoh
J. Mengaktifkan isolasi rekam jepret pada database
Contoh berikut mengaktifkan opsi kerangka kerja isolasi rekam jepret untuk AdventureWorks2022
database.
USE master;
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
-- Check the state of the snapshot_isolation_framework
-- in the database.
SELECT name, snapshot_isolation_state,
snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'[database_name]';
GO
Kumpulan hasil menunjukkan bahwa kerangka kerja isolasi rekam jepret diaktifkan.
nama | snapshot_isolation_state | description |
---|---|---|
[nama_database] | 1 | AKTIF |
B. Mengaktifkan, memodifikasi, atau menonaktifkan pelacakan perubahan
Contoh berikut memungkinkan pelacakan perubahan untuk AdventureWorks2022
database dan mengatur periode retensi ke 2
hari.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);
Contoh berikut menunjukkan cara mengubah periode retensi menjadi 3
hari.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);
Contoh berikut menunjukkan cara menonaktifkan pelacakan perubahan untuk AdventureWorks2022
database.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
C. Mengaktifkan Penyimpanan Kueri
Contoh berikut mengaktifkan Penyimpanan Kueri dan mengonfigurasi parameter Penyimpanan Kueri.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
QUERY_CAPTURE_MODE = AUTO,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60
);
D. Mengaktifkan Penyimpanan Kueri dengan statistik tunggu
Contoh berikut mengaktifkan Penyimpanan Kueri dan mengonfigurasi parameternya.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON
);
E. Mengaktifkan Penyimpanan Kueri dengan opsi kebijakan penangkapan kustom
Contoh berikut mengaktifkan Penyimpanan Kueri dan mengonfigurasi parameternya.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON,
QUERY_CAPTURE_MODE = CUSTOM,
QUERY_CAPTURE_POLICY = (
STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
)
);
Lihat juga
- Statistik
- DATABASEPROPERTYEX
- sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
Langkah berikutnya
* Azure Synapse
Analytics*
Azure Synapse Analytics
Sintaks
ALTER DATABASE { database_name }
SET
{
<optionspec> [ ,...n ]
}
;
<option_spec>::=
{
<auto_option>
| <db_encryption_option>
| <query_store_options>
| <result_set_caching>
| <snapshot_option>
}
;
<auto_option> ::=
{
AUTO_CREATE_STATISTICS { OFF | ON }
}
<db_encryption_option> ::=
{
ENCRYPTION { ON | OFF }
}
<query_store_option> ::=
{
QUERY_STORE { OFF | ON }
}
<result_set_caching_option> ::=
{
RESULT_SET_CACHING { ON | OFF }
}
<snapshot_option> ::=
{
READ_COMMITTED_SNAPSHOT { ON | OFF }
}
Argumen
database_name
Adalah nama database yang akan dimodifikasi.
<> auto_option ::=
Mengontrol opsi otomatis.
AUTO_CREATE_STATISTICS { ON | NONAKTIF }
AKTIF
Pengoptimal Kueri membuat statistik pada kolom tunggal dalam predikat kueri, seperlunya, untuk meningkatkan rencana kueri dan performa kueri. Statistik kolom tunggal ini dibuat saat Pengoptimal Kueri mengkompilasi kueri. Statistik kolom tunggal dibuat hanya pada kolom yang belum menjadi kolom pertama dari objek statistik yang ada.
Defaultnya adalah ON. Kami menyarankan agar Anda menggunakan pengaturan default untuk sebagian besar database.
TIDAK AKTIF
Pengoptimal Kueri tidak membuat statistik pada satu kolom dalam predikat kueri saat mengkompilasi kueri. Mengatur opsi ini ke NONAKTIF dapat menyebabkan rencana kueri suboptimal dan performa kueri yang terdegradasi.
Perintah ini harus dijalankan saat tersambung ke database pengguna.
Anda dapat menentukan status opsi ini dengan memeriksa is_auto_create_stats_on
kolom dalam tampilan katalog sys.databases . Anda juga dapat menentukan status dengan memeriksa IsAutoCreateStatistics
properti fungsi DATABASEPROPERTYEX .
Untuk informasi selengkapnya, lihat bagian "Menggunakan opsi statistik di seluruh database" dalam Statistik.
<> db_encryption_option ::=
Mengontrol status enkripsi database.
ENKRIPSI { AKTIF | NONAKTIF }
AKTIF
Mengatur database yang akan dienkripsi.
TIDAK AKTIF
Mengatur database agar tidak dienkripsi.
Untuk informasi selengkapnya tentang enkripsi database, lihat Enkripsi data transparan (TDE), dan Enkripsi data transparan untuk SQL Database, SQL Managed Instance, dan Azure Synapse Analytics.
Ketika enkripsi diaktifkan di tingkat database, semua grup file akan dienkripsi. Setiap grup file baru akan mewarisi properti terenkripsi. Jika ada grup file dalam database yang diatur ke BACA SAJA, operasi enkripsi database akan gagal.
Anda dapat melihat status enkripsi database dan status pemindaian enkripsi dengan menggunakan sys.dm_database_encryption_keys
tampilan manajemen dinamis.
<> query_store_option ::=
Mengontrol apakah Penyimpanan Kueri diaktifkan di gudang data ini.
QUERY_STORE { ON | NONAKTIF }
AKTIF
Mengaktifkan Penyimpanan Kueri.
TIDAK AKTIF
Menonaktifkan Penyimpanan Kueri. OFF adalah nilai default.
Catatan
Untuk Azure Synapse Analytics, Anda harus menjalankan ALTER DATABASE SET QUERY_STORE
dari database pengguna. Menjalankan pernyataan dari instans gudang data lain tidak didukung.
Catatan
Untuk Azure Synapse Analytics, Penyimpanan Kueri dapat diaktifkan seperti pada platform lain tetapi opsi konfigurasi tambahan tidak didukung.
<> result_set_caching_option ::=
Berlaku untuk: Azure Synapse Analytics
Mengontrol apakah hasil kueri di-cache dalam database.
RESULT_SET_CACHING { ON | NONAKTIF }
AKTIF
Menentukan bahwa kumpulan hasil kueri yang dikembalikan dari database ini akan di-cache dalam database.
TIDAK AKTIF
Menentukan bahwa kumpulan hasil kueri yang dikembalikan dari database ini tidak akan di-cache dalam database.
Perintah ini harus dijalankan saat tersambung ke master
database. Perubahan pada pengaturan database ini segera berlaku. Biaya penyimpanan dikeluarkan oleh penembolokan kumpulan hasil kueri. Setelah menonaktifkan penembolokan hasil untuk database, cache hasil yang sebelumnya dipertahankan akan segera dihapus dari penyimpanan Azure Synapse.
Jalankan perintah ini untuk memeriksa konfigurasi penembolokan kumpulan hasil database. Jika penembolokan tataan hasil diaktifkan, is_result_set_caching_on
akan mengembalikan 1.
SELECT name, is_result_set_caching_on FROM sys.databases
WHERE name = <'Your_Database_Name'>
Jalankan perintah ini untuk memeriksa apakah kueri dijalankan menggunakan hasil cache. Kolom result_cache_hit
mengembalikan 1 untuk tembolokan hit, 0 untuk cache miss, dan nilai negatif karena alasan mengapa penembolokan tataan hasil tidak digunakan. Periksa sys.dm_pdw_exec_requests untuk detailnya.
SELECT request_id, command, result_cache_hit FROM sys.dm_pdw_exec_requests
WHERE request_id = <'Your_Query_Request_ID'>
Catatan
Penembolokan set hasil tidak boleh digunakan bersama dengan DECRYPTBYKEY. Jika fungsi kriptografi ini harus digunakan, pastikan Anda menonaktifkan cache set hasil (baik di tingkat sesi atau tingkat basis data) pada saat eksekusi.
Penting
Operasi untuk membuat cache tataan hasil dan mengambil data dari cache terjadi pada simpul kontrol instans gudang data. Saat penembolokan tataan hasil diaktifkan, menjalankan kueri yang mengembalikan tataan hasil besar (misalnya, >1 juta baris) dapat menyebabkan penggunaan CPU yang tinggi pada simpul kontrol dan memperlambat respons kueri keseluruhan pada instans. Kueri tersebut biasanya digunakan selama eksplorasi data atau operasi ETL. Untuk menghindari penekanan pada simpul kontrol dan menyebabkan masalah performa, pengguna harus MENONAKTIFKAN penembolokan tataan hasil di database sebelum menjalankan jenis kueri tersebut.
Untuk detail tentang penyetelan performa dengan penembolokan tataan hasil, periksa Panduan penyetelan performa.
Izin
Untuk mengatur opsi RESULT_SET_CACHING, pengguna memerlukan login utama tingkat server (yang dibuat oleh proses provisi) atau menjadi anggota dbmanager
peran database.
<> snapshot_option ::=
Berlaku untuk: Azure Synapse Analytics
Mengontrol tingkat isolasi transaksi database.
READ_COMMITTED_SNAPSHOT { ON | NONAKTIF }
AKTIF
Mengaktifkan opsi READ_COMMITTED_SNAPSHOT di tingkat database.
TIDAK AKTIF
Nonaktifkan opsi READ_COMMITTED_SNAPSHOT di tingkat database.
Perintah ini harus dijalankan saat tersambung ke master
database. Mengaktifkan atau menonaktifkan READ_COMMITTED_SNAPSHOT untuk database pengguna akan mematikan semua koneksi terbuka ke database ini. Anda mungkin ingin membuat perubahan ini selama jendela pemeliharaan database atau menunggu sampai tidak ada koneksi aktif ke database kecuali untuk koneksi yang menjalankan perintah ALTER DATABASE. Database tidak harus dalam mode pengguna tunggal. Mengubah pengaturan READ_COMMITTED_SNAPSHOT pada tingkat sesi tidak didukung. Untuk memverifikasi pengaturan ini untuk database, periksa is_read_committed_snapshot_on
kolom di sys.databases
.
Dalam database dengan READ_COMMITTED_SNAPSHOT diaktifkan, kueri mungkin mengalami performa yang lebih lambat karena pemindaian versi jika beberapa versi data ada. Transaksi yang terbuka lama juga dapat menyebabkan peningkatan ukuran database. Masalah ini terjadi jika ada perubahan data oleh transaksi ini yang memblokir pembersihan versi.
Izin
Untuk mengatur opsi READ_COMMITTED_SNAPSHOT, pengguna memerlukan izin UBAH pada database.
Contoh
Memeriksa pengaturan statistik untuk database
SELECT name, is_auto_create_stats_on FROM sys.databases
Mengaktifkan penyimpanan kueri untuk database
ALTER DATABASE [database_name]
SET QUERY_STORE = ON;
Mengaktifkan penembolokan tataan hasil untuk database
-- Run this command when connecting to the MASTER database
ALTER DATABASE [database_name]
SET RESULT_SET_CACHING ON;
Memeriksa pengaturan penembolokan tataan hasil untuk database
SELECT name, is_result_set_caching_on
FROM sys.databases;
Mengaktifkan opsi Read_Committed_Snapshot untuk database
Jalankan perintah ini saat menyambungkan ke master
database.
ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON;
Lihat juga
Langkah berikutnya
Microsoft Fabric
Microsoft Fabric
Gunakan ALTER DATABASE ... SET
untuk mengelola Microsoft Fabric Warehouse.
Sintaks
-- Microsoft Fabric
ALTER DATABASE { warehouse_name | CURRENT }
SET
{
<option_spec> [ ,...n ]
}
<option_spec> ::=
{
<data_lake_log_publishing>
| <vorder>
}
;
<data_lake_log_publishing> ::=
{
DATA_LAKE_LOG_PUBLISHING { PAUSED | AUTO }
}
<vorder> ::=
{
VORDER = OFF
}
Keterangan
Saat ini, menjeda penerbitan log Delta Lake dan menonaktifkan perilaku V-Order di gudang adalah satu-satunya kegunaan untuk ALTER DATABASE ... SET
di Microsoft Fabric.
Izin
Pengguna harus menjadi anggota peran Admin, Anggota, atau Kontributor di ruang kerja Fabric.
Contoh
J. Menjeda penerbitan Delta Lake Logs
Perintah T-SQL berikut menjeda penerbitan Delta Lake Log dalam konteks gudang saat ini.
ALTER DATABASE CURRENT SET DATA_LAKE_LOG_PUBLISHING = PAUSED;
Untuk memeriksa status penerbitan Delta Lake Log saat ini di semua gudang, ruang kerja Anda, gunakan kode T-SQL berikut untuk mengkueri sys.databases (Transact-SQL) di jendela kueri baru:
SELECT [name], [DATA_LAKE_LOG_PUBLISHING_DESC] FROM sys.databases;