Bekerja dengan Isolasi Rekam Jepret di SQL Server Native Client
Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Penting
SQL Server Native Client (SNAC) tidak dikirim dengan:
- SQL Server 2022 (16.x) dan versi yang lebih baru
- SQL Server Management Studio 19 dan versi yang lebih baru
SQL Server Native Client (SQLNCLI atau SQLNCLI11) dan Penyedia Microsoft OLE DB warisan untuk SQL Server (SQLOLEDB) tidak direkomendasikan untuk pengembangan aplikasi baru.
Untuk proyek baru, gunakan salah satu driver berikut:
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.