Validar un paquete DAC

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Es aconsejable revisar el contenido de un paquete DAC antes de implementarlo en producción y validar las acciones de actualización antes de actualizar una DAC existente. Esto es especialmente aconsejable al implementar paquetes que no se desarrollaron en su organización.

Los métodos para actualizar un paquete DAC incluyen:

Paquetes de DAC que no son de confianza

Se recomienda no implementar un paquete DAC desde orígenes desconocidos o que no sean de confianza. Es posible que estos DAC contengan código malintencionado que podría ejecutar código Transact-SQL no deseado o provocar errores al modificar el esquema. Antes de usar una DAC de un origen desconocido o que no sea de confianza, impleméntela en una instancia de prueba aislada del motor de base de datos, ejecute DBCC CHECKDB (Transact-SQL) en la base de datos y examine también el código, como los procedimientos almacenados u otro código definido por el usuario, en la base de datos.

Ver el contenido de una DAC

Hay dos mecanismos para ver el contenido de un paquete de aplicación de capa de datos (DAC).

  • importar el paquete DAC a un proyecto SQL en las herramientas de SQL Server Developer.
  • publicación del paquete DAC en una instancia de prueba

Ver una DAC en las herramientas de SQL Server Developer

  1. Abra el menú Archivo, seleccione Nuevo y, después, Proyecto....

  2. Seleccione la plantilla de proyecto de SQL Server y especifique los valores de Nombre, Ubicacióny Nombre de solución.

  3. En el Explorador de soluciones, haga clic con el botón derecho en el nodo y seleccione Propiedades....

  4. En la pestaña Configuración de proyecto , en la sección Tipos de salida , active la casilla Aplicación de capa de datos (archivo .dacpac) y, después, cierre el cuadro de diálogo de propiedades.

  5. En el Explorador de soluciones, haga clic con el botón derecho en el nodo de proyecto y seleccione Importar aplicación de capa de datos....

  6. Use el Explorador de soluciones para abrir todos los archivos de la DAC, como la directiva de selección de servidor y los scripts previos y posteriores a la implementación.

  7. Use la Vista de esquema para revisar todos los objetos en el esquema, especialmente el código en objetos, como funciones o procedimientos almacenados.

Publicación del paquete DAC en una instancia de prueba

Hay varias herramientas disponibles para publicar un paquete DAC en una instancia de prueba. La extensión Dacpac de SQL Server para Azure Data Studio contiene el Asistente para aplicaciones de capa de datos. Veremos cómo publicar un paquete DAC en una instancia de prueba.

  1. Si es necesario, implemente una instancia de prueba mediante el Asistente para la implementación.

  2. Conéctese a la instancia de prueba en Azure Data Studio y haga clic con el botón derecho en el nodo del servidor. Seleccione Asistente para aplicaciones de capa de datos en el menú contextual.

  3. En el paso 1 del asistente, seleccione Implementar un archivo .dacpac de aplicación de capa de datos en una instancia de SQL Server.

  4. En el paso 2 del asistente, escriba la ubicación del archivo y seleccione Nueva base de datos para la base de datos de destino. Especifique un nombre para la base de datos.

  5. En el paso 3 del asistente, revise el resumen antes de seleccionar Implementar.

  6. Una vez completada la implementación, revise el contenido de la base de datos en el Explorador de objetos.

  7. OPCIONAL: haga clic con el botón derecho en la base de datos en el Explorador de objetos y seleccione Crear proyecto a partir de la base de datos para generar un proyecto SQL a partir de la base de datos.

Ver los cambios de la base de datos

Después de que la versión actual de una DAC se haya implementado en producción, los cambios que se pueden haber realizado directamente en la base de datos asociada pueden estar en conflicto con el esquema definido en una nueva versión de la DAC. Antes de actualizar a una nueva versión de la DAC, compruebe si estos cambios se han realizado en la base de datos. En varios escenarios, es posible que desee ver la diferencia entre una base de datos y un paquete DAC. Por ejemplo, pueden haberse realizado cambios directamente en la base de datos asociada que podrían entrar en conflicto con el esquema definido en una nueva versión del DAC.

Todas las bases de datos

Visualización de los cambios de la base de datos mediante la comparación de esquemas

Visualización de los cambios de la base de datos mediante la CLI de SqlPackage

La CLI de SqlPackage se puede usar con la acción DeployReport para ver las diferencias entre un .dacpac y una base de datos mediante las acciones que se realizarían si el archivo .dacpac se publicara en la base de datos.

Bases de datos registradas como una aplicación de capa de datos

Ver los cambios de la base de datos mediante un asistente

  1. Ejecute el asistente Actualizar aplicación de capa de datos , y especifique la DAC implementada actualmente y el paquete DAC que contiene la nueva versión de la DAC.

  2. En la página Detectar cambio , revise el informe de los cambios que se han realizado en la base de datos.

  3. Seleccione Cancelar si no desea continuar con la actualización.

  4. Para obtener más información sobre cómo usar el asistente, vea Actualizar una aplicación de capa de datos.

Ver los cambios de las bases de datos mediante PowerShell

  1. Cree un objeto SMO Server y establézcalo en la instancia que contiene la DAC que se va a ver.

  2. Abra un objeto ServerConnection y conéctese a la misma instancia.

  3. Especifique el nombre de DAC en una variable.

  4. Use el método GetDatabaseChanges() para recuperar un objeto ChangeResults y canalícelo a un archivo de texto para generar un informe simple de objetos nuevos, eliminados y cambiados.

El ejemplo siguiente informa de los cambios de base de datos que se hayan realizado en una DAC implementada con el nombre MyApplication.

## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$srv = get-item .  
  
## Open a Common.ServerConnection to the same instance.  
$serverconnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($srv.ConnectionContext.SqlConnectionObject)  
$serverconnection.Connect()  
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)  
  
## Specify the DAC instance name.  
$dacName  = "MyApplication"  
  
## Generate the change list and save to file.  
$dacChanges = $dacstore.GetDatabaseChanges($dacName) | Out-File -Filepath C:\DACScripts\MyApplicationChanges.txt  

Visualización de los cambios de la base de datos mediante la CLI de SqlPackage

La CLI de SqlPackage puede utilizarse con la acción DriftReport para ver los cambios realizados en una base de datos desde la última vez que se registró.

Ver las acciones de actualización

Todas las bases de datos

Visualización de los cambios de la base de datos mediante la publicación del proyecto SQL

Visualización de acciones de actualización mediante la CLI de SqlPackage La CLI de SqlPackage se puede usar con la acción DeployReport para ver las diferencias entre un .dacpac y una base de datos mediante las acciones que se realizarían si el .dacpac se publicara en la base de datos.

Bases de datos registradas como una aplicación de capa de datos

Antes de usar una versión nueva de un paquete DAC para actualizar una DAC que se implementó a partir de un paquete DAC anterior, puede generar un informe que contenga las instrucciones de Transact-SQL que se ejecutarán durante la actualización y, después, revisar las instrucciones.

Acciones de actualización de informe mediante un asistente

  1. Ejecute el asistente Actualizar aplicación de capa de datos , y especifique la DAC implementada actualmente y el paquete DAC que contiene la nueva versión de la DAC.

  2. En la página Resumen , revise el informe de las acciones de actualización.

  3. Seleccione Cancelar si no desea continuar con la actualización.

  4. Para obtener más información sobre cómo usar el asistente, vea Actualizar una aplicación de capa de datos.

Acciones de actualización de informe mediante PowerShell

  1. Cree un objeto SMO Server y establézcalo en la instancia que contiene la DAC implementada.

  2. Abra un objeto ServerConnection y conéctese a la misma instancia.

  3. Use System.IO.File para cargar el archivo de paquete DAC.

  4. Especifique el nombre de DAC en una variable.

  5. Use el método GetIncrementalUpgradeScript() para obtener una lista de las instrucciones Transact-SQL que ejecutaría una actualización y canalice dicha lista a un archivo de texto.

  6. Cierra la secuencia de archivos usada para leer el archivo de paquete DAC.

En el siguiente ejemplo, se proporcionan instrucciones Transact-SQL que se ejecutan para actualizar una DAC denominada MyApplication en el esquema definido en un archivo MyApplication2017.dacpac.

## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$srv = get-item .  
  
## Open a Common.ServerConnection to the same instance.  
$serverconnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($srv.ConnectionContext.SqlConnectionObject)  
$serverconnection.Connect()  
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)  
  
## Load the DAC package file.  
$dacpacPath = "C:\MyDACs\MyApplication2017.dacpac"  
$fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)  
$dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)  
  
## Specify the DAC instance name.  
$dacName  = "MyApplication"  
  
## Generate the upgrade script and save to file.  
$dacstore.GetIncrementalUpgradeScript($dacName, $dacType) | Out-File -Filepath C:\DACScripts\MyApplicationUpgrade.sql  
  
## Close the filestream to the new DAC package.  
$fileStream.Close()  

Comparar las DAC

Antes de actualizar una DAC, es aconsejable revisar las diferencias en la base de datos y los objetos en el nivel de instancia entre la DAC actual y la nueva. Si no tiene una copia del paquete de la DAC actual, puede extraer un paquete de la base de datos actual.

Si importa ambos paquetes DAC en proyectos DAC en SQL Server Developer Tools, puede usar la herramienta de comparación de esquemas para analizar las diferencias entre las dos DAC.

O bien, desempaquete las DAC en carpetas independientes. A continuación, puede usar una herramienta de diferenciación, como la utilidad WinDiff, para analizar las diferencias.

Consulte también

Aplicaciones de capa de datos
Implementar una aplicación de capa de datos
Actualizar una aplicación de capa de datos