Bagikan melalui


MSSQLSERVER_17066

Berlaku untuk: SQL Server

Detail

Atribut Nilai
Nama Produk SQL Server
ID Peristiwa 17066
Sumber Kejadian MSSQLSERVER
Komponen SQLEngine
Nama Simbolis SQLASSERT_ONLY
Teks Pesan Pernyataan SQL Server: File: <%s>, line=%d Failed Assertion = '%s'. Kesalahan ini mungkin terkait waktu. Jika kesalahan berlanjut setelah menjalankan ulang pernyataan, gunakan DBCC CHECKDB untuk memeriksa database untuk integritas struktural, atau mulai ulang server untuk memastikan struktur data dalam memori tidak rusak.

Penjelasan

Pernyataan adalah pernyataan yang ditempatkan dalam kode aplikasi untuk memastikan bahwa kondisi tertentu terpenuhi. Dalam hal itu pernyataan berulah mirip dengan kesalahan. Anda dapat menganggap pernyataan sebagai kesalahan tegas dan tegas. Kondisi yang ditentukan harus dipenuhi agar program dapat melanjutkan eksekusi reguler. Jika kondisi tidak terpenuhi, pernyataan akan dimunculkan. Untuk informasi selengkapnya, lihat Pernyataan C/C++.

SQL Server menggunakan pernyataan di banyak tempat untuk memastikan bahwa kondisi benar. Misalnya, kondisi 'existingState == DB_Unencrypted' menegaskan bahwa status database tidak terenkripsi sebelum perintah berikutnya dalam kode dijalankan. Jika itu tidak terjadi, pernyataan dinaikkan. Kesalahan 3624 memberi tahu Anda bahwa kondisi seperti itu tidak terpenuhi dan pernyataan dimunculkan.

Kesalahan 3624 dimunculkan bersama dengan MSSQLSERVER_3624. Berikut adalah contoh bagaimana Anda dapat melihat kesalahan ini di log kesalahan SQL Server. Anda juga akan melihat kondisi pernyataan yang dimunculkan selama run time dan kesalahan dikirim dari SQL Server ke aplikasi klien.

Error: 17066, Severity: 16, State: 1.
SQL Server Assertion: File: <"e:\\b\\s3\\sources\\sql\\ntdbms\\hekaton\\engine\\hadr\\physical\\ckptctrlprocesslogrecord.cpp">, line=1634 Failed Assertion = 'existingState == DB_Unencrypted'. This error may be timing-related. If the error persists after rerunning the statement, use DBCC CHECKDB to check the database for structural integrity, or restart the server to ensure in-memory data structures are not corrupted.

Error: 3624, Severity: 20, State: 1.
A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug or data corruption. To check for database corruption, consider running DBCC CHECKDB. If you agreed to send dumps to Microsoft during setup, a mini dump will be sent to Microsoft. An update might be available from Microsoft in the latest Service Pack or in a Hotfix from Technical Support.
Error: 17066, Severity: 16, State: 1.
SQL Server Assertion: File: <"xdes.cpp">, line=4919 Failed Assertion = 'lck_sufficient (lckMode, LCK_M_IX) || lck_sufficient (lckMode, LCK_M_BU)'. This error may be timing-related. If the error persists after rerunning the statement, use DBCC CHECKDB to check the database for structural integrity, or restart the server to ensure in-memory data structures are not corrupted.

Error: 3624, Severity: 20, State: 1.
A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug or data corruption. To check for database corruption, consider running DBCC CHECKDB. If you agreed to send dumps to Microsoft during setup, a mini dump will be sent to Microsoft. An update might be available from Microsoft in the latest Service Pack or in a Hotfix from Technical Support.
SQL Server Assertion: File: <diskio.cpp>, line=2902 Failed Assertion = 'filepos + cBytes <= GetMaxOffsetForIO ()'. This error may be timing-related. If the error persists after rerunning the statement, use DBCC CHECKDB to check the database for structural integrity, or restart the server to ensure in-memory data structures are not corrupted.

Error: 3624, Severity: 20, State: 1.
A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug or data corruption. To check for database corruption, consider running DBCC CHECKDB. If you agreed to send dumps to Microsoft during setup, a mini dump will be sent to Microsoft. An update might be available from Microsoft in the latest Service Pack or in a Hotfix from Technical Support.

Penyebab

Berikut adalah beberapa kemungkinan alasan kegagalan pernyataan terjadi:

Bug Produk
Alasan umum untuk kegagalan pernyataan adalah masalah dalam produk yang menyebabkan kondisi tidak benar. Masalah ini perlu diselidiki oleh Microsoft dan ketika direproduksi dan dipahami dapat diperbaiki.

Kerusakan database Penyebab umum lain untuk kegagalan pernyataan adalah inkonsistensi fisik dalam database. Struktur data yang rusak, ketika dibaca dalam memori, dapat menyebabkan kondisi yang diharapkan salah dan dengan demikian menimbulkan pernyataan.

Pustaka eksternal atau driver filter Penyebab umum untuk menegaskan pesan telah ditemukan disebabkan oleh DLL eksternal di dalam memori SQL Server atau driver filter yang dirancang untuk memantau atau mencegat aktivitas SQL Server. Jika komponen eksternal tersebut memodifikasi objek atau struktur yang digunakan SQL Server, kegagalan pernyataan dapat terjadi. Untuk informasi selengkapnya, lihat Masalah performa dan konsistensi saat modul atau driver filter tertentu dimuat.

Masalah perangkat keras (memori, CPU) Perangkat keras yang rusak dapat menyebabkan kerusakan struktur data dalam memori dan karenanya menyebabkan kegagalan pernyataan. Masalah ini kurang umum tetapi terjadi.

Tindakan Pengguna

  1. Periksa build SQL Server Anda, lihat Menentukan versi dan edisi Mesin Database SQL Server mana yang sedang berjalan

  2. Temukan Pembaruan terbaru yang tersedia untuk versi SQL Server Anda atau buka file Excel yang mencantumkan semua perbaikan untuk semua build

  3. Tinjau artikel atau file Excel untuk perbaikan pernyataan apa pun yang dirilis setelah build SQL Server Anda saat ini. Jika Anda menemukan build nanti yang memperbaiki masalah pernyataan, pertimbangkan untuk meningkatkan ke build tersebut.

  4. Dalam beberapa kasus, Anda dapat mencari kondisi pernyataan tertentu di bagian Pernyataan Gagal dari kesalahan 17066. Misalnya, dalam pencarian pesan di atas untuk lck_sufficient (lckMode, LCK_M_IX). Ekspresi ini akan membantu Anda dengan pencarian yang lebih akurat untuk masalah yang cocok. Ekspresi ini adalah kondisi yang memicu pernyataan di tempat pertama dan cukup spesifik.

  5. Jalankan DBCC CHECKDB pada database Anda. Jika DBCC CHECKDB melaporkan kesalahan kerusakan database, fokus pada penyelesaian masalah tersebut sebelum hal lain. Pulihkan cadangan database yang bersih dan selidiki akar penyebab inkonsistensi database. Untuk informasi selengkapnya, lihat Memecahkan masalah kesalahan konsistensi database yang dilaporkan oleh DBCC CHECKDB.

  6. Periksa apakah ada modul eksternal yang dimuat di ruang memori SQL Server dan periksa juga driver filter

    SELECT * FROM sys.dm_os_loaded_modules
    WHERE company != 'Microsoft Corporation'
    

    Untuk driver filter, jalankan perintah berikut dari Prompt Perintah

    fltmc filters
    

    Ikuti rekomendasi dalam Masalah performa dan konsistensi saat modul atau driver filter tertentu dimuat.

  7. Jika Anda telah meningkatkan SQL Server ke Pembaruan Kumulatif terbaru, dan DBCC CHECKDB tidak melaporkan kesalahan apa pun, hubungi dukungan teknis Microsoft dan siap untuk memberikan informasi berikut:

    1. Log kesalahan SQL Server dari folder \Log
    2. Cadangan memori SQL Server (SQLDump00xx.mdmp) yang dihasilkan di folder \Log
    3. Langkah-langkah untuk mereprodusi pernyataan jika tersedia. Kueri atau tindakan apa yang mengarah pada pernyataan yang akan dimunculkan?
    4. Output dari fltmc filters dan dari DMV 'sys.dm_os_loaded_modules.