REVISIÓN: No se puede restaurar una copia de seguridad de una base de datos en otra instancia de SQL Server si se deshabilita el cifrado de datos transparente antes de crear la copia de seguridad en SQL Server 2008 o en SQL Server 2008 R2

Se aplica a: Microsoft SQL Server 2008 Service Pack 2SQL Server 2008 R2

Microsoft distribuye Microsoft SQL Server 2008 y Microsoft SQL Server 2008 R2 corrige como un archivo descargable. Como las revisiones son acumulativas, cada versión nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008 o SQL Server 2008 R2.

Síntomas


Imagine la siguiente situación:
  • Utilice el cifrado de datos transparente en una base de datos en SQL Server 2008 o en Microsoft SQL Server 2008 R2.
  • Deshabilitar el cifrado de la base de datos.
  • Realizar una copia de la base de datos inmediatamente después de deshabilitar el cifrado.
  • Intente restaurar la base de datos en otra instancia de SQL Server mediante la copia de seguridad.
En este escenario, se produce un error en la operación de restauración y recibirá un mensaje de error similar al siguiente:
System.Data.SqlClient.SqlError: No se pudo inicializar correctamente el archivo "< nombre de base de datos > _log". Examine los registros de errores para obtener más detalles. (Microsoft.SqlServer.Smo)
Sin embargo, el registro de errores tiene ningún detalle. Si quita la clave de cifrado de la base de datos antes de copia de seguridad de la base de datos, recibirá el siguiente mensaje de error cuando intenta restaurar la base de datos:
System.Data.SqlClient.SqlError: No se puede encontrar el certificado de servidor con huella digital '0xCB62FF76463A6BF86E8F769B541BA6483AFC2FF2'. (Microsoft.SqlServer.Smo)

Solución


Información de actualización acumulativa

SQL Server 2008 Service Pack 1

La corrección para este problema se publicó en primer lugar en 10 de actualización acumulativa para SQL Server 2008 Service Pack 1. Para obtener más información acerca de este paquete de actualización acumulativa, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2279604 Paquete de actualización acumulativa 10 para SQL Server 2008 Service Pack 1
Nota: Como las compilaciones son acumulativas, cada versión de corrección nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008. Microsoft recomienda que considere la posibilidad de aplicar la versión más reciente de revisión que contenga este hotfix. Si desea obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
970365 Compilaciones de SQL Server 2008 que se publicaron después del lanzamiento de SQL Server 2008 Service Pack 1
Las revisiones de Microsoft SQL Server 2008 se crean para determinados service Pack de SQL Server. Debe aplicar un hotfix de SQL Server 2008 Service Pack 1 en una instalación de SQL Server 2008 Service Pack 1. De forma predeterminada, cualquier hotfix suministrada en un service pack de SQL Server se incluye en el próximo service pack de SQL Server.

SQL Server 2008 Service Pack 2

La corrección para este problema se publicó primero en la actualización acumulativa 1 para SQL Server 2008 Service Pack 2. Para obtener más información acerca de este paquete de actualización acumulativa, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2289254 Actualización acumulativa 1 de SQL Server 2008 Service Pack 2
Nota: Como las compilaciones son acumulativas, cada versión de corrección nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008. Le recomendamos que considere aplicar la versión más reciente de revisión que contenga este hotfix. Si desea obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2402659 Compilaciones de SQL Server 2008 que se publicaron después del lanzamiento de SQL Server 2008 Service Pack 2

SQL Server 2008 R2

La corrección para este problema en primer lugar se publicó en la actualización acumulativa 4. Para obtener más información acerca de cómo obtener este paquete de actualización acumulativa para SQL Server 2008 R2, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2345451 Paquete de actualización acumulativa 4 para SQL Server 2008 R2
Nota: Como las compilaciones son acumulativas, cada versión de corrección nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008 R2. Le recomendamos que considere aplicar la versión más reciente de revisión que contenga este hotfix. Si desea obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
981356 Compilaciones de SQL Server 2008 R2 que se publicaron después del lanzamiento de SQL Server 2008 R2

Estado


Microsoft ha confirmado que se trata de un problema de los productos de Microsoft recogidos en la sección "Se aplica a".

Pasos para reproducir el problema

  1. Crear una clave principal. El siguiente es un ejemplo de código que crea una clave maestra:
    use masterCreate Master Key encryption by password = 'Password01!';go
  2. Cree u obtenga un certificado protegido por la clave maestra. El siguiente es un ejemplo de código que crea un certificado protegido por una llave maestra:
    create certificate cert_testDB_encryptDEK  authorization dbowith subject='Certificate to encrypt the DEK of testDB'
  3. Crear una nueva base de datos, crear una clave de cifrado de base de datos y, a continuación, proteger la clave con el certificado. El siguiente es un ejemplo de código que crea una nueva base de datos, que crea una clave de cifrado de base de datos, y, a continuación, que protege la clave mediante un certificado:
    create Database testDBuse testDBCreate database encryption key with algorithm=AES_128encryption by server certificate cert_testDB_encryptDEK  
  4. Establecer la base de datos para utilizar el cifrado. El siguiente es un ejemplo de código que establece una base de datos para utilizar el cifrado:
    Alter database testDB set encryption on 
  5. Deshabilitar el cifrado de la base de datos. El siguiente es un ejemplo de código que desactiva el cifrado de una base de datos:
    Alter database testDB set encryption off 
  6. Hacer copia de seguridad de la base de datos y, a continuación, restaure la copia de seguridad en otra versión de SQL Server.

Referencias


Para obtener más información sobre el cifrado de datos transparente (TDE), visite el siguiente sitio Web de Microsoft Developer Network (MSDN):Para obtener más información sobre el modelo de servicio Incremental de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
935897 Un modelo de servicio Incremental está disponible desde el equipo de SQL Server para entregar revisiones para problemas detectados
Para obtener más información acerca del esquema de nomenclatura para las actualizaciones de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
822499Nuevo esquema de nomenclatura para los paquetes de actualización de software de Microsoft SQL Server
Para obtener más información acerca de la terminología de la actualización de software, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684 Descripción de la terminología estándar utilizada para describir las actualizaciones de software de Microsoft