Pola dasar: Hotfix generik
BUG #: 185563 (pemeliharaan konten) VSTS: 1240830
Perbaikan Microsoft SQL Server 2012 Paket Layanan 1 (SP1) yang dirilis sebagai satu berkas yang dapat diunduh. Karena perbaikan bersifat kumulatif, setiap Edaran baru berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan sebelumnya SQL Server 2012 SP1 edaran perbaikan.
Pendahuluan
Pemutakhiran ini memperkenalkan peningkatan pialang layanan SQL Server 2012 dan SQL Server 2014. Sebelum Anda menerapkan pembaruan ini, maksimum jumlah untaian yang menggunakan layanan perantara untuk mengirim pesan ke server jauh adalah jumlah CPU yang menjalankan layanan perantara ganda. Saat banyak server jauh dimatikan, untaian yang mengirim pesan ke server jauh menunggu waktu habis Winsock. Oleh karena itu, pengiriman pesan ke server jauh yang online tertunda saat maksimum jumlah untaian menunggu tercapai.
Pemecahan masalah
Setelah Anda menerapkan pembaruan ini, Anda juga perlu menghubungi dukungan Microsoft untuk membuat beberapa pengaturan khusus.
Sebelum pembaruan ini, SQL Server hanya membuat dua untaian per CPU fisik untuk menangani layanan Broker tugas. Pelacakan tiga berikut ini flags ditambahkan ke SQL Server 2012 kumulatif pemutakhiran 4 untuk SQL Server 2012 SP1. Hanya terakhir bendera pelacakan 8428 didukung di SQL Server 2014:
-
Bendera pelacakan 8426 - maksimum jumlah untaian akan jumlah CPU fisik dikalikan 8.
-
Bendera pelacakan 8427 - maksimum jumlah untaian akan jumlah CPU fisik dikalikan 16.
-
Bendera pelacakan 8428 - maksimum jumlah untaian akan jumlah CPU fisik dikalikan 32.
Catatan Bendera pelacakan ini harus dikonfigurasi sebagai parameter permulaan dan memerlukan restart SQL Server diterapkan.
Informasi pembaruan kumulatif
Masalah pertama kali diperbaiki dalam pemutakhiran kumulatif berikut SQL Server:
Rekomendasi: Menginstal pembaruan kumulatif terbaru untuk SQL Server
Setiap pembaruan kumulatif yang baru untuk SQL Server berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan pembaruan kumulatif sebelumnya. Kami sarankan Anda men-download dan menginstal pembaruan kumulatif terbaru untuk SQL Server:
Informasi lebih lanjut
Pelanggan skenario 1
Pelanggan memiliki aplikasi yang berjalan lama SQL Server layanan perantara (SSB) yang memiliki satu inisiator dan 1100 + target. Pelanggan di Afrika Selatan dan daya perusahaan yang melakukan pemadaman bergulir hampir setiap minggu. Jadi selalu ada beberapa target yang sedang dimatikan dan tidak dapat berkomunikasi. Sekitar 30-40 turun setiap saat. Ketika pemadaman menjadi tersebar dan di tempat di sekitar 100 + target turun, maka semua SSB pesan berhenti mengalir ke salah satu target.
Masalah menyelesaikan sendiri sebagai target yang cukup datang kembali online. Namun, yang dapat beberapa hari nanti.
Beberapa data awal menunjukkan sekarang SSB Profiler peristiwa terjadi selama waktu yang lama kecuali Perantara: sambungan.
ON INITIATOR PROFILER TRACE
===================================
Only Broker:Connection events, no other Broker activity.
Count Name SubClass_Name subclass_value
------- ----------------------- ----------------------- --------------
335942 Broker:Connection Accept 6
335942 Broker:Connection Connected 2
335942 Broker:Connection Connecting 1
335942 Broker:Connection Receive IO Error 8
335942 Broker:Connection Closed 5
335942 Broker:Connection Closing 4
335942 Broker:Connection Connect Failed 3
335942 Broker:Connection Send IO Error 7
Reviewed ***sys.dm_broker_connections***
1907 Rows
All rows with state_desc = CONNECTED, have a login_state_desc = WAIT LOGIN NEGOTIATE
All rows with state_desc = CONNECTING, have a login_state_desc = INITIAL
Count state_desc login_state_desc
563 CONNECTING INITIAL
1345 CONNECTED WAIT LOGIN NEGOTIATE
sys.transmission_queue
As many as 513 Transmissions with the following errors:
Connection attempt failed with error: '10060(A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.)'.
Connection attempt failed with error: '10061(No connection could be made because the target machine actively refused it.)'.
Connection_Endpoint State Counts
GroupCnt state_desc
----------- ------------------------------------------------------------
2571 CONVERSING
1 ERROR
Pelanggan skenario 2
Pelanggan memiliki inisiator di Moskow. Mereka memiliki 500 target di Moskow dan 3000 + target seluruh Rusia. Antara pukul 9 dan 7 pada mereka mematikan listrik, router, dan komputer untuk 3000 + target. Inisiator masih mencoba mengirim pesan ke target 500 yang cadangan dan pesan ke beberapa 3000 target yang sedang offline.
Pialang layanan menit setiap akan mencoba mengirim pesan dari sys.transmission_queue karena kami tidak menerima ACK dari target luring. Ketika kita memanggil WSPConnect, kita buka pencegahan dan menempati alur kerja setelah 20 detik. Pada komputer pelanggan ini membatasi ini untuk 32 untaian karena mereka memiliki inti lebih banyak daripada yang Anda. Sys.sysprocesses Anda dapat melihat sesi ini dengan waittype sebagai PREMPTIVE_WSASETLASTERROR. Apabila kita mencapai batas 32 ini juga penundaan mengirim pesan ke target 500 yang cadangan.
Contoh Stack Dump
Dalam skenario kedua, tumpukan ikuti diamati pada semua SSB tugas pegangan.
Ada 16 untaian dalam memori ini sama:
16 threads [stats]: 42 44 46 47 52 56 58 59 60 61 ... 000000007731135a ntdll!ZwWaitForSingleObject+0xa (e:\obj.amd64fre\minkernel\ntdll\daytona\objfre\amd64\usrstubs.asm @ 180)
000007fefca41e35 mswsock!SockWaitForSingleObject+0xe145
000007fefca411b9 mswsock!SockDoConnectReal+0xb329
000007fefca35e30 mswsock!SockDoConnect+0x32f (d:\w7rtm\minio\sockets\winsock2\wsp\mswsock\msafdlib\connect.c @ 1710)
000007fefca35bca mswsock!WSPConnect+0x2a (d:\w7rtm\minio\sockets\winsock2\wsp\mswsock\msafdlib\connect.c @ 222)
000007fefdb2466c ws2_32!connect+0xac (d:\w7rtm\minio\sockets\winsock2\ws2_32\src\sockctrl.cpp @ 198)
000000000245d1b5 sqlservr!Tcp::SocketOpenSync+0x5c9 (e:\sql10_main_t\sql\ntdbms\sni\src\tcp.cpp @ 3944)
000000000245d777 sqlservr!Tcp::Open+0x47b (e:\sql10_main_t\sql\ntdbms\sni\src\tcp.cpp @ 4097)
00000000024438c3 sqlservr!SNIOpenSync+0x623 (e:\sql10_main_t\sql\ntdbms\sni\src\sni.cpp @ 2523)
000000000138d84e sqlservr!CConnectionEndpoint::AsyncConnect+0xc52 (e:\sql10_main_t\sql\ntdbms\broker\src\ssbconendpointopen.cpp @ 828)
000000000138bb55 sqlservr!CEndPointConnectTask::IdempotentInvoke+0x15 (e:\sql10_main_t\sql\ntdbms\broker\src\ssbconendpointopen.cpp @ 69)
00000000014418cf sqlservr!CSbTaskManager::HandleReusableTask+0x247 (e:\sql10_main_t\sql\ntdbms\broker\src\ssbtask.cpp @ 1337)
000000000144089a sqlservr!CSbTask::TaskStart+0x412 (e:\sql10_main_t\sql\ntdbms\broker\src\ssbtask.cpp @ 686)
0000000001440442 sqlservr!CSbTask::BeginTaskStart+0x1a (e:\sql10_main_t\sql\ntdbms\broker\src\ssbtask.cpp @ 564)
000000000079b450 sqlservr!SOS_Task::Param::Execute+0x12a (e:\sql10_main_t\sql\common\dk\sos\include\sos.inl @ 10347)
000000000079b116 sqlservr!SOS_Scheduler::RunTask+0x96 (e:\sql10_main_t\sql\common\dk\sos\src\scheduler.cpp @ 919)
000000000079af5b sqlservr!SOS_Scheduler::ProcessTasks+0x128 (e:\sql10_main_t\sql\common\dk\sos\src\scheduler.cpp @ 800)
00000000008d44fa sqlservr!SchedulerManager::WorkerEntryPoint+0x2d2 (e:\sql10_main_t\sql\common\dk\sos\src\node.cpp @ 1801)
00000000008d47dd sqlservr!SystemThread::RunWorker+0xcc (e:\sql10_main_t\sql\common\dk\sos\include\worker.inl @ 789)
0000000000d1c0cd sqlservr!SystemThreadDispatcher::ProcessWorker+0x2db (e:\sql10_main_t\sql\common\dk\sos\src\node.cpp @ 449)
00000000008d53d2 sqlservr!SchedulerManager::ThreadEntryPoint+0x173 (e:\sql10_main_t\sql\common\dk\sos\src\node.cpp @ 1999)
00000000738137d7 msvcr80!_callthreadstartex+0x17 (f:\dd\vctools\crt_bld\self_64_amd64\crt\src\threadex.c @ 348)
0000000073813894 msvcr80!_threadstartex+0x84 (f:\dd\vctools\crt_bld\self_64_amd64\crt\src\threadex.c @ 326)
00000000770b652d kernel32!BaseThreadInitThunk+0xd (d:\win7sp1_gdr\base\win32\client\thread.c @ 65)
00000000772ec521 ntdll!RtlUserThreadStart+0x1d (d:\win7sp1_gdr\minkernel\ntos\rtl\rtlexec.c @ 3185)
Status
Microsoft telah memastikan bahwa ini merupakan masalah di dalam produk Microsoft sebagaimana tercantum di bagian "Berlaku untuk".
Referensi
Untuk informasi selengkapnya tentang Model pelayanan inkremental untuk SQL Server, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
935897 Model pelayanan inkremental tersedia dari tim SQL Server untuk memberikan hotfix untuk masalah yang dilaporkanUntuk informasi selengkapnya tentang skema penamaan untuk pemutakhiran SQL Server, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
Paket pemutakhiran 822499 memberi nama skema untuk perangkat lunak Microsoft SQL ServerUntuk informasi selengkapnya tentang terminologi pemutakhiran piranti lunak, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
824684 Deskripsi tentang terminologi standar yang digunakan untuk menjelaskan pembaruan perangkat lunak Microsoft
Penulis: wcarroll; jannaw
Penulis: v-fismao
Pemeriksa teknis: wcarroll; vinodmr; chwilkin; lvargas; jannaw; sqlprev
Editor: v-johnga