Saya saat ini meningkatkan gudang data kami dari SQL 2012 ke SQL 2016. Saya memiliki DW lama dan baru saya yang berjalan berdampingan secara paralel.
Proses ETL saya (Kerangka kerja yang dikembangkan dalam SSIS oleh pihak ke-3) telah berjalan dengan sukses selama lebih dari 2 tahun pada 2012 tetapi gagal pada 2016. Sejauh ini database dan proses ETL identik.
Kedua Server adalah mesin Virtual yang berjalan di VMWare. Old Server is Win 2008 dengan RAM 24Gb. SQL 2012 Std. Maks mem atur ke 16Gb. Server Baru adalah Win 2012 dengan 64Gb RAM. SQL 2016 dev. Maks mem atur ke 50Gb. DW baru menjalankan v13.0.1601.5 Edisi Pengembang RTM (64-bit).
Saat menjalankan proses ETL saya langkah-langkah memuat yang menggunakan SQL Merge ke dalam tabel dimensi atau fakta gagal dengan kesalahan berikut.
Teks lengkap:
KETERANGAN: Pernyataan SQL Server: File:, line = 951 Pernyataan Gagal = 'IS_OFF (BUF_MINLOGGED, m_buf-> bstat) || pageModifyType! = PageModifyType_Contents || GetPagePtr () -> IsTextPage () '. Kesalahan ini mungkin terkait waktu. Jika kesalahan tetap terjadi setelah menjalankan kembali pernyataan, gunakan DBCC CHECKDB untuk memeriksa database untuk integritas struktural, atau restart server untuk memastikan struktur data dalam memori tidak rusak.
Seperti yang disarankan, saya telah menjalankan DBCC dan tidak ada kesalahan yang ditemukan. Saya juga me-restart SQL. Saya kemudian memulai kembali proses ETL dan mendapatkan kesalahan yang sama.
Pencarian saya untuk kesalahan ini menunjukkan kesalahan yang dikenal di SQL 2008, 2012 & 2014 dan diperbaiki dalam pembaruan terbaru & kumulatif pembaruan berikutnya. jadi saya agak terkejut melihatnya muncul kembali pada tahun 2016.
Tautan yang saya temukan mengatakan itu memengaruhi SSIS ketika mencoba melakukan penyisipan jika basis data dalam model pemulihan Sederhana atau Massal Tercatat. (Saya menjalankan model pemulihan sederhana)
Solusi yang disarankan adalah mengubah model pemulihan Db ke FULL. Saya telah mencoba ini dan berhasil, tetapi tidak banyak solusi untuk Gudang Data.
Adakah orang lain yang mengalami hal ini pada tahun 2016?
Adakah yang bisa menyarankan solusi alternatif?
Pembaruan:
26/7/2016: Saya menerapkan Pembaruan Kritis KB3164398 (v13.0.1708.0) dan masalahnya masih ada.
27/7/2016: Saya telah menerapkan Pembaruan Kumulatif CU1 KB3164674 (v13.0.2149.0).
3/8/2016: Kesalahan terjadi semalam di kubus terkecil kami. CU1 tidak memperbaiki masalah. Hari ini saya melaporkan bug di MS Connect dan saya juga mencatat panggilan dukungan dengan Microsoft.
12/8/2016: Dukungan MS merespons pada awalnya, tetapi jawabannya adalah "Kami tidak memiliki perbaikan untuk itu". Cowok Pendukung akan mendiskusikannya dengan rekan-rekannya dan kembali kepada saya. 8 hari kemudian saya belum mendengar kabar darinya.
Meskipun saya tidak memiliki 'perbaikan', kami menemukan solusi yang cocok untuk kami. Lihat jawaban saya yang diposting.
29/9/2016. Saya menerapkan CU2 minggu lalu. Pada hari Kamis kami secara tidak sengaja menjalankan versi lama penggabungan yang gagal lagi dengan kesalahan yang sama. Jadi .. CU2 belum memperbaikinya juga.
23/1/2017 : Saya Menerapkan 2016 SP1 CU1 dan saya yakin ini telah menyelesaikan masalah. Khususnya KB3205964
sumber
Saya percaya ini telah diselesaikan pada 2016 SP1 CU1.
Khususnya oleh KB3205964
sumber
Ini diperbaiki dengan menerapkan pembaruan kumulatif 1 (CU1) untuk MSSQL2016 lihat tautan https://support.microsoft.com/en-us/kb/3164674
sumber
Saya yakin kami telah menemukan solusi lain. Saya memposting jawaban saya karena saya pikir ini mungkin berguna, dan itu cukup berbeda dari saran wBob.
Kami telah mengubah bagian sisipan dari pernyataan gabungan sehingga memasukkan ke tabel temp daripada target aslinya.
Setelah pernyataan gabungan dieksekusi, kami kemudian memasukkan dari tabel # ke dalam target.
Ini tidak ideal, tetapi setidaknya penggabungan masih menangani kompleksitas 'upert' dengan menandai baris yang telah pensiun / kedaluwarsa.
Kami menemukan ini sebagai trade-off yang dapat diterima dibandingkan dengan sepenuhnya menulis ulang penggabungan sebagai sisipan dan pembaruan yang terpisah.
sumber