Pembaruan : @AmitBanerjee - Manajer Program Senior untuk Grup Produk Microsoft SQL Server mengonfirmasi bahwa MS akan memeriksa masalah ini karena itu adalah kerusakan.
Adakah yang mengalami masalah memulihkan cadangan yang diambil pada SQL Server 2016 dengan TDE diaktifkan dan menggunakan MAXTRANSFERSIZE
> 65536 (dalam kasus saya, saya telah memilih 65537 sehingga saya dapat mengompres basis data TDE ) dan CHECKSUM
?
Di bawah ini adalah repro:
--- create database
create database test_restore
go
-- create table
create table test_kin (fname char(10))
go
-- Enable TDE
use master
GO
CREATE CERTIFICATE test_restore WITH SUBJECT = 'test_restore_cert'
GO
SELECT name, pvt_key_encryption_type_desc, * FROM sys.certificates WHERE name = 'test_restore'
GO
use test_restore
go
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE test_restore
GO
alter database test_restore set encryption ON
Ambil salinan lengkap hanya cadangan .. lakukan dua kali ..
backup database test_restore
to disk = 'D:\temporary-short-term\test_restore_KIN_test_restore_1.bak' -- change as per your location !!
with init, stats =10 -- overwrite ..using INIT !!
, maxtransfersize = 65537
, compression
,CHECKSUM
Sekarang lakukan verifyonly
...
restore verifyonly from disk = 'D:\temporary-short-term\test_restore_KIN_test_restore_1.bak'
Pesan eror :
Msg 3241, Level 16, Negara 40, Jalur 11 Keluarga media di perangkat 'D: \ temporary-short-term \ test_restore_KIN_test_restore_1.bak' salah terbentuk. SQL Server tidak dapat memproses keluarga media ini. Msg 3013, Level 16, Negara 1, Baris 11 VERIFIKASI DATABASE berakhir secara tidak normal.
Hasil (1 = ON, 0 = OFF) dengan kombinasi berbeda:
+-------------------------+-------------+----------+--------+
| MAXTRANSFERSIZE (65537) | COMPRESSION | CHECKSUM | RESULT |
+-------------------------+-------------+----------+--------+
| 1 | 1 | 1 | FAIL |
| 1 | 1 | 0 | PASS |
| 1 | 0 | 1 | FAIL |
| 0 | 0 | 0 | PASS |
| 0 | 1 | 1 | PASS |
| 0 | 1 | 0 | PASS |
+-------------------------+-------------+----------+--------+
Masalahnya terjadi pada:
Microsoft SQL Server 2016 (RTM-CU1) (KB3164674) - 13.0.2149.0 (X64) 11 Jul 2016 22:05:22 Hak cipta (c) Edisi Microsoft Corporation Enterprise (64-bit) pada Windows Server 2012 R2 Standar 6.3 (Build 9600) :)
FORMAT
header akan menimpa juga dan itu tidak terjadi saat menggunakanFORMAT
. Masih ini merupakan misteri mengapa header cadangan (atau cadangan secara keseluruhan) rusak saat menggunakanMAXTRANSFERSIZE
danCHECKSUM
bersama dengan INIT. Ini tidak pernah terjadi pada versi yang lebih rendah tetapi pada mereka tidak adaMAXTRANSFERSIZE
. Terima kasih atas jawaban anda. Ini akan tetap terbuka jika seseorang memiliki info lebih lanjut.Sepertinya ini mungkin telah diatasi dengan KB 4032200:
Dari entri itu:
sumber
Ini tampaknya berpotensi menjadi masalah yang sama dengan posting blog yang Anda rujuk dalam pertanyaan Anda kemudian diperbarui untuk merujuk ke:
Meskipun demikian, postingan blog belum diperbarui dengan informasi lebih lanjut sejak itu.
Namun, KB 4019893 juga dapat mengatasi ini:
Meskipun pesan kesalahan yang dilaporkan dalam artikel KB itu berbeda dari yang Anda laporkan, faktor-faktor yang berkontribusi terdengar sangat mirip. SQL Server 2016 SP1 CU3 pertama kali menyertakan perbaikan, seperti terlihat dalam daftar perbaikan terbaru . Namun, ada laporan bahwa itu tidak menyelesaikan masalah di semua situasi.
SQL Server 2016 SP1 CU4 juga mencakup perbaikan (mungkin diperbarui) untuk ini , dan KB 4019893 sejak itu telah diperbarui untuk menunjukkan SP1 CU4 sebagai versi masalah yang diperbaiki.
Sayangnya, saya dapat mengkonfirmasi dari pengalaman saya sendiri bahwa bahkan perbaikan di SP1 CU4 tidak sepenuhnya menyelesaikan masalah itu. Saat ini saya memiliki satu basis data yang diaktifkan TDE yang masih menghasilkan cadangan yang korup secara konsisten bahkan pada SP1 CU4 saat menggunakan
COMPRESSION
(melaluiMAXTRANSFERSIZE
> 64 KB) danCHECKSUM
. Saya juga memiliki beberapa lusin basis data berkemampuan TDE lain dalam lingkungan ini yang secara konsisten tidak menghasilkan cadangan yang korup di bawah pengaturan itu, termasuk yang merupakan variasi dari yang ada, dengan skema yang hampir identik tetapi dengan dataset yang lebih kecil. Ini tampaknya menunjukkan bahwa Microsoft memang memotong skenario yang dapat menyebabkan ini, tetapi belum menyelesaikan semuanya.Saya belum mencoba menggunakan
FORMAT
untuk mengatasi masalah ini, seperti yang dirujuk dalam jawaban lain dan posting blog SQLCAT , tetapi saya akan memberikan pembaruan di sini jika saya bisa mencobanya dan itu menyelesaikan masalah. Satu database yang saya miliki yang mereproduksi ini sayangnya agak besar (~ 1 TB), dan berada di cluster Pengembangan / QA yang tidak memiliki banyak ruang penyimpanan tambahan yang tersedia (setidaknya pada skala itu), jadi menguji variasi ini memiliki terbukti secara logistik menantang dan memakan waktu.sumber