Bekerja dengan Isolasi Rekam Jepret di SQL Server Native Client
Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)
Penting
SQL Server Native Client (sering disingkat SNAC) telah dihapus dari SQL Server 2022 (16.x) dan SQL Server Management Studio 19 (SSMS). SQL Server Native Client (SQLNCLI atau SQLNCLI11) dan Penyedia Microsoft OLE DB warisan untuk SQL Server (SQLOLEDB) tidak direkomendasikan untuk pengembangan aplikasi baru. Beralih ke Microsoft OLE DB Driver (MSOLEDBSQL) baru untuk SQL Server atau Microsoft ODBC Driver terbaru untuk SQL Server ke depannya. Untuk SQLNCLI yang dikirim sebagai komponen SQL Server Database Engine (versi 2012 hingga 2019), lihat pengecualian Siklus Hidup Dukungan ini.
SQL Server 2005 (9.x) memperkenalkan tingkat isolasi "rekam jepret" baru yang dimaksudkan untuk meningkatkan konkurensi untuk aplikasi pemrosesan transaksi online (OLTP). Dalam versi SQL Server sebelumnya, konkurensi hanya didasarkan pada penguncian, yang dapat menyebabkan masalah pemblokiran dan kebuntuan untuk beberapa aplikasi. Isolasi rekam jepret tergantung pada peningkatan penerapan versi baris dan dimaksudkan untuk meningkatkan performa dengan menghindari skenario pemblokiran pembaca-penulis.
Transaksi yang dimulai di bawah isolasi rekam jepret membaca rekam jepret database pada saat transaksi dimulai. Salah satu hasilnya adalah bahwa keyset, kursor server dinamis dan statis, ketika dibuka dalam konteks transaksi rekam jepret, bertingkah seperti kursor statis yang dibuka dalam transaksi yang dapat diserialisasikan. Namun, ketika kursor dibuka di bawah kunci tingkat isolasi rekam jepret tidak diambil, yang dapat mengurangi pemblokiran di server.
Penyedia OLE DB Klien Asli SQL Server
Penyedia SQL Server Native Client OLE DB memiliki peningkatan yang memanfaatkan isolasi rekam jepret yang diperkenalkan di SQL Server 2005 (9.x). Penyempurnaan ini mencakup perubahan pada kumpulan properti DBPROPSET_DATASOURCEINFO dan DBPROPSET_SESSION.
DBPROPSET_DATASOURCEINFO
Kumpulan properti DBPROPSET_DATASOURCEINFO telah diubah untuk menunjukkan bahwa tingkat isolasi rekam jepret didukung oleh penambahan nilai DBPROPVAL_TI_SNAPSHOT yang digunakan dalam properti DBPROP_SUPPORTEDTXNISOLEVELS. Nilai baru ini menunjukkan bahwa tingkat isolasi rekam jepret didukung apakah penerapan versi telah diaktifkan atau tidak pada database. Berikut ini adalah daftar nilai DBPROP_SUPPORTEDTXNISOLEVELS:
ID Properti | Deskripsi |
---|---|
DBPROP_SUPPORTEDTXNISOLEVELS | Jenis: VT_I4 R/W: Baca saja Deskripsi: Bitmask yang menentukan tingkat isolasi transaksi yang didukung. Kombinasi nol atau lebih dari berikut ini: DBPROPVAL_TI_CHAOS DBPROPVAL_TI_READUNCOMMITTED DBPROPVAL_TI_BROWSE DBPROPVAL_TI_CURSORSTABILITY DBPROPVAL_TI_READCOMMITTED DBPROPVAL_TI_REPEATABLEREAD DBPROPVAL_TI_SERIALIZABLE DBPROPVAL_TI_ISOLATED DBPROPVAL_TI_SNAPSHOT |
DBPROPSET_SESSION
Kumpulan properti DBPROPSET_SESSION telah diubah untuk menunjukkan bahwa tingkat isolasi rekam jepret didukung oleh penambahan nilai DBPROPVAL_TI_SNAPSHOT yang digunakan dalam properti DBPROP_SESS_AUTOCOMMITISOLEVELS. Nilai baru ini menunjukkan bahwa tingkat isolasi rekam jepret didukung apakah penerapan versi telah diaktifkan atau tidak pada database. Berikut ini adalah daftar nilai DBPROP_SESS_AUTOCOMMITISOLEVELS:
ID Properti | Deskripsi |
---|---|
DBPROP_SESS_AUTOCOMMITISOLEVELS | Jenis: VT_I4 R/W: Baca saja Deskripsi: Menentukan bitmask yang menunjukkan tingkat isolasi transaksi saat dalam mode penerapan otomatis. Nilai yang dapat diatur dalam bitmask ini sama dengan nilai yang dapat diatur untuk DBPROP_SUPPORTEDTXNISOLEVELS. |
Catatan
Kesalahan DB_S_ERRORSOCCURRED atau DB_E_ERRORSOCCURRED akan terjadi jika DBPROPVAL_TI_SNAPSHOT diatur saat menggunakan versi SQL Server yang lebih lama dari SQL Server 2005 (9.x).
Untuk informasi tentang bagaimana isolasi rekam jepret didukung dalam transaksi, lihat Mendukung Transaksi Lokal.
Driver ODBC Klien Asli SQL Server
Driver ODBC SQL Server Native Client menyediakan dukungan untuk isolasi rekam jepret meskipun penyempurnaan yang dilakukan pada fungsi SQLSetConnectAttr dan SQLGetInfo .
SQLSetConnectAttr
Fungsi SQLSetConnectAttr sekarang mendukung penggunaan atribut SQL_COPT_SS_TXN_ISOLATION. Mengatur SQL_COPT_SS_TXN_ISOLATION ke SQL_TXN_SS_SNAPSHOT menunjukkan bahwa transaksi akan terjadi di bawah tingkat isolasi rekam jepret.
SQLGetInfo
Fungsi SQLGetInfo sekarang mendukung nilai SQL_TXN_SS_SNAPSHOT yang telah ditambahkan ke jenis info SQL_TXN_ISOLATION_OPTION.
Untuk informasi tentang bagaimana isolasi rekam jepret didukung dalam transaksi, lihat Tingkat Isolasi Transaksi Kursor.
Lihat Juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk