Share via


Uso de MSDeploy con el proveedor dbSqlPackage (en desuso)

Importante

La característica del proveedor dbSqlPackage está en desuso y no es compatible con las versiones actuales de DacFx. Considere la posibilidad de usar SqlPackage (herramienta de línea de comandos DacFx) para los escenarios de implementación de SQL Server y Azure SQL.

DbSqlPackage es un proveedor de MSDeploy que permite interactuar con bases de datos de SQL Server y Azure SQL Database. DbSqlPackage admite las siguientes acciones:

  • Extract: crea un archivo de instantáneas de base de datos (.dacpac) a partir de una base de datos activa de SQL Server o Azure SQL Database.

  • Publicar: actualiza de forma incremental un esquema de la base de datos para coincidir con el esquema de un archivo .dacpac de origen.

  • DeployReport: crea un informe XML de los cambios que realizaría una acción de publicación.

  • Script: crea un script Transact-SQL equivalente al script ejecutado por la acción de publicación.

Para más información sobre DacFx, consulte la documentación sobre la API administrada de DacFx o SqlPackage (herramienta de línea de comandos de DacFx).

Sintaxis de la línea de comandos

MSDeploy con el proveedor dbSqlPackage usa una línea de comandos de la forma siguiente:

  
MSDeploy -verb: MSDeploy-verb -source:dbSqlPackage="Input"[,dbSqlPackage-source-parameters] -dest:dpSqlPackage="Input"[,dbSqlPackage-target-parameters]  

Verbos de MS-Deploy

Especifique los verbos de MS-Deploy con el modificador -verb en la línea de comandos de MS-Deploy. El proveedor dbSqlPackage admite los siguientes verbos de MSDeploy:

Verbo Descripción
volcado Proporciona información, como el nombre, el número de versión y la descripción, acerca de una base de datos de origen contenida en un archivo .dacpac. Especifique la base de datos de origen con el formato siguiente en la línea de comandos:

msdeploy -verb:dump -source:dbSqlPackage="ruta_de_acceso_del_archivo_.dacpac"
sync Especifique las acciones dbSqlPackage usando el formato siguiente en la línea de comandos:

msdeploy -verb:sync -source:dbSqlPackage="input" [,parámetros_de_origen_de_DbSqlPackage] -dest:dbSqlPackage="input" [,parámetros_de_destino_de_DbSqlPackage]

Vea las secciones a continuación para conocer los parámetros de origen y de destino para el verbo sync.

Origen de dbSqlPackage

El proveedor de dbSqlPackage obtiene una entrada que es una cadena de conexión válida de SQL Server o SQL Azure o bien una ruta de acceso a un archivo .dacpac en el disco. La sintaxis para especificar el origen de entrada para el proveedor es la siguiente:

Entrada Valor predeterminado Descripción
-source:dbSqlPackage= {input} N/D input es una cadena de conexión válida de SQL Server o SQL Azure o una ruta de acceso a un archivo .dacpac en el disco.

NOTA: Las únicas propiedades de cadena de conexión que se admiten cuando se usa una cadena de conexión como origen de entrada son InitialCatalog, DataSource, UserID, Password, IntegratedSecurity, Encrypt, TrustServerCertificate y ConnectionTimeout.

Si el origen de entrada es una cadena de conexión a una base de datos activa de SQL Server o Azure SQL Database, dbSqlPackage extraerá una instantánea de base de datos con formato de archivo .dacpac a partir de Azure SQL Database o SQL Server.

Los parámetros de Source son:

Parámetro Valor predeterminado Descripción
Profile:{ string} N/D Especifica la ruta de acceso a un archivo para un perfil de publicación DAC. El perfil define una colección de propiedades y variables que se usarán cuando se genere el archivo .dacpac resultante. El perfil de publicación se pasa al destino y se usa como opciones predeterminadas cuando se lleva a cabo una acción Publish, Script o DeployReport.
DacApplicationName={ string} Nombre de la base de datos Define el nombre de la aplicación que se va a guardar en los metadatos del DACPAC. La cadena predeterminada es el nombre de la base de datos.
DacMajorVersion ={integer} 1 Define la versión principal que se va a guardar en los metadatos del DACPAC.
DacMinorVersion={integer} 0 Define la versión secundaria que se va a guardar en los metadatos del DACPAC.
DacApplicationDescription={ string } N/D Define la descripción de la aplicación que se va a guardar en los metadatos del DACPAC.
ExtractApplicationScopedObjectsOnly={True | False} True Si es True, solo extrae los objetos con ámbito de aplicación del origen. Si es False, extrae tanto los objetos con ámbito de aplicación como los objetos con ámbito diferente al de aplicación.
ExtractReferencedServerScopedElements={True | False} True Si es True, se extraen los objetos de inicio de sesión, de auditoría de servidor y de credencial a los que hacen referencia los objetos de base de datos de origen.
ExtractIgnorePermissions={True | False} False Si es True, omite los permisos de extracción de todos los objetos extraídos; si es False, no los extrae.
ExtractStorage={File|Memory} Archivo Especifica el tipo de almacenamiento de seguridad para el modelo de esquema que se usa durante la extracción.
ExtractIgnoreExtendedProperties={True|False} False Especifica si se deben omitir las propiedades extendidas.
VerifyExtraction = {True|False} False Especifica si el archivo DACPAC que se extrajo debe comprobarse.

Destino de DbSqlPackage

El proveedor de dbSqlPackage acepta una cadena de conexión válida de SQL Server o SQL Azure o bien una ruta de acceso a un archivo .dacpac en el disco como entrada de destino. La sintaxis para especificar el destino de entrada para el proveedor es la siguiente:

Entrada Valor predeterminado Descripción
-dest:dbSqlPackage={input} N/D input es una cadena de conexión válida de SQL Server o SQL Azure o una ruta de acceso completa o parcial a un archivo .dacpac en el disco. Si input es una ruta de acceso a un archivo, no se pueden especificar otros parámetros.

Los parámetros de Destination siguientes se encuentran disponibles para todas las operaciones de dbSqlPackage:

Propiedad Valor predeterminado Descripción
Action={Publish|DeployReport|Script} N/D Parámetro opcional que especifica la acción que se va a llevar a cabo en Destination.
AllowDropBlockingAssemblies ={True | False} False Especifica si la publicación de SqlClr quita los ensamblados de bloqueo como parte del plan de implementación. De forma predeterminada, cualquier ensamblado de bloqueo o de referencia bloquea la actualización de un ensamblado si el ensamblado de referencia debe quitarse.
AllowIncompatiblePlatform={True | False} False Especifica si la acción de publicar debe continuar a pesar de las posibles plataformas de SQL Server incompatibles.
BackupDatabaseBeforeChanges={True | False} False Hace una copia de seguridad de la base de datos antes de implementar ningún cambio.
BlockOnPossibleDataLoss={ True | False} True Especifica si el episodio de publicación se termina si la operación de publicación puede ocasionar la pérdida de datos.
BlockWhenDriftDetected={ True | False} True Especifica si bloquear la actualización de una base de datos cuyo esquema ha dejado de corresponderse con su registro o no está registrada.
CommentOutSetVarDeclarations= {True | False} False Especifica si las declaraciones de variable SETVAR se incluyen entre comentarios en el script de publicación generado. Puede optar por esta opción si piensa usar una herramienta como SQLCMD.exe para especificar los valores de la línea de comandos al publicar.
CompareUsingTargetCollation={ True | False} False Esta configuración determina la forma en que se trata la intercalación de la base de datos durante la implementación; de forma predeterminada, la intercalación de la base de datos de destino se actualizará si no coincide con la especificada por el origen. Cuando se ha establecido esta opción, se usará la intercalación de la base de datos (o servidor) de destino.
CreateNewDatabase={ True | False} False Especifica si la base de datos de destino debe actualizarse o si se va a quitar para volver a crearse al publicar en una base de datos.
DeployDatabaseInSingleUserMode={ True | False} False Si es True, la base de datos se establecerá en modo de usuario único antes de implementarse.
DisableAndReenableDdlTriggers={True | False} True Especifica si los desencadenadores del Lenguaje de definición de datos (DDL) se deshabilitan al principio del proceso de publicación y se vuelven a habilitar al final de la acción de publicación.
DoNotAlterChangeDataCaptureObjects={ True | False} True Si es True, los objetos de captura de datos modificados no se verán alterados.
DoNotAlterReplicatedObjects=( True | False} True Especifica si los objetos que se replican se van a identificar durante la comprobación.
DropConstraintsNotInSource= {True | False} True Especifica si la acción de publicación quita las restricciones que no existen en la instantánea de base de datos (.dacpac) de la base de datos de destino al publicar en una base de datos.
DropDmlTriggersNotInSource= {True | False} True Especifica si la acción de publicación quita los desencadenadores del Lenguaje de manipulación de datos (DML) que no existen en la instantánea de base de datos (.dacpac) de la base de datos de destino al publicar en una base de datos.
DropExtendedPropertiesNotInSource= {True | False} True Especifica si la acción de publicación quita las propiedades extendidas que no existen en la instantánea de base de datos (.dacpac) de la base de datos de destino al publicar en una base de datos.
DropIndexesNotInSource= {True | False} True Especifica si la acción de publicación quita los índices que no existen en la instantánea de base de datos (.dacpac) de la base de datos de destino al publicar en una base de datos.
DropObjectsNotInSource= {True | False} False Especifica si los objetos que no existen en el archivo de instantánea de base de datos (.dacpac) se quitarán de la base de datos de destino al publicar en una base de datos.
DropPermissionsNotInSource= {True | False} False Especifica si la acción de publicación quita los permisos de acción que no existen en la instantánea de base de datos (.dacpac) de la base de datos de destino al publicar en una base de datos.
DropRoleMembersNotInSource= {True | False} False Especifica si la acción de publicación quita los miembros del rol que no existen en la instantánea de base de datos (.dacpac) de la base de datos de destino al publicar en una base de datos.
GenerateSmartDefaults={True | False} False Especifica si SqlPackage.exe proporciona un valor predeterminado automáticamente cuando actualiza una tabla que contiene datos con una columna que no admite valores NULL.
IgnoreAnsiNulls= {True | False} False Especifica si se omitirán o se actualizarán las diferencias en la opción ANSI NULLS al publicar en una base de datos.
IgnoreAuthorizer= {True | False} False Especifica si se omitirán o se actualizarán las diferencias en el autorizador al publicar en una base de datos.
IgnoreColumnCollation= {True | False} False Especifica si se omitirán o se actualizarán las diferencias en la intercalación de columnas al publicar en una base de datos.
IgnoreComments= {True | False} False Especifica si se omitirán o se actualizarán las diferencias en el orden de comentarios al publicar en una base de datos.
IgnoreCryptographicProviderFile= {True | False} True Especifica si se omitirán o se actualizarán las diferencias en la ruta de acceso a los archivos para un proveedor criptográfico al publicar en una base de datos.
IgnoreDdlTriggerOrder= {True | False} False Especifica si se omitirán o se actualizarán las diferencias en el orden de los desencadenadores del Lenguaje de definición de datos (DDL) al publicar en una base de datos.
IgnoreDdlTriggerState={True | False} False Especifica si se omitirán o se actualizarán las diferencias en el estado habilitado o deshabilitado de los desencadenadores DDL al publicar en una base de datos.
IgnoreDefaultSchema={True | False} False Especifica si se omitirán o se actualizarán las diferencias en el esquema predeterminado al publicar en una base de datos.
IgnoreDmlTriggerOrder= {True | False} False Especifica si se omitirán o se actualizarán las diferencias en el orden de los desencadenadores DML al publicar en una base de datos.
IgnoreDmlTriggerState= {True | False} False Especifica si se omitirán o se actualizarán las diferencias en el estado habilitado o deshabilitado de los desencadenadores DML al publicar en una base de datos.
IgnoreExtendedProperties= {True | False} False Especifica si se omitirán o se actualizarán las diferencias en las propiedades extendidas al publicar en una base de datos.
IgnoreFileAndLogFilePath={True | False} True Especifica si se omitirán o se actualizarán las diferencias en la ruta de acceso a los archivos y los archivos de registro al publicar en una base de datos.
IgnoreFilegroupPlacement= {True | False} True Especifica si se omitirán o se actualizarán las diferencias en la colocación de los FILEGROUP al publicar en una base de datos.
IgnoreFileSize= {True | False} True Especifica si se omitirán o se actualizarán las diferencias en los tamaños de los archivos al publicar en una base de datos.
IgnoreFillFactor= {True | False} True Especifica si se omitirán o se actualizarán las diferencias en los factores de relleno al publicar en una base de datos.
Propiedad Valor predeterminado Descripción
IgnoreFullTextCatalogFilePath= {True | False} True Especifica si se omitirán o se actualizarán las diferencias en la ruta de acceso a los archivos de índice de texto completo al publicar en una base de datos.
IgnoreIdentitySeed= {True | False} False Especifica si se omitirán o se actualizarán las diferencias en la inicialización de una columna de identidad al publicar en una base de datos.
IgnoreIncrement= {True | False} False Especifica si se omitirán o se actualizarán las diferencias en el incremento de una columna de identidad al publicar en una base de datos.
IgnoreIndexOptions ={True | False} False Especifica si se omitirán o se actualizarán las diferencias en las opciones de índice al publicar en una base de datos.
IgnoreIndexPadding= {True | False} True Especifica si se omitirán o se actualizarán las diferencias en el relleno de índice al publicar en una base de datos.
IgnoreKeywordCasing= {True | False} True Especifica si se omitirán o se actualizarán las diferencias en las mayúsculas y minúsculas de las palabras clave al publicar en una base de datos.
IgnoreLockHintsOnIndexes= {True | False} False Especifica si se omitirán o se actualizarán las diferencias en las sugerencias de bloqueo o índices al publicar en una base de datos.
IgnoreLoginSids= {True | False} True Especifica si se omitirán o se actualizarán las diferencias en el identificador de seguridad (SID) al publicar en una base de datos.
IgnoreNotForReplication= {True | False} False Especifica si se omitirá o se actualizará la configuración de not-for-replication al publicar en una base de datos.
IgnoreObjectPlacementOnPartitionScheme= {True | False} True Especifica si se omitirá o se actualizará la colocación de un objeto en un esquema de partición al publicar en una base de datos.
IgnorePartitionSchemes= {True | False} False Especifica si se omitirán o se actualizarán las diferencias en los esquemas de partición y las funciones al publicar en una base de datos.
IgnorePermissions= {True | False} False Especifica si se omitirán o se actualizarán las diferencias en los permisos al publicar en una base de datos.
IgnoreQuotedIdentifiers= {True | False} False Especifica si se omitirán o se actualizarán las diferencias en los valores de identificadores entre comillas al publicar en una base de datos.
IgnoreRoleMembership={True | False} False Especifica si se omitirán o se actualizarán las diferencias en las pertenencias a roles de los inicios de sesión al publicar en una base de datos.
IgnoreRouteLifetime= {True | False} True Especifica si se van a omitir o actualizar las diferencias en las pertenencias a roles de los inicios de sesión al publicar en una base de datos.
IgnoreSemicolonBetweenState= {True | False} True Especifica si se omitirán o se actualizarán las diferencias en los puntos y coma entre las instrucciones Transact-SQL al publicar en una base de datos.
IgnoreTableOptions= {True | False} False Especifica si se omitirán o se actualizarán las diferencias en las opciones de tabla al publicar en una base de datos.
IgnoreUserSettingsObjects= {True | False} False Especifica si se omitirán o se actualizarán las diferencias en las opciones de usuario al publicar en una base de datos.
IgnoreWhitespace= {True | False} True Especifica si se omitirán o se actualizarán las diferencias en los espacios en blanco al publicar en una base de datos.
IgnoreWithNocheckOnCheckConstraints={True | False} False Especifica si se omitirán o se actualizarán las diferencias en el valor de la cláusula WITH NOCHECK para las restricciones CHECK al publicar en una base de datos.
IgnoreWithNocheckOnForeignKeys={True | False} False Especifica si se omitirán o se actualizarán las diferencias en el valor de la cláusula WITH NOCHECK para las claves externas al publicar en una base de datos.
IncludeCompositeObjects= {True | False} False Especifica si se incluyen todos los elementos compuestos como parte de una sola operación de publicación.
IncludeTransactionalScripts={True | False} False Especifica si se usan instrucciones transaccionales siempre que sea posible al publicar en una base de datos.
NoAlterStatementsToChangeClrTypes={True | False} False Especifica que la acción de publicación debe quitar y volver a crear siempre un ensamblado en lugar de emitir una instrucción ALTER ASSEMBLY.
PopulateFilesOnFilegroups= {True | False} True Especifica si también se crea un archivo nuevo al crear un nuevo FileGroup en la base de datos de destino.
RegisterDataTierApplication={True | False} False Especifica si el esquema está registrado con el servidor de base de datos.
ScriptDatabaseCollation {True | False} False Especifica si se omitirán o se actualizarán las diferencias en la intercalación de la base de datos al publicar en una base de datos.
ScriptDatabaseCompatibility= {True | False} True Especifica si se omitirán o se actualizarán las diferencias en la compatibilidad de la base de datos al publicar en una base de datos.
ScriptDatabaseOptions= {True | False} True Especifica si se establecen o se actualizan las propiedades de la base de datos de destino al publicar en una base de datos.
ScriptFileSize={True | False} False Controla si el tamaño se especifica cuando se agrega un archivo a un grupo de archivos.
ScriptNewConstraintValidation= {True | False} True Especifica si se comprueban todas las restricciones como un conjunto al final de la publicación, evitando los errores en los datos que ocasiona un restricción de clave externa o CHECK a la mitad de una acción de publicación. Si esta opción es False, las restricciones se publican sin comprobar los datos correspondientes.
ScriptDeployStateChecks={True | False} False Especifica si se generan instrucciones en el script de publicación para comprobar que los nombres del servidor y de la base de datos coinciden con los especificados en el proyecto de base de datos.
ScriptRefreshModule= {True | False} True Especifica si incluir instrucciones de actualización al final del script de publicación.
Storage={File|Memory} Memoria Especifica la forma en que se almacenan los elementos cuando se genera el modelo de base de datos. Por motivos de rendimiento, el valor predeterminado es Memory (Memoria). Cuando se trata de bases de datos grandes, se requiere un almacenamiento de seguridad de archivos.
TreatVerificationErrorsAsWarnings= {True | False} False Especifica si se deben tratar como advertencias los errores que se producen durante la comprobación de la publicación. La comprobación se realiza con el plan de implementación generado antes de que el plan se ejecute con la base de datos de destino. El plan de comprobación detecta problemas, como la pérdida de objetos solo en el destino (por ejemplo, índices) que deben quitarse para hacer un cambio. La comprobación también detecta situaciones en las que existen dependencias (como tablas o vistas) debido a una referencia a un proyecto compuesto, pero no existen en la base de datos de destino. Podría elegir tratar los errores de comprobación como advertencias para obtener una lista completa de los problemas en lugar de permitir que la acción de publicación se detenga cuando se produce el primer error.
UnmodifiableObjectWarnings= {True | False} True Especifica si generar advertencias cuando se encuentren diferencias en los objetos que no se puedan modificar (por ejemplo, si el tamaño de archivo o las rutas de acceso a los archivos son diferentes para un archivo).
VerifyCollationCompatibility={True | False} True Especifica si se comprobó la compatibilidad de intercalación.
VerifyDeployment={True | False} True Especifica si realizar comprobaciones antes de la publicación que detengan la acción de publicación si hay problemas que podrían impedir que la publicación se realizara correctamente. Por ejemplo, su acción de publicación podría detenerse si obtiene errores durante la publicación porque las claves externas en la base de datos de destino no existen en el proyecto de base de datos.

Nota

Los parámetros de destino que se especifiquen invalidarán a aquellos especificados en el perfil de publicación de origen.

Nota

Es preciso especificar las variables y los valores de SQLCMD en el parámetro de origen del perfil de publicación, ya que no se pueden especificar como un parámetro de destino.

Los parámetros de Destination siguientes solo están disponibles para las operaciones DeployReport y Script:

Parámetro Valor predeterminado Descripción
OutputPath={ string } N/D Parámetro opcional que indica a dbSqlPackage que cree el archivo de resultados DeployReport o el archivo de resultados Script SQL en la ubicación del disco que especifica string. Esta acción sobrescribe los scripts que residen actualmente en la ubicación que indica la cadena.

Nota

Si no se proporciona el parámetro OutputPath para una acción DeployReport o Script, se devuelven los resultados en forma de mensaje.

Ejemplos

Esta es una sintaxis de ejemplo para una operación Extract mediante dbSqlPackage:

MSDeploy.exe -verb:sync -source:dbSqlPackage="<source connection string>",<source parameter> -dest:dbSqlPackage="<target dacpac file path>"  

Esta es una sintaxis de ejemplo para una operación Publish mediante dbSqlPackage:

MSDeploy.exe -verb:sync -source:dbSqlPackage="<source dacpac file path>" -dest:dbSqlPackage="<target SQL Server/SQL Azure connection string>",Action=Publish,<destination parameters>  

Esta es una sintaxis de ejemplo para una operación DeployReport mediante dbSqlPackage:

MSDeploy.exe -verb:sync -source:dbSqlPackage="<source dacpac file path>" -dest:dbSqlPackage="<target SQL Server/SQL Azure connection string>",Action=DeployReport,OutputPath="<path to output XML file>",<destination parameters>  

Esta es una sintaxis de ejemplo para una operación Script mediante dbSqlPackage:

MSDeploy.exe -verb:sync -source:dbSqlPackage="<source dacpac file path>" -dest:dbSqlPackage="<target SQL Server/SQL Azure connection string>",Action=Script,OutputPath="<path to output sql script>",<destination parameters>