Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kontrol konkurensi mengacu pada berbagai teknik yang digunakan untuk mempertahankan integritas database ketika beberapa pengguna memperbarui baris secara bersamaan. Konkurensi yang tidak tepat dapat menyebabkan masalah seperti pembacaan kotor, pembacaan phantom, dan pembacaan yang tidak dapat diulang. Driver Microsoft JDBC untuk SQL Server menyediakan antarmuka untuk semua teknik konkurensi yang digunakan oleh SQL Server untuk mengatasi masalah ini.
Catatan
Untuk informasi selengkapnya tentang konkurensi SQL Server, lihat "Mengelola Akses Data Bersamaan".
Keterangan
Driver JDBC mendukung jenis konkurensi berikut:
| Jenis Konkurensi | Karakteristik | Kunci Baris | Deskripsi |
|---|---|---|---|
| CONCUR_READ_ONLY | Baca Saja | Tidak | Pembaruan melalui kursor tidak diizinkan, dan tidak ada penguncian yang diterapkan pada baris yang membentuk kumpulan hasil. |
| CONCUR_UPDATABLE | Baca/Tulis Optimistis | Tidak | Basis data mengasumsikan perebutan akses pada baris kemungkinannya kecil, tetapi tetap mungkin terjadi. Integritas baris diperiksa dengan perbandingan tanda waktu. |
| CONCUR_SS_SCROLL_LOCKS | Baca Tulis Pesimistis | Ya | Basis data menganggap kontensi baris mungkin terjadi. Integritas baris dijaga melalui penguncian baris. |
| CONCUR_SS_OPTIMISTIC_CC | Baca/Tulis Optimistis | Tidak | Basis data mengasumsikan bahwa konflik pada baris kecil kemungkinannya, tetapi tetap mungkin. Integritas baris diverifikasi dengan perbandingan tanda waktu. Untuk SQL Server 2005 (9.x) dan yang lebih baru, server akan mengubahnya menjadi CONCUR_SS_OPTIMISTIC_CCVAL jika tabel tidak berisi kolom tanda waktu. Untuk SQL Server 2000 (8.x), jika tabel yang mendasarinya memiliki kolom timestamp, OPTIMISTIC WITH ROW VERSIONING digunakan bahkan jika OPTIMISTIC WITH VALUES ditetapkan. Jika OPTIMISTIC WITH ROW VERSIONING ditetapkan dan tabel tidak memiliki stempel waktu, OPTIMISTIC WITH VALUES digunakan. |
| CONCUR_SS_OPTIMISTIC_CCVAL | Baca/Tulis Optimistis | Tidak | Database mengasumsikan bahwa kontensi pada baris kecil kemungkinannya, tetapi tetap mungkin. Integritas baris diperiksa dengan perbandingan data baris. |
Tataan hasil yang tidak dapat diperbarui
Kumpulan hasil yang dapat diperbarui adalah tataan hasil di mana baris dapat disisipkan, diperbarui, dan dihapus. Dalam kasus berikut, SQL Server tidak dapat membuat kursor yang dapat diperbarui. Pengecualian yang dihasilkan adalah, "Tataan hasil tidak dapat diperbarui."
| Penyebab | Deskripsi | Obat |
|---|---|---|
| Pernyataan tidak dibuat dengan menggunakan sintaks JDBC 2.0 (atau yang lebih baru) | JDBC 2.0 memperkenalkan metode baru untuk membuat pernyataan. Jika sintaks JDBC 1.0 digunakan, result set secara default bersifat baca-saja. | Tentukan jenis kumpulan hasil dan tingkat konkurensi saat membuat statement. |
| Pernyataan dibuat dengan menggunakan TYPE_SCROLL_INSENSITIVE | SQL Server membuat kursor rekam jepret statis. Ini terputus dari baris tabel yang mendasarinya untuk membantu melindungi kursor dari perubahan pada baris yang dilakukan oleh pengguna lain. | Gunakan TYPE_SCROLL_SENSITIVE, TYPE_SS_SCROLL_KEYSET, TYPE_SS_SCROLL_DYNAMIC, atau TYPE_FORWARD_ONLY dengan CONCUR_UPDATABLE untuk menghindari pembuatan kursor statis. |
| Desain tabel menghalangi kursor KEYSET atau DYNAMIC | Tabel yang mendasar tidak memiliki kunci unik untuk mengaktifkan SQL Server untuk mengidentifikasi baris secara unik. | Tambahkan kunci unik ke tabel untuk memberikan identifikasi unik setiap baris. |