FIX: Anda menerima galat 605 dan galat 824 saat menjalankan permintaan yang memasukkan data ke tabel sementara di SQL Server

Berlaku untuk: Microsoft SQL Server 2008 Service Pack 3

Bug: #50003826 (SQL Hotfix)
Microsoft mendistribusikan perbaikan Microsoft SQL Server 2008 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 2008 edaran perbaikan.

Gejala


Di SQL Server 2008, Anda menjalankan permintaan yang memasukkan data ke tabel sementara. Pernyataan memasukkan berisi subpermintaan yang merujuk tabel sementara yang sama. Ketika Anda menjalankan permintaaan, Anda mungkin menerima pesan galat yang menyerupai berikut ini:
Pesan 605, Level 21, tahap 3, baris 1Attempt mengambil halaman logis (1: 225) di pangkalan data 2 gagal. Milik 281474980315136 unit alokasi untuk tidak 504403158513025024.
Jika Anda menjalankan lagi permintaaan, Anda menerima pesan galat yang menyerupai berikut ini:
Pesan 824, Level 24, status 2, baris 1
SQL Server mendeteksi galat I/O berbasis konsistensi Logis: jumlah pemeriksaan salah (diharapkan: 0x50758180; sebenarnya: 0x15658bfc). Ini terjadi selama pembacaan halaman (1: 336) di pangkalan data ID 2 pada offset 0x000000002a0000 dalam berkas ' C:\Program Files\Microsoft SQL Server\MSSQL10. SQL2008\MSSQL\DATA\tempdb.MDF'. Pesan tambahan di SQL Server kesalahan sistem atau log log peristiwa dapat ditemukan rinciannya. Ini adalah kondisi galat yang serius yang mengancam integritas pangkalan data dan harus segera dikoreksi. Menyelesaikan pemeriksaan konsistensi pangkalan data (menyeluruh DBCC CHECKDB). Galat ini dapat disebabkan oleh banyak faktor; untuk informasi selengkapnya, lihat Pemesanan daring SQL Server.
Dalam beberapa kasus, Anda mungkin juga menerima pesan galat yang menyerupai berikut ini:
Pesan 601, Level 12, tahap 3, prosedur pama prosedur, baris nomor baristidak dapat melanjutkan pemindaian nolock karena pergerakan data.
Konstruksi permintaan yang mungkin yang dapat menghasilkan galat ini adalah sebagai berikut:
insert #table1select s.col1, s.col2from #table2 s inner loop join #table1 t on s.col3 = t.col3 

Pemecahan Masalah


Perbaikan untuk masalah ini pertama kali diedarkan dalam pemutakhiran kumulatif 3. Untuk informasi selengkapnya tentang cara mendapatkan paket pembaruan kumulatif ini untuk SQL Server 2008, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
960484 Paket pemutakhiran kumulatif 3 untuk SQL Server 2008
Catatan Karena edisi ini kumulatif, setiap edaran perbaikan baru berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan sebelumnya SQL Server 2008 edaran perbaikan. Kami sarankan Anda mempertimbangkan untuk menerapkan edaran perbaikan terbaru yang berisi hotfix ini. Untuk informasi selengkapnya, klik nomor artikel berikut untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
956909 Bangun SQL Server 2008 yang dirilis setelah SQL Server 2008 dirilis
Setelah Anda menginstal paket pemutakhiran kumulatif ini, Anda harus mengaktifkan bendera pelacakan 4135. Untuk melakukannya, Anda dapat menambahkan -T4135 parameter permulaan. Atau, Anda dapat menggunakan pernyataan dbcc traceon(4135) untuk sesi tertentu.

Penyelesaian Masalah


Untuk mengatasi masalah ini, tambahkan kolom yang memiliki kunci primer tergugus dan properti identitas ke tabel sementara. Sebagai contoh, jalankan pernyataan berikut untuk mengubah tabel sementara:
ALTER TABLE #TempTableADD id integer IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED

Status


Microsoft telah melakukan konfirmasi bahwa masalah ini timbul pada produk Microsoft yang tertera pada bagian "Berlaku untuk".

Informasi Selengkapnya


Meskipun Anda mengalami galat 824 atau 605, pangkalan data tidak rusak. Selain itu, pesan galat ini merujuk halaman dari pangkalan data tempdb.Untuk informasi selengkapnya tentang berkas apa yang diubah, dan untuk informasi tentang prasyarat untuk menerapkan paket pemutakhiran kumulatif yang berisi hotfix yang dijelaskan di artikel Pangkalan Pengetahuan Microsoft ini, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
960484 Paket pemutakhiran kumulatif 3 untuk SQL Server 2008

SQL Server 2008 R2 BPA informasi

SQL Server 2008 R2 Penganalisis praktik terbaik (SQL Server 2008 R2 BPA) menyediakan aturan untuk mendeteksi situasi di mana Anda tidak memiliki pemutakhiran kumulatif atau mengaktifkan bendera pelacakan untuk mengatasi masalah ini. SQL Server 2008 R2 BPA mendukung SQL Server 2008 dan SQL Server 2008 R2. Jika Anda menjalankan alat BPA dan mengalami "Database Engine - Code kesalahan memperbaiki atau bendera pelacakan hilang" peringatan, Anda harus memeriksa versi dari SQL Server dan bendera pelacakan yang dikonfigurasi untuk mengaktifkan perbaikan ini.

Referensi

Perangkat lunak aturanJudul aturanPengidentifikasi aturan
Aturan BPA SQL Server 2008 R2perbaikan galat Tempdb atau bendera pelacakan hilangRID3808
Catatan Anda dapat mengaktifkan bendera pelacakan 4135 atau bendera pelacakan 4199 untuk mengaktifkan perbaikan ini. Bendera pelacakan 4135 diperkenalkan di paket pemutakhiran kumulatif 3 untuk SQL Server 2008. Bendera pelacakan 4135 juga tersedia di SQL Server 2008 Paket Layanan 1, SQL Server 2008 Paket Layanan 2 dan SQL Server 2008 R2. Bendera pelacakan 4199 diperkenalkan di paket pemutakhiran kumulatif 7 untuk SQL Server 2008, paket pemutakhiran kumulatif 7 untuk SQL Server 2008 Paket Layanan 1 dan paket pemutakhiran kumulatif 1 untuk SQL Server 2008 R2. Untuk informasi selengkapnya tentang bendera pelacakan 4199, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
 974006 Bendera pelacakan 4199 ditambahkan ke control beberapa permintaan Pengoptimal perubahan sebelumnya dibuat di bawah beberapa jejak bendera
Karena perbaikan untuk masalah ini melibatkan kombinasi dari versi hotfix khusus dan bendera pelacakan untuk mengaktifkan perbaikan, kami menyertakan tabel berikut untuk menunjukkan skenario yang berbeda dan tindakan yang disarankan untuk setiap skenario.Untuk informasi lebih lanjut tentang SQL Server bangun terbaru, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
957826 Mencari informasi tentang terbaru SQL Server di mana bangun

Referensi


Untuk informasi selengkapnya tentang daftar daftar versi yang tersedia setelah Edaran SQL Server 2008, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
956909 Bangun SQL Server 2008 yang dirilis setelah SQL Server 2008 dirilis
Untuk informasi selengkapnya tentang Model pelayanan inkremental untuk SQL Server, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
935897 Tersedia Model pelayanan inkremental dari tim SQL Server untuk memberikan hotfix untuk masalah yang dilaporkan
Untuk informasi selengkapnya tentang skema penamaan untuk pemutakhiran SQL Server, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
822499Skema penamaan baru untuk paket pembaruan perangkat lunak Microsoft SQL Server
Untuk informasi selengkapnya tentang peristilahan pemutakhiran perangkat 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