KB2300689 - CORRECCIÓN: No puede restaurar una copia de seguridad de una base de datos en otra instancia de SQL Server si 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
SQL Server 2008 Service Pack 2 SQL Server 2008 R2

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

Síntomas

Tenga en cuenta el siguiente escenario:

  • Usa el cifrado de datos transparente en una base de datos en SQL Server 2008 o en Microsoft SQL Server 2008 R2.
  • Deshabilita el cifrado de la base de datos.
  • Hace una copia de seguridad de la base de datos inmediatamente después de deshabilitar el cifrado.
  • Intenta restaurar la base de datos en otra instancia de SQL Server mediante la copia de seguridad.

En esta situación, la operación de restauración falla y aparece un mensaje de error similar al siguiente:

Nota

System.Data.SqlClient.SqlError: El archivo "<nombre> de base de datos_log" no se pudo inicializar correctamente. Examine los registros de errores para obtener más detalles. (Microsoft.SqlServer.Smo)

Sin embargo, el registro de errores no tiene detalles.

Si quita la clave de cifrado de la base de datos antes de realizar una copia de seguridad de la misma, recibirá el mensaje de error siguiente al intentar restaurar la base de datos:

Nota

System.Data.SqlClient.SqlError: No se puede encontrar el certificado de servidor con la huella digital '0xCB62FF76463A6BF86E8F769B541BA6483AFC2FF2'. (Microsoft.SqlServer.Smo)

Resolución

Información sobre la actualización acumulativa

SQL Server 2008 Service Pack 1

La corrección para este problema se publicó por primera vez en la actualización acumulativa 10 para SQL Server 2008 Service Pack 1. Para obtener más información acerca de este paquete de actualizaciones acumulativas, 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 1Nota Dado que las compilaciones son acumulativas, cada nueva corrección contiene todas las revisiones y correcciones de seguridad que se incluyeron con la versión de corrección anterior de SQL Server 2008. Microsoft recomienda que se plantee la posibilidad de aplicar la versión de corrección más reciente que contenga esta revisión. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

970365 Las compilaciones de SQL Server 2008 que se publicaron después de SQL Server 2008 Service Pack 1 Se crean revisiones de Microsoft SQL Server 2008 para determinados SQL Server Service Pack. Debe aplicar una revisión de SQL Server 2008 Service Pack 1 a una instalación de SQL Server 2008 Service Pack 1. De forma predeterminada, cualquier revisión que se proporcione en un Service Pack de SQL Server se incluye en el siguiente Service Pack de SQL Server.

SQL Server 2008 Service Pack 2

La corrección para este problema se publicó por primera vez en la actualización acumulativa 1 para SQL Server 2008 Service Pack 2. Para obtener más información acerca de este paquete de actualizaciones acumulativas, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

2289254 Actualización acumulativa 1 para SQL Server 2008 Service Pack 2Nota Dado que las compilaciones son acumulativas, cada nueva corrección contiene todas las revisiones y correcciones de seguridad que se incluyeron con la versión de corrección anterior de SQL Server 2008. Recomendamos que se plantee la posibilidad de aplicar la versión de corrección más reciente que contiene esta revisión. Para 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 de SQL Server 2008 Service Pack 2

SQL Server 2008 R2

La corrección de este problema se publicó por primera vez 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 Dado que las compilaciones son acumulativas, cada nueva corrección contiene todas las revisiones y correcciones de seguridad que se incluyeron con la versión de corrección anterior de SQL Server 2008 R2. Recomendamos que se plantee la posibilidad de aplicar la versión de corrección más reciente que contiene esta revisión. Para 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 de SQL Server 2008 R2

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".

Pasos para reproducir el problema

  1. Cree una clave maestra. A continuación se muestra un ejemplo de código que crea una clave maestra:

    use master
    Create Master Key encryption by password = 'Password01!';
    go
    
  2. Cree u obtenga un certificado protegido por la clave maestra. A continuación se muestra un ejemplo de código que crea un certificado protegido por una clave maestra:

    create certificate cert_testDB_encryptDEK  authorization dbo
    with subject='Certificate to encrypt the DEK of testDB'
    
  3. Cree una nueva base de datos, cree una clave de cifrado de base de datos y, a continuación, proteja la clave con el certificado. A continuación se muestra un ejemplo de código que crea una nueva base de datos, que crea una clave de cifrado de base de datos y, posteriormente, protege la clave mediante un certificado:

    create Database testDB
    use testDB
    Create database encryption key 
    with algorithm=AES_128
    encryption by server certificate cert_testDB_encryptDEK  
    
    
  4. Configure la base de datos para que use el cifrado. A continuación se muestra un ejemplo de código que establece una base de datos para que use el cifrado:

    Alter database testDB set encryption on 
    
    
  5. Deshabilite el cifrado de la base de datos. A continuación se muestra un ejemplo de código que deshabilita el cifrado de una base de datos:

    Alter database testDB set encryption off 
    
    
  6. Haga una copia de seguridad de la base de datos y 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):

Información general sobre TDE Para obtener más información acerca del modelo de servicio incremental para 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 en el equipo de SQL Server para entregar revisiones para problemas detectados

Para obtener más información acerca del esquema de nomenclatura de las actualizaciones de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

822499 Nuevo esquema de nomenclatura de los paquetes de actualizaciones de software de Microsoft SQL Server Para obtener más información acerca de la terminología relativa a las actualizaciones de software de Microsoft, 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 que se usa para describir las actualizaciones de software de Microsoft