Bagikan melalui


MSSQLSERVER_35267

Berlaku untuk: SQL Server

Detail

Atribut Nilai
Nama Produk SQL Server
ID Peristiwa 35267
Sumber Kejadian MSSQLSERVER
Komponen SQLEngine
Nama Simbolis HADR_DISCONNECTED_DB
Teks Pesan Koneksi Grup Ketersediaan AlwaysOn dengan database %S_MSG dihentikan untuk %S_MSG database '%.*ls' pada replika ketersediaan '%.*ls' dengan ID Replika: {%.8x-%.4x-%.4x-%.2x%.2x-%.2x%.2x%.2x%.2x%.2x%.2x}. Ini hanya pesan informasi. Tidak diperlukan tindakan pengguna.

Penjelasan

Pesan ini terjadi ketika replika grup ketersediaan kehilangan koneksinya ke replika jarak jauh pada titik akhir pencerminan database. Berikut adalah contoh bagaimana Anda dapat melihat kesalahan ini:

Always On Availability Groups connection with secondary database terminated for primary database 'ContosoDb' on the availability replica 'PRODSQL' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
Always On Availability Groups connection with primary database terminated for secondary database 'ContosoDb' on the availability replica 'PRODSQL' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.

Seperti yang Anda lihat kesalahan dapat muncul pada replika Utama yang menunjukkan bahwa ia kehilangan komunikasi dengan replika Sekunder, atau sebaliknya.

Kesalahan 35267 biasanya terputus-putus dan dapat menyelesaikan sendiri saat penyebab yang mendasar menyelesaikannya sendiri. Misalnya, masalah jaringan terputus-terputus mungkin menyelesaikan dirinya sendiri dan koneksi mungkin membangun kembali dirinya sendiri.

Dalam banyak kasus, simpul jarak jauh yang coba disambungkan oleh simpul lokal mungkin bahkan tidak menyadari kegagalan koneksi. Oleh karena itu, Anda mungkin hanya melihat kesalahan ini muncul di salah satu replika, bukan keduanya.

Kesalahan 35267 terkadang dapat terjadi bersama dengan kesalahan 35206, yang dimunculkan ketika periode signifikan telah berlalu tanpa koneksi yang berhasil (misalnya, lebih dari 10 detik).

A connection timeout has occurred on a previously established connection to availability replica 'PRODSQL' with id [xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx].  Either a networking or a firewall issue exists or the availability replica has transitioned to the resolving role.

Always On Availability Groups connection with primary database terminated for secondary database 'ContosoHRDb' on the availability replica 'PRODSQL' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
Always On Availability Groups connection with primary database terminated for secondary database 'ContosoFinDb' on the availability replica 'PRODSQL' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
Always On Availability Groups connection with primary database terminated for secondary database 'ContosoMktngDb' on the availability replica 'PRODSQL' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.

Penghentian koneksi AG dengan replika jarak jauh dapat menyebabkan berbagai masalah replika lokal. Misalnya, jika AG menggunakan mode SYNCHRONOUS dan koneksi hilang, replika lokal mungkin akhirnya menunggu konfirmasi dari jarak jauh. Akibatnya, log transaksi tidak terpotong dan log transaksi kehabisan ruang (kesalahan MSSQLSERVER_9002) dan kemudian menjadi tidak tersedia (kesalahan MSSQLSERVER_9001). Berikut adalah contoh grup kesalahan tempat ini terjadi. Alasan log transaksi penuh adalah 'AVAILABILITY_REPLICA', yang berarti replika ini menunggu replika jarak jauh untuk mengakui rekaman log yang diterapkan.

Error: 9002, Severity: 17, State: 9.
The transaction log for database 'ContosoAnalyticsDb' is full due to 'AVAILABILITY_REPLICA'.
Error: 3314, Severity: 21, State: 3.
During undoing of a logged operation in database 'ContosoAnalyticsDb' (page (1:32573799) if any), an error occurred at log record ID (7672713:36228:159). Typically, the specific failure is logged previously as an error in the operating system error log. Restore the database or file from a backup, or repair the database.
State information for database 'ContosoAnalyticsDb' - Hardened Lsn: '(7672713:38265:1)'    Commit LSN: '(7672712:1683087:46)'    Commit Time: 'JuN  10 2022  5:51AM'

Always On Availability Groups connection with secondary database terminated for primary database 'ContosoAnalyticsDb' on the availability replica 'SQL2019DB' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.

Database ContosoAnalyticsDb was shutdown due to error 3314 in routine 'XdesRMReadWrite::RollbackToLsn'. Restart for non-snapshot databases will be attempted after all connections to the database are aborted.

Error during rollback. shutting down database (location: 1).
Error: 9001, Severity: 21, State: 5.
The log for database 'ContosoAnalyticsDb' is not available. Check the operating system error log for related error messages. Resolve any errors and restart the database.

Recovery of database 'ContosoAnalyticsDb' (6) is 0% complete (approximately 60177 seconds remain). Phase 2 of 3. This is an informational message only. No user action is required.

Penyebab

  • Masalah koneksi jaringan dapat terjadi antara replika utama dan sekunder
  • Masalah SQL Server atau OS pada replika utama atau sekunder yang menyebabkan utas tidak dapat dijalankan. Contohnya meliputi:
    • Masalah Penjadwal OS SQL (penjadwal yang tidak menghasilkan atau kebuntuan)
    • Memori rendah pada komputer yang mengarah ke Pemangkasan set kerja dari semua proses pada sistem termasuk SQL Server
    • Masalah sistem operasi menyebabkan proses berhenti merespons
  • Masalah I/O lambat yang menyebabkan penantian panjang terputus-terputus pada replika primer atau sekunder

Tindakan pengguna

Informasi di bawah ini menguraikan skenario yang lebih umum tetapi bukan daftar lengkap langkah-langkah pemecahan masalah. Alasan khusus untuk terjadinya masalah ini dapat mencakup daftar panjang kemungkinan.

Masalah koneksi

Untuk memeriksa masalah koneksi dari SQL Server tempat kesalahan dinaikkan ke SQL Server jarak jauh, Anda dapat mempertimbangkan langkah-langkah berikut:

Langkah 1. Pastikan titik akhir pada SQL Server jarak jauh aktif

Jalankan kueri berikut untuk menemukan titik akhir

SELECT
 tep.name as EndPointName,
 sp.name As CreatedBy,
 tep.type_desc,
 tep.state_desc,
 tep.port
FROM
 sys.tcp_endpoints tep
INNER JOIN sys.server_principals sp ON tep.principal_id = sp.principal_id
WHERE tep.type = 4

Langkah 2. Menguji konektivitas ke titik akhir jarak jauh

Gunakan Test-NetConnection untuk memvalidasi konektivitas. Jika Titik Akhir mendengarkan dan koneksi berhasil, cari TcpTestSucceeded : True. Ganti ServerName atau IP_Address dengan SQL Server jarak jauh dan nomor port dengan titik akhir pencerminan database.

Test-NetConnection -ComputerName <ServerName> -Port <port_number>
Test-NetConnection -ComputerName <IP_address> -Port <port_number>

Langkah 3. Mengumpulkan jejak jaringan

Kesalahan jaringan terputus-terputus seringkali sulit dilacak kecuali Anda menangkap jejak jaringan, yang menunjukkan reset jaringan (paket yang dihilangkan) atau masalah serupa. Untuk informasi selengkapnya, lihat Masalah Jaringan Terputus-putus atau Berkala 0300

Masalah penjadwal SQL Server

Jika utas pekerja SQL Server mengalami masalah penjadwal karena berbagai alasan, maka utas yang permintaan masuk layanan dapat berhenti merespons sementara saat masalah penjadwal berlangsung.

Langkah 4. Periksa masalah penjadwal di SQL Server

Masalah penjadwal yang tidak menghasilkan umum dicatat dalam log kesalahan SQL Server setelah 70 detik dari status non-hasil. Namun, SQL Server memeriksa status penjadwal lebih sering daripada itu dan melaporkan status non-hasil menengah tersebut dalam peristiwa yang Diperluas. Jika Anda mengungkap masalah penjadwal pada simpul jarak jauh yang sesuai dengan waktu kesalahan 35267, fokuslah untuk menyelesaikannya terlebih dahulu. Berikut adalah cara Anda dapat memeriksa kejadian berumur pendek dari masalah penjadwal yang tidak mencapai ambang 70 detik, tetapi terjadi misalnya 10 atau 20 detik.

Menggunakan file peristiwa yang diperluas Kesehatan Sistem

  1. Temukan file peristiwa yang diperluas Kesehatan Sistem dari waktu peristiwa.
  2. Klik dua kali untuk system_health_0_xxxxxxxxxxxxxxxxxx.xel membukanya di SQL Server Management Studio (SSMS). Atau, Anda dapat menggunakan sys.fn_xe_file_target_read_file untuk melihat atau mengimpor file sebagai tabel untuk pemfilteran yang lebih mudah.
  3. Cari kemunculan peristiwa scheduler_monitor_non_yielding_ring_buffer_recorded . Jika Anda menemukannya, itu adalah indikasi bahwa SQL Server mendeteksi peristiwa penjadwal yang tidak menghasilkan dan merekamnya. Peristiwa ini dicatat lebih awal dari cadangan memori penjadwal non-yiedling aktual dan entri log kesalahan, yang terjadi setelah 60-70 detik dari status tidak menghasilkan. Dengan kata lain, Anda dapat menggunakan scheduler_monitor_non_yielding_ring_buffer_recorded untuk mendeteksi masalah penjadwal yang tidak menghasilkan berumur pendek yang tidak dicatat di log Kesalahan tetapi masih terjadi. Itu bisa menjadi alasan untuk konektivitas yang terputus-putus, atau berumur pendek antara simpul AG.

Menggunakan Log Diagnostik

  1. Temukan Log Diagnostik di direktori \Log dari waktu peristiwa (berlaku untuk sistem Kluster Windows). Format nama file seperti ini SERVERNAME_MSSQLSERVER_SQLDIAG_x_xxxxxxxxxxxxxxxxxx.xel.

  2. Klik dua kali untuk membuka file di SQL Server Management Studio (SSMS). Atau, Anda dapat menggunakan sys.fn_xe_file_target_read_file untuk melihat atau mengimpor file sebagai tabel untuk pemfilteran yang lebih mudah.

  3. Setelah dibuka di SSMS, temukan instans peristiwa component_health_result dan klik kanan pada hal berikut dan pilih Perlihatkan Kolom dalam Tabel: komponen, state_desc

  4. Kemudian klik kanan pada setiap kolom dan pilih Filter menurut nilai ini untuk menerapkan filter berikut:

    • peristiwa component_health_result menjadi satu-satunya yang ditampilkan
    • bidang komponen ='pemrosesan kueri'
    • <> state_desc 'bersih'.
  5. Kemudian klik dua kali pada kolom data untuk membuka data XML dan melihat trackingNonYieldingScheduler nilai di baris pertama.

  6. Jika nilainya berbeda dari 0x0 itu berarti SQL Server telah mendeteksi tanda-tanda awal dari penjadwal yang tidak menghasilkan dan melaporkannya di sini.

    Berikut adalah contoh di mana SQL Server telah mendeteksi kondisi non-hasil dengan alamat penjadwal "0x4fedb840040":

     <queryProcessing maxWorkers="9600" workersCreated="2574" workersIdle="1883" tasksCompletedWithinInterval="175591" pendingTasks="3" ... trackingNonYieldingScheduler="0x4fedb840040">
    

Memori rendah sistem operasi

Mungkin ada berbagai masalah di tingkat sistem operasi (OS) yang memicu kurangnya respons terputus-terputus. Yang umum adalah memori rendah. Pada simpul AG jarak jauh tempat masalah yang dicurigai terjadi, lakukan langkah-langkah berikut:

Langkah 5. Periksa masalah memori OS yang mengarah ke halaman memori SQL Server ke disk

  1. Periksa log peristiwa Sistem Windows untuk kesalahan apa pun yang menunjukkan memori fisik atau virtual yang rendah.

  2. Periksa kesalahan 17890 di log kesalahan SQL Server atau log peristiwa Aplikasi Windows untuk melihat apakah memori rendah pada komputer mengarah ke Pemangkasan set kerja dari semua proses pada sistem termasuk SQL Server. Kesalahan terlihat seperti ini:

    A significant part of SQL Server process memory has been paged out. This may result in a performance degradation. Duration: 0 seconds. Working set (KB): 3383250, committed (KB):    9112480, memory utilization: 37%.
    

    Untuk langkah-langkah pemotretan t terperinci, lihat MSSQLSERVER_17890

Langkah 6. Mengonfigurasi halaman Memori dan Kunci Server Maks dalam memori dengan benar

  1. Konfigurasikan Memori SQL Server Max Server ke nilai yang memungkinkan OS dan penggunaan proses lainnya memiliki memori yang tersedia. Nilai yang disarankan untuk mengatur memori server maks SQL Server ke ukuran RAM tidak lebih dari 75% pada sistem. Untuk informasi selengkapnya, lihat Opsi konfigurasi memori server
  2. Aktifkan opsi Kunci halaman dalam memori (Windows) untuk mencegah halaman besar-besaran cache buffer SQL Server.

I/O disk lambat

Dalam beberapa kasus, I/O yang terlalu lambat dapat menyebabkan utas SQL Server berhenti merespons sementara, yang dapat menyebabkan replika AG lainnya terputus.

Langkah 7. Mengatasi masalah I/O yang lambat

Jika Anda mengalami kesalahan yang menunjukkan I/O lambat, pecahkan masalah alasan yang mendasar untuk I/O lambat.

SQL Server has encountered 2 occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [F:\TLOG\ContosoDb.ldf] in database id 9.  The OS file handle is 0x00000000000003BC.  The offset of the latest long I/O is: 0x0000003d26f600
SQL Server has encountered 2 occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [F:\DATA\t38data\ContosoDb2.mdf] in database id 7.  The OS file handle is 0x000000000000118C.  The offset of the latest long I/O is: 0x00000000012000
SQL Server has encountered 1 occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [F:\DATA\t38data\ContosoDb.mdf] in database id 9.  The OS file handle is 0x000000000000134C.  The offset of the latest long I/O is: 0x00000000012000

Always On Availability Groups connection with primary database terminated for secondary database 'ContosoDb2' on the availability replica 'SQLNODE1\INSTANCE19' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
Always On Availability Groups connection with primary database terminated for secondary database 'ContosoDb' on the availability replica 'SQLNODE1\INSTANCE19' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
  • Perbarui semua driver perangkat dan firmware atau lakukan diagnostik lain yang terkait dengan subsistem I/O Anda
  • Akses disk dapat diperlambat oleh driver filter, misalnya, program antivirus. Untuk meningkatkan kecepatan akses, kecualikan file data SQL Server dari pemindaian virus aktif
  • Bekerja sama dengan vendor perangkat keras dan administrator sistem Anda untuk mendiagnosis dan mengatasi penyebab I/O lambat

Untuk instruksi mendetail, lihat Memecahkan masalah performa SQL Server lambat yang disebabkan oleh masalah I/O dan MSSQLSERVER_833.