Gejala

Misalnya Anda membuat grup ketersediaan dengan menggunakan klausa WITH DTC_SUPPORT = PER_DB di Microsoft SQL Server. Ketika Anda mencoba menjalankan pernyataan Simpan transaksi dalam prosedur transaksi atau sistem yang disimpan seperti sp_executesql,Anda menerima salah satu pesan kesalahan berikut:

MSG 627, tingkat 16, status 0, baris Linenumber Tidak dapat menggunakan Simpan transaksi dalam transaksi terdistribusi. MSG 12324, tingkat 16, 100 negara, baris Linenumber Didistribusikan transaksi (DTC) tidak didukung dengan memori dioptimalkan tabel. Kesalahan: 3933, tingkat keparahan: 16, status: 1. Tidak dapat mempromosikan transaksi ke transaksi terdistribusi karena ada titik Simpan aktif dalam transaksi ini.

Penyebab

Saat database di grup ketersediaan selalu diaktifkan untuk dengan DTC_SUPPORT = PER_DB, selama transaksi melibatkan beberapa database, transaksi dipromosikan ke transaksi msdtc di SQL Server 2016 SP2 dan SQL Server 2017. Ada keterbatasan dalam transaksi MSDTC, misalnya menyimpan poin tidak bisa digunakan, memori dioptimalkan tabel tidak bisa digunakan.

Dalam beberapa situasi lintas transaksi terjadi bukan karena pengguna memiliki transaksi yang melibatkan dua database pengguna, namun karena transaksi melibatkan database sistem dan database saat ini (Master, Code, model, database sumber daya sistem). Karena database sumber daya sistem sebenarnya bersifat baca saja, tidak perlu untuk mempromosikan ke transaksi MSDTC jika transaksi database silang melibatkan database sumber daya sistem tetapi tidak database sistem lainnya.

Pemecahan Masalah

Perbaikan yang diperkenalkan dalam KB ini melompati promosi ke transaksi MSDTC jika database sumber daya sistem dan database pengguna yang merupakan bagian dari grup ketersediaan diaktifkan untuk PER_DB DTC yang terlibat dalam transaksi lintas database dalam contoh SQL Server yang sama.

Oleh karena itu, jika penyebab asli kesalahan yang tercantum di atas adalah transaksi lintas database yang melibatkan database sumber daya sistem, perbaikan ini akan mengatasinya. Terkadang pengguna mungkin melihat kesalahan yang tercantum di atas dengan penyebab mendasar yang sama. Berikut ini mencantumkan kondisi di bawah perbaikan ini berlaku:

  • Database adalah bagian dari grup selalu aktif yang diaktifkan dengan DTC_SUPPORT = PER_DB.

  • Transaksi lintas database melibatkan database ini dan database sumber daya sistem dalam contoh SQL Server yang sama.

  • Di dalam transaksi database silang, Simpan transaksi digunakan, atau tabel yang dioptimalkan memori yang terlibat.

Transaksi tersebut akan gagal dengan kesalahan yang tercantum di atas tanpa perbaikan ini. Dengan perbaikan ini, transaksi tersebut harus dilanjutkan.

Catatan: perbaikan ini membahas tentang transaksi lintas-database yang melibatkan database sumber daya sistem, tetapi setiap transaksi silang yang melibatkan database pengguna dan berisi pernyataan Simpan transaksi masih gagal dan harus ditulis ulang.

Masalah ini telah diperbaiki dalam pembaruan kumulatif berikut ini untuk SQL Server:

Pembaruan kumulatif 7 untuk SQL Server 2017       

Pembaruan kumulatif 1 untuk SQL Server 2016 SP2

Setiap pembaruan kumulatif baru untuk SQL Server berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan pembaruan kumulatif sebelumnya. Lihat pembaruan kumulatif terbaru untuk SQL Server:

Pembaruan kumulatif terbaru untuk SQL Server 2017

Pembaruan kumulatif terbaru untuk SQL Server 2016

Informasi Selengkapnya

Informasi tambahan tentang DTC_SUPPORT = PER_DB, memori dioptimalkan tabel, Simpan transaksi dapat ditemukan di tautan berikut ini.

Transaksi database dalam contoh SQL Server yang sama menautkan bagian ini ketabel https://docs.Microsoft.com/en-US/SQL/Database-Engine/availability-Groups/Windows/transactions-always-on-availability-and-database-mirroring?View=SQL-Server-2017#sql-server-2016-sp1-and-before-support-for-cross-database-transactions-within-the-same-sql-server-instanceyangdioptimalkan memoritautkan bagian ini ke https://docs.Microsoft.com/en-US/SQL/relational-databases/In-Memory-OLTP/transactions-with-Memory-Optimized-Tables?View=SQL-Server-2017#limitationsmenyimpan transaksi tautkan bagian ini ke https://docs.Microsoft.com/en-US/SQL/t-SQL/Language-Elements/Save-Transaction-Transact-SQL?View=SQL-Server-2017#remarks

https://docs.microsoft.com/sql/database-engine/availability-groups/windows/configure-replication-for-always-on-availability-groups-sql-server?view=sql-server-2017#step2

Status

Microsoft telah mengonfirmasi bahwa ini adalah masalah pada produk Microsoft yang tercantum di bagian "Berlaku untuk".

Referensi

Pelajari tentang terminologi yang digunakan oleh Microsoft untuk menjelaskan pembaruan perangkat lunak.

Perlu bantuan lainnya?

Kembangkan keterampilan Anda
Jelajahi pelatihan
Dapatkan fitur baru terlebih dahulu
Gabung Microsoft Insider

Apakah informasi ini bermanfaat?

Seberapa puaskah Anda dengan kualitas bahasanya?
Apa yang memengaruhi pengalaman Anda?

Terima kasih atas umpan balik Anda!

×