KB2300689-Fix: Sie können eine Sicherung einer Datenbank auf einer anderen Instanz von SQL Server nicht wiederherstellen, wenn Sie die transparente Datenverschlüsselung deaktivieren, bevor Sie die Sicherung in SQL Server 2008 oder in SQL Server 2008 R2 erstellen.

Gilt für: Microsoft SQL Server 2008 Service Pack 2SQL Server 2008 R2

Microsoft vertreibt Microsoft SQL Server 2008-und Microsoft SQL Server 2008 R2-Fixes als eine herunterladbare Datei. Da die Fixes kumulativ sind, enthält jede neue Version alle Hotfixes und alle Sicherheitsupdates, die in der vorherigen Version von SQL Server 2008 oder SQL Server 2008 R2 enthalten waren.

Problembeschreibung


Stellen Sie sich folgendes Szenario vor:
  • Sie verwenden transparente Datenverschlüsselung für eine Datenbank in SQL Server 2008 oder in Microsoft SQL Server 2008 R2.
  • Sie deaktivieren die Verschlüsselung für die Datenbank.
  • Sie können die Datenbank sofort sichern, nachdem Sie die Verschlüsselung deaktiviert haben.
  • Sie versuchen, die Datenbank auf einer anderen Instanz von SQL Server mithilfe der Sicherung wiederherzustellen.
In diesem Szenario schlägt der Wiederherstellungsvorgang fehl, und es wird eine Fehlermeldung wie die folgende angezeigt:
System. Data. SqlClient. sqlfehler: die Datei "<Datenbankname>_log" konnte nicht ordnungsgemäß initialisiert werden. Untersuchen Sie die Fehlerprotokolle, um weitere Details anzuzeigen. (Microsoft.SqlServer.Smo)
Das Fehlerprotokoll enthält jedoch keine Details. Wenn Sie den Verschlüsselungsschlüssel für die Datenbank entfernen, bevor Sie die Datenbank sichern, wird die folgende Fehlermeldung angezeigt, wenn Sie versuchen, die Datenbank wiederherzustellen:
System. Data. SqlClient. SqlError: das Serverzertifikat mit dem Fingerabdruck "0xCB62FF76463A6BF86E8F769B541BA6483AFC2FF2" kann nicht gefunden werden. (Microsoft.SqlServer.Smo)

Fehlerbehebung


Informationen zum kumulativen Update

SQL Server 2008 Service Pack 1

Der Fix für dieses Problem wurde erstmals im kumulativen Update 10 für SQL Server 2008 Service Pack 1 veröffentlicht. Wenn Sie weitere Informationen zu diesem kumulativen Updatepaket erhalten möchten, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
2279604 Kumulatives Updatepaket 10 für SQL Server 2008 Service Pack 1
Hinweis Da die Builds kumulativ sind, enthält jede neue Fix-Version alle Hotfixes und alle Sicherheitsupdates, die in der vorherigen Version von SQL Server 2008 behoben wurden. Microsoft empfiehlt, die neueste Fix-Version zu verwenden, die diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
970365 Die SQL Server 2008-Builds, die nach der Veröffentlichung von SQL Server 2008 Service Pack 1 veröffentlicht wurden
Microsoft SQL Server 2008-Hotfixes werden für bestimmte SQL Server-Service Packs erstellt. Sie müssen einen SQL Server 2008 Service Pack 1-Hotfix auf eine Installation von SQL Server 2008 Service Pack 1 anwenden. Standardmäßig ist jeder Hotfix, der in einem SQL Server-Service Pack bereitgestellt wird, im nächsten SQL Server-Service Pack enthalten.

SQL Server 2008 Service Pack 2

Der Fix für dieses Problem wurde erstmals im kumulativen Update 1 für SQL Server 2008 Service Pack 2 veröffentlicht. Wenn Sie weitere Informationen zu diesem kumulativen Updatepaket erhalten möchten, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
2289254 Kumulatives Update 1 für SQL Server 2008 Service Pack 2
Hinweis Da die Builds kumulativ sind, enthält jede neue Fix-Version alle Hotfixes und alle Sicherheitsupdates, die in der vorherigen Version von SQL Server 2008 behoben wurden. Wir empfehlen, dass Sie die neueste Fix-Version anwenden, die diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
2402659 Die SQL Server 2008-Builds, die nach der Veröffentlichung von SQL Server 2008 Service Pack 2 veröffentlicht wurden

SQL Server 2008 R2

Die Fehlerbehebung für dieses Problem wurde zuerst in Kumulatives Update 4 veröffentlicht. Wenn Sie weitere Informationen zum beziehen dieses kumulativen Updatepakets für SQL Server 2008 R2 benötigen, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
2345451 Kumulatives Update Paket 4 für SQL Server 2008 R2
Hinweis Da die Builds kumulativ sind, enthält jede neue Fix-Version alle Hotfixes und alle Sicherheitsupdates, die mit der vorherigen Version von SQL Server 2008 R2 behoben wurden. Wir empfehlen, dass Sie die neueste Fix-Version anwenden, die diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
981356 Die SQL Server 2008 R2-Builds, die nach der Veröffentlichung von SQL Server 2008 R2 veröffentlicht wurden

Status


Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.

Schritte zum Reproduzieren des Problems

  1. Erstellen eines Hauptschlüssels Der folgende Code ist ein Beispiel für Code, der einen Hauptschlüssel erstellt:
    use masterCreate Master Key encryption by password = 'Password01!';go
  2. Erstellen oder besorgen Sie sich ein Zertifikat, das durch den Hauptschlüssel geschützt ist. Der folgende Code ist ein Beispiel für Code, der ein Zertifikat erstellt, das durch einen Hauptschlüssel geschützt ist:
    create certificate cert_testDB_encryptDEK  authorization dbowith subject='Certificate to encrypt the DEK of testDB'
  3. Erstellen Sie eine neue Datenbank, erstellen Sie einen Datenbank-Verschlüsselungsschlüssel, und schützen Sie den Schlüssel dann durch das Zertifikat. Im folgenden finden Sie ein Beispiel für Code, der eine neue Datenbank erstellt, die einen Datenbankverschlüsselungsschlüssel erstellt und dann den Schlüssel mithilfe eines Zertifikats schützt:
    create Database testDBuse testDBCreate database encryption key with algorithm=AES_128encryption by server certificate cert_testDB_encryptDEK  
  4. Setzen Sie die Datenbank auf die Verschlüsselung. Der folgende Code ist ein Beispiel für Code, mit dem eine Datenbank für die Verschlüsselung festgelegt wird:
    Alter database testDB set encryption on 
  5. Deaktivieren Sie die Verschlüsselung für die Datenbank. Der folgende Code ist ein Beispiel für Code, der die Verschlüsselung für eine Datenbank deaktiviert:
    Alter database testDB set encryption off 
  6. Sichern Sie die Datenbank, und stellen Sie die Sicherung dann in einer anderen Version von SQL Server wieder her.

Informationsquellen


Weitere Informationen zur transparenten Datenverschlüsselung (DSA) finden Sie auf der folgenden MSDN-Website (Microsoft Developer Network):Wenn Sie weitere Informationen zum inkrementellen Wartungsmodell für SQL Server erhalten möchten, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
935897 Ein inkrementelles Wartungsmodell steht im SQL Server-Team zum Bereitstellen von Hotfixes für gemeldete Probleme zur Verfügung.
Wenn Sie weitere Informationen zum Benennungsschema für SQL Server-Updates erhalten möchten, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
822499 Neues Benennungsschema für Microsoft SQL Server-Softwareupdatepakete
Wenn Sie weitere Informationen zur Terminologie für Softwareupdates erhalten möchten, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
824684 Beschreibung der Standardterminologie, die zum Beschreiben von Microsoft-Softwareupdates verwendet wird