Properti Max_Queue_Readers diabaikan saat Anda mencoba untuk membatasi aktivasi tugas di pialang Layanan

PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.

Klik disini untuk melihat versi Inggris dari artikel ini: 3163368
Gejala
Pertimbangkan skenario berikut ini:
  • Anda menggunakan layanan Broker di Microsoft SQL Server 2014 atau Microsoft SQL Server 2012.
  • Anda menetapkan pialang layanan untuk eksekusi asinkron disimpan prosedur.
  • Anda menetapkan properti Max_Queue_Readers ke nilai khusus untuk antrian pialang layanan untuk membatasi berapa banyak contoh aktivasi disimpan prosedur yang dijalankan pada waktu yang sama
Dalam skenario ini, Anda melihat bahwa lebih diaktifkan tugas menjalankan daripada nilai yang ditetapkan untukMax_Queue_Readers.
Penyebab
Masalah ini dapat terjadi jika database pialang Layanan beralih dari satu pengguna mode (RESTRICTED_USER) ke mode multi-pengguna (MULTI_USER) dengan menjalankan berikut ini:

alter database <dbname> set multi_user
Apabila mode pengguna diubah pada database, pialang Layanan mati dan restart. Selama proses ini, objek QueueMonitor ada terputus, dan item lainnya objek QueueMonitor dibuat. Jika proses aktivasi menjalankan operasi yang lama saat pialang Layanan sedang dimatikan, status objek QueueMonitor berubah menjadi "terputus."

Namun, ada QueueMonitor objek item tidak dihapus karena jumlah referensi yang belum mencapai nol. Jika prosedur aktivasi masih berjalan ketika pialang Layanan dimulai ulang, misalnya baru QueueMonitor objek dan objek QueueMonitor terputus akan berdampingan di antrian yang sama. Contoh objek QueueMonitor terputus akan dihapus di lain kali pialang Layanan dimulai.
Teknik pemecahan masalah
Untuk mengatasi masalah ini, pastikan bahwa Anda menjalankan "mengubah pangkalan data [dbname] set multi_user" ketika diaktifkan prosedur sedang berjalan. Untuk melakukannya, gunakan salah satu dari metode berikut ini:

  • Sebelum Anda mengubah mode pengguna, Nonaktifkan semua antrian di pangkalan data, dan mengaktifkan kembali semua antrian.
  • Sebelum Anda mengubah mode pengguna, Nonaktifkan aktivasi prosedur untuk semua antrian terpengaruh dengan menjalankan perintah berikut, dan mengaktifkan kembali prosedur aktivasi:

    alter queue <queueName> with activation ( status = off)
Informasi lebih lanjut
Anda dapat memeriksa jumlah aktivasi prosedur yang digunakan untuk antrian tertentu dengan menjalankan kueri terhadap "sys.dm_broker_activated_tasks" sebagai berikut:

select * from sys.dm_broker_activated_tasks where queue_id = <queue number>
Anda dapat meminta status antrian monitor dengan menjalankan kueri berikut ini:

Select * from sys.dm_broker_queue_monitors where queue_id = <queue number>
Status antrian monitor ditampilkan sebagai "dibuang" jika mode pengguna database diubah.

Properti

ID Artikel: 3163368 - Tinjauan Terakhir: 05/19/2016 18:20:00 - Revisi: 1.0

Microsoft SQL Server 2016 Developer, Microsoft SQL Server 2016 Enterprise, Microsoft SQL Server 2016 Standard, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Enterprise Core, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Workgroup

  • kbprb kbsurveynew kbexpertiseadvanced kbmt KB3163368 KbMtid
Tanggapan