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

Fitur Klien Asli SQL Server
Properti dan Perilaku Set Baris