ver una script sacar para importar ejemplos desde datos crear copiar como codigo sql-server database ssms data-tier-applications

sql-server - una - script datos sql server



¿Cómo extraer la base de datos MSSQLServer como.dacpac sin VerifyExtraction? (2)

Quiero extraer un esquema de base de datos de una base de datos MSSQLServer con Server Management Studio. Utilizo el comando Extraer "Extraer aplicación de nivel de datos ..."

En la base de datos hay varias referencias a otra base de datos. Debido a esto me sale el siguiente error.

Error al extraer la base de datos: error en la validación del modelo de esquema para el paquete de datos. Error SQL71562: Error al validar el elemento [dbo]. [X] tiene una referencia no resuelta al objeto [dbo]. [Y]. Las referencias externas no son compatibles al crear un paquete desde esta plataforma.

El problema es que SSMS usa el archivo SQLPackage.exe con el parámetro / p: VerifyExtraction = True . Cuando uso la consola y llamo a SQLPackage.exe sin este parámetro, usa / p: VerifyExtraction = False de forma predeterminada y puedo crear el archivo .dacpac.

¿Hay una manera de configurar SSMS para deshabilitar la verificación?


Tampoco pude encontrar un método que funcione en SSMS (2008 R2 o 2012), pero Visual Studio (2013) con SSDT parece funcionar: Dentro de VS, vaya a SQL Server Object Explorer, conéctese al servidor en cuestión , haga clic con el botón derecho en la base de datos en cuestión, Extraiga la aplicación de nivel de datos y, a continuación, ajuste la Configuración de extracción, una de las cuales es "Verificar extracción". No sé por qué la MS no se basa en SSMS.

Una cosa un tanto extraña que noté al hacer esto, sin embargo, es que VS solo extraerá un .DacPac a través de este método. Incluso cuando elige agregar datos al extracto, la extensión sigue siendo .DacPac. Tenía la impresión de que .DacPacs eran solo para Schema Only, mientras que .BacPacs eran para Schema + Data. Independientemente, después de que VS creara el archivo .DacPac (Schema + Data), SSMS pudo importarlo bien usando el asistente "Implementar nivel de datos ...".


Si no puede usar Visual Studio, puede usar la línea de comandos SqlPackage para extraer el esquema de la base de datos. De forma predeterminada, esto no verifica el esquema (no, no sé por qué el SSMS y la línea de comandos que ofrece tienen valores predeterminados diferentes). SqlPackage.exe se puede encontrar en C:/Program Files (x86)/Microsoft SQL Server/<SQL_VERSION>/DAC/bin .

Por ejemplo, lo siguiente extrae el esquema para MyDatabase de la instancia local de SQL Server y lo envía a un archivo .dacpac en el sistema de archivos local:

sqlpackage /Action:Extract /SourceDatabaseName:"MyDatabase" /SourceServerName:localhost /TargetFile:"C:/SomeDirectory/MyDatabase.dacpac"

Si desea incluir la verificación del esquema en una etapa posterior, puede establecer el indicador explícitamente agregando /p:VerifyExtraction=True a la línea de comando.

La información completa sobre SqlPackage.exe se puede encontrar aquí:

https://msdn.microsoft.com/library/hh550080.aspx