Poprawka: Nie można przywrócić kopii zapasowej bazy danych na inne wystąpienie programu SQL Server po wyłączeniu przezroczystego szyfrowania danych przed utworzeniem kopii zapasowej w programie SQL Server 2008 lub SQL Server 2008 R2

Dotyczy: SQL Server 2008 Service Pack 2SQL Server 2008 R2

Firma Microsoft rozpowszechnia Microsoft SQL Server 2008 i Microsoft SQL Server 2008 R2 ustala się jako jeden plik do pobrania. Ponieważ poprawki są zbiorcze, każde nowe wydanie zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniego programu SQL Server 2008 lub SQL Server 2008 R2 Release.

Symptomy


Rozpatrzmy następujący scenariusz:
  • Przezroczyste szyfrowanie danych jest używane w bazie danych programu SQL Server 2008 lub Microsoft SQL Server 2008 R2.
  • Wyłączyć szyfrowanie bazy danych.
  • Kopię zapasową bazy danych i natychmiast po wyłączeniu szyfrowania.
  • Spróbuj przywrócić bazę danych na inne wystąpienie programu SQL Server przy użyciu kopii zapasowej.
W tym scenariuszu operacja przywracania nie powiedzie się i zostanie wyświetlony komunikat o błędzie podobny do następującego:
System.Data.SqlClient.SqlError: Plik "< nazwa bazy danych > _dziennik" nie można poprawnie zainicjować. Sprawdzić dzienniki błędów, aby uzyskać więcej szczegółów. (Microsoft.SqlServer.Smo)
Dziennik błędów ma jednak nie szczegółów. Po usunięciu klucza szyfrowania dla bazy danych, zanim zostanie kopii zapasowych bazy danych wyświetlany następujący komunikat o błędzie podczas próby przywrócenia bazy danych:
System.Data.SqlClient.SqlError: Nie można odnaleźć certyfikatu serwera z odciskiem palca "0xCB62FF76463A6BF86E8F769B541BA6483AFC2FF2". (Microsoft.SqlServer.Smo)

Rozwiązanie


Informacje dotyczące zbiorczej aktualizacji

Dodatek Service Pack 1 dla programu SQL Server 2008

Poprawkę dotyczącą tego problemu został wydany w 10 aktualizacja zbiorcza dla dodatku Service Pack 1 dla programu SQL Server 2008. Aby uzyskać więcej informacji na temat tego pakietu aktualizacji zbiorczej kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2279604 Pakiet aktualizacji zbiorczej 10 dla dodatku Service Pack 1 dla programu SQL Server 2008
Uwaga Ponieważ są zbiorcze, każde nowe wydanie zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniego programu SQL Server 2008 Release. Firma Microsoft zaleca, aby rozważyć zastosowanie najnowszej wersji poprawki, zawierający tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
970365 SQL Server 2008 buduje wydane po wydaniu dodatku Service Pack 1 dla programu SQL Server 2008
Microsoft SQL Server 2008 poprawki są tworzone dla określonych dodatków service Pack dla programu SQL Server. Do instalacji programu SQL Server 2008 z dodatkiem Service Pack 1, należy zastosować poprawkę dodatku Service Pack 1 dla programu SQL Server 2008. Domyślnie wszystkie poprawki, która jest dostępna w dodatku service pack dla programu SQL Server znajduje się w następnym dodatku service pack dla programu SQL Server.

Dodatek Service Pack 2 dla programu SQL Server 2008

Poprawkę dotyczącą tego problemu został wydany w zbiorczej aktualizacji 1 dla programu SQL Server 2008 Service Pack 2. Aby uzyskać więcej informacji na temat tego pakietu aktualizacji zbiorczej kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2289254 Zbiorcza aktualizacja 1 dla dodatku Service Pack 2 dla programu SQL Server 2008
Uwaga Ponieważ są zbiorcze, każde nowe wydanie zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniego programu SQL Server 2008 Release. Firma Microsoft zaleca, aby rozważyć zastosowanie najnowszej wersji poprawki, zawierający tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2402659 SQL Server 2008 buduje wydane po wydaniu dodatku Service Pack 2 dla programu SQL Server 2008

Program SQL Server 2008 R2

Poprawkę dotyczącą tego problemu najpierw została wydana w zbiorczej aktualizacji 4. Aby uzyskać więcej informacji dotyczących sposobu uzyskiwania tego pakietu aktualizacji zbiorczej dla programu SQL Server 2008 R2 kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2345451 Skumulowany pakiet aktualizacji 4 dla programu SQL Server 2008 R2
Uwaga Ponieważ są zbiorcze, każde nowe wydanie zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniego programu SQL Server 2008 R2 Release. Firma Microsoft zaleca, aby rozważyć zastosowanie najnowszej wersji poprawki, zawierający tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
981356 SQL Server 2008 R2 buduje wydane po wydaniu programu SQL Server 2008 R2

Stan


Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.

Kroki prowadzące do odtworzenia problemu

  1. Utwórz klucz główny. Oto przykładowy kod, który jest tworzony klucz główny:
    use masterCreate Master Key encryption by password = 'Password01!';go
  2. Utworzyć lub uzyskać certyfikat chroniony przez klucz główny. Oto przykładowy kod, który tworzy certyfikat chroniony przez klucz główny:
    create certificate cert_testDB_encryptDEK  authorization dbowith subject='Certificate to encrypt the DEK of testDB'
  3. Utwórz nową bazę danych, Utwórz klucz szyfrowania bazy danych, a następnie przez certyfikat ochrony klucza. Poniżej przedstawiono przykładowy kod, który tworzy nową bazę danych, który tworzy klucz szyfrowania bazy danych, a następnie który chroni klucz za pomocą certyfikatu:
    create Database testDBuse testDBCreate database encryption key with algorithm=AES_128encryption by server certificate cert_testDB_encryptDEK  
  4. Ustaw bazę danych, aby korzystać z szyfrowania. Oto przykładowy kod, który ustawia bazy danych używać szyfrowania:
    Alter database testDB set encryption on 
  5. Należy wyłączyć szyfrowanie bazy danych. Oto przykładowy kod, który wyłącza szyfrowanie bazy danych:
    Alter database testDB set encryption off 
  6. Wykonywanie kopii zapasowej bazy danych, a następnie przywrócić kopię zapasową w innej wersji programu SQL Server.

Informacje


Aby uzyskać więcej informacji na temat przezroczystego szyfrowania danych (TDE) odwiedź następującą witrynę Microsoft Developer Network (MSDN):Aby uzyskać więcej informacji o przyrostowych modelu obsługi programu SQL Server kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
935897 Przyrostowe modelu obsługi jest dostępne z zespołu programu SQL Server do dostarczania poprawki dla problemów zgłoszonych
Aby uzyskać więcej informacji na temat schematu nazewnictwa dla aktualizacji programu SQL Server kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
822499Nowy schemat nazewnictwa dla pakietów aktualizacji oprogramowania Microsoft SQL Server
Aby uzyskać więcej informacji dotyczących terminologii aktualizacji oprogramowania, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
824684 Opis standardowej terminologii używanej do opisywania aktualizacji oprogramowania firmy Microsoft