Referencia de la línea de comandos de VSDBCMD.EXE (Implementación e importación del esquema)

Puede utilizar VSDBCMD.EXE para:

  • Importar un esquema de la base de datos de una base de datos activa en un archivo .dbschema

  • Genere un script de implementación a partir de un archivo .dbschema

  • Genere un script de implementación a partir de un archivo .dbschema e implemente ese script en una base de datos de destino

  • Generar un script de implementación comparando dos archivos .dbschema.

Además, puede especificar las opciones para personalizar cómo se implementa o importa su base de datos.

Para obtener más información sobre cómo puede utilizar esta herramienta, vea Cómo: Preparar una base de datos para la implementación desde un símbolo del sistema mediante VSDBCMD.EXE y Cómo: Importar un esquema desde un símbolo del sistema.

Nota importanteImportante

No puede utilizar VSDBCMD.EXE para implementar un proyecto de componente de aplicación de capa de datos (DAC) o importar un esquema en un proyecto DAC.

Opciones generales

Las opciones de la siguiente tabla se aplican a las acciones Implementar e Importar.

Opción

Forma abreviada

¿Obligatorio?

Notas

/Action:{Import|Deploy}

/a:{Import|Deploy}

Especifica si desea importar objetos y valores en un archivo .dbschema o si desea implementar un archivo .dbschema en un servidor o base de datos de destino.

/ConnectionString:"Cadena"

/cs:"Cadena"

No

Especifica la cadena de conexión a la base de datos de destino. Por ejemplo, puede especificar /cs:"Data Source=MyDatabase/SQL2K8;Integrated Security=True;Pooling=False;Initial Catalog=AdventureWorks2008". Para importar un esquema, debe especificar el nombre de la base de datos mediante Initial Catalog. Para obtener más información acerca de la sintaxis para una cadena de conexión, vea Sintaxis de cadena de conexión (ADO.NET).

/DatabaseSchemaProvider:NombreDsp

/dsp:NombreDsp

Especifica el tipo de proveedor de esquema de la base de datos al que se está conectando. Por ejemplo, utilice /dsp:SQL para SQL Server.

@Archivo

No está disponible

No

Puede especificar un archivo de respuesta que contiene una o más opciones en la línea de comandos.

/Quiet[+|-]

/q

No

Especifica si desea suprimir los comentarios detallados de VSDBCMD.

/DeployToDatabase[+|-]

/dd

No

Especifica que desea generar un script de implementación e implementarlo en la base de datos de destino. Si no especifica esta opción, se genera un script de implementación, pero no se implementa ese script.

/ModelFile:NombreArchivo

/model:NombreArchivo

No

Especifica el nombre del archivo .dbschema que desea implementar o que desea crear al importar un esquema. Esto no es necesario si especifica un manifiesto de implementación.

/Properties:NombrePropiedad=ValorPropiedad

/p:NombrePropiedad=ValorPropiedad

No

Especifica un nombre de propiedad y un valor que desea invalidar en un símbolo del sistema. Vea Opciones de implementación y Opciones de importación para las propiedades que son específicas de esas acciones.

Opciones de implementación

Las opciones de la siguiente tabla solo se aplican al implementar un archivo .dbschema.

Opción

Forma abreviada

¿Obligatorio?

Notas

/ManifestFile:NombreArchivo

/manifest:NombreArchivo

No

Especifica el archivo de manifiesto de implementación que se debe utilizar al implementar la base de datos. El manifiesto de implementación se crea en la ruta de acceso de los resultados de implementación al compilar su proyecto de base de datos.

NotaNota
Se producirá un error en la implementación si su archivo de manifiesto de implementación hace referencia a un archivo de script de salida que ya existe y es de solo lectura.

/DeploymentScriptFile:NombreArchivo

/script:NombreArchivo

No

Especifica el nombre que desea dar al script de implementación.

/ExtensionArguments

/ext:Cadena

No

Especifica pares nombre-valor para los parámetros que se pasan a colaboradores de implementación personalizados.

/TargetModelFile: nombreArchivo

/targetmodel: nombreArchivo

No

Especifica un archivo .dbschema de destino que desea comparar con el archivo .dbschema de origen. Utilice esta opción cuando desee generar un script de implementación comparando dos archivos .dbschema. Para obtener más información, vea Comparar esquemas con VSDBCMD.EXE.

Nota

Al crear un script de implementación incremental, los nombres de las bases de datos de origen y destino deben coincidir.

Invalidar las variables SQLCMD individuales en la línea de comandos

Puede utilizar la siguiente sintaxis para invalidar el valor de una única variable SQLCMD:

/p: SqlCmdVariableName = Value

Si especifica un nombre de variable que no se declaró en el archivo .sqlcmdvars, se producirá un error.

Puede especificar variables SQLCMD en tres puntos, que se aplican en el siguiente orden:

  1. En tiempo de diseño, en Database.sqlcmdvars, seleccionado por el manifiesto de implementación.

  2. En la línea de comandos especificando /p:SqlCommandVariablesFile=RutaAcceso

  3. En la línea de comandos especificando un nombre de variable y un valor concretos

El segundo método invalida al primero, y el tercero invalida al segundo y al primero.

Propiedades de implementación comunes

Puede especificar las propiedades en la siguiente tabla al implementar un archivo .dbschema en un símbolo del sistema.

Opción

Valor predeterminado

Notas

/p:AbortOnFirstError={True|False}

True

Especifica si se debe cancelar la implementación cuando se produzca el primer error.

/p:AlwaysCreateNewDatabase={True|False}

False

Especifica si la base de datos se debería actualizar o si se debería quitar y recrear al implementar los cambios.

/p:AnsiNulls={True|False}

Adopta de forma predeterminada el valor de esta configuración en el modelo de origen

Especifica el valor de conexión ANSI_NULLS. Este valor invalida el valor del modelo

/p:AnsiPadding={True|False}

Adopta de forma predeterminada el valor de esta configuración en el modelo de origen

Especifica el valor de conexión ANSI_PADDING. Este valor invalida el valor del modelo.

/p:AnsiWarnings={True|False}

Adopta de forma predeterminada el valor de esta configuración en el modelo de origen

Especifica el valor de conexión ANSI_WARNINGS. Este valor invalida el valor del modelo.

/p:ArithAbort={True|False}

Adopta de forma predeterminada el valor de esta configuración en el modelo de origen

Especifica el valor de conexión ARITH_ABORT. Este valor invalida el valor del modelo.

/p:BlockIncrementalDeploymentIfDataLoss={True|False}

True

Especifica si desea que la implementación se detenga si se podría producir una pérdida de datos.

/p:CheckNewConstraints={True|False}

True

Especifica si, cuando se crean o recrean restricciones, se crearán de forma predeterminada con la opción NOCHECK habilitada. Al final del script de implementación, se agregará un bloque de instrucciones que comprobará todas las restricciones como un conjunto. Estableciendo esta propiedad en True, puede implementar su esquema sin encontrar errores de datos que son producidos por una comprobación o restricción de clave externa en mitad del proceso de implementación difiriendo la verificación de datos al final de su script de implementación.

/p:CollationPreference={UseSourceModelCollation | UseTargetModelCollation }

UseSourceModelCollation

Especifica la intercalación que se utiliza al comparar los modelos de origen y de destino.

/p:CommentOutSetVarDeclarations={True|False}

False

Especifica si desea comentar las instrucciones SETVAR que especifican valores para las variables en el script de implementación. Podría establecer esta propiedad en True si desea utilizar SQLCMD para implementar el script y desea especificar valores para esas variables en el símbolo del sistema.

/p:ConcatNullYieldsNull={True|False}

Adopta de forma predeterminada el valor de esta configuración en el modelo de origen

Especifica el valor de conexión CONCAT_NULL_YIELDS_NULL. Este valor invalida el valor del modelo.

/p:DeployDatabaseProperties={True|False}

True

Especifica si las propiedades de la base de datos se deberían establecer o actualizar como parte del script de implementación.

/p:DeploymentCollationPreference={UseSourceModelCollation|UseTargetModelCollation|DontChangeCollations}

DontChangeCollations

Este valor dicta cómo se administra la intercalación de bases de datos durante la implementación. Hay tres valores posibles: UseSourceModelCollation indica que la intercalación de base de datos de destino estará actualizada si no coincide con la intercalación especificada por el origen. UseTargetModelCollation indica que se debería utilizar la intercalación de base de datos (o servidor) de destino. DontChangeCollations indica que no se debería cambiar la intercalación del servidor.

/p:DeploymentConfigurationFile=nombreArchivo

El archivo .sqldeployment que se especifica en el archivo .deploymanifest.

Especifica el archivo .sqldeployment que desea utilizar al implementar.

/p:DisableAndReenableDdlTriggers={True|False}

True

Especifica si los desencadenadores de lenguaje de definición de datos (DDL) se deshabilitan al principio del proceso de implementación y se vuelven a habilitar al final del proceso de implementación.

/p:DoNotUseAlterAssemblyStatementsToUpdateCLRTypes={True|False}

False

Especifica que la implementación siempre debe quitar y volver a crear un ensamblado si hay alguna diferencia en lugar de emitir una instrucción ALTER ASSEMBLY.

/p:DropConstraintsNotInSource={True|False}

True

Especifica si se quitarán de la base de datos de destino las restricciones que no existen en su proyecto de base de datos al implementar las actualizaciones en esa base de datos.

/p:DropIndexesNotInSource={True|False}

True

Especifica si se quitarán de la base de datos de destino los índices que no existen en su proyecto de base de datos al implementar las actualizaciones en esa base de datos.

/p:EnforceMinimalDependencies={True|False}

False

Especifica si el cuerpo de los procedimientos, las funciones escalares y las funciones con valores de tabla se analizan e interpretan. Si habilita esta configuración, las dependencias incluidas en los cuerpos no se identifican, pero sí los cambios en la definición del objeto. Si establece esta opción en True, puede mejorar el rendimiento, pero se podrían producir problemas durante la implementación si faltan dependencias.

/p:GenerateDatabaseOptions={True|False}

True

Especifica si el script de implementación debería contener instrucciones que establecieron las opciones de base de datos al implementar la base de datos.

/p:GenerateDeployStateChecks={True|False}

True

Especifica si desea que el script de implementación contenga instrucciones que comprueben el estado de la base de datos de destino antes de implementar el esquema de la base de datos.

/p:GenerateDropsIfNotInProject={True|False}

False

Especifica si se deben quitar los objetos de la base de datos de destino que no existen en el proyecto de origen al implementar las actualizaciones en esa base de datos de destino.

/p:IgnoreAnsiNulls={True|False}

False

Especifica si las diferencias en la configuración de valores null ANSI deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnoreAuthorizer={True|False}

False

Especifica si las diferencias en el autorizador deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnoreColumnCollation={True|False}

False

Especifica si las diferencias en las intercalaciones de columnas deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnoreComments={True|False}

False

Especifica si las diferencias en los comentarios deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnoreCryptographicProviderFilePath={True|False}

False

Especifica si las diferencias en la ruta de acceso del archivo del proveedor de servicios criptográficos deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnoreDdlTriggerState={True|False}

False

Especifica si las diferencias en el estado habilitado o deshabilitado de los desencadenadores de lenguaje de definición de datos (DDL) deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnoreDefaultSchema={True|False}

False

Especifica si las diferencias en el esquema predeterminado deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnoreDmlTriggerOrder={True|False}

False

Especifica si las diferencias en el orden de los desencadenadores de lenguaje de manipulación de datos (DML) deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnoreDmlTriggerState={True|False}

False

Especifica si las diferencias en el estado habilitado o deshabilitado de los desencadenadores DML deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnoreExtendedProperties={True|False}

False

Especifica si las diferencias en las propiedades extendidas deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnoreFilegroupPlacement={True|False}

True

Especifica si las diferencias en la colocación de objetos en grupos de archivos deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnoreFillFactor={True|False}

True

Especifica si las diferencias en el factor de relleno del almacenamiento de índices deben omitirse o si debe generarse una advertencia al implementar actualizaciones en una base de datos.

/p:IgnoreIdentitySeed={True|False}

False

Especifica si las diferencias en el valor de inicialización de una columna de identidad deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnoreIncrement={True|False}

False

Especifica si las diferencias en el incremento de una columna de identidad deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnoreIndexOptions={True|False}

False

Especifica si las diferencias en las opciones de índice deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnoreIndexPadding={True|False}

True

Especifica si las diferencias en el relleno de índice deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnoreKeywordCasing={True|False}

True

Especifica si las diferencias en el uso de mayúsculas y minúsculas de palabras clave deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnoreLockHintsOnIndexes={True|False}

False

Especifica si las diferencias en las sugerencias de bloqueo en los índices deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnoreLoginSids={True|False}

False

Especifica si las diferencias en el número de identificación de seguridad (SID) deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnoreObjectPlacementOnPartitionSchema={True|False}

True

Especifica si las diferencias en la asignación de particiones de una tabla o índice particionado en grupos de archivos deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnorePermissions={True|False}

False

Especifica si las diferencias en los permisos deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnoreQuotedIdentifiers={True|False}

False

Especifica si las diferencias en la configuración de identificadores entre comillas deben omitirse o actualizarse al implementar cambios en una base de datos.

/p:IgnoreRoleMembership={True|False}

False

Especifica si las diferencias en la pertenencia a roles de inicios de sesión deben omitirse o actualizarse al implementar actualizaciones en una base de datos.

/p:IgnoreRouteLifetime={True|False}

True

Especifica si las diferencias del período de tiempo durante el que SQL Server conserva la ruta en la tabla de enrutamiento se deberían omitir o actualizar al implementar las actualizaciones en una base de datos.

/p:IgnoreSemicolonBetweenStatements={True|False}

True

Especifica si las diferencias en los caracteres de punto y coma entre las instrucciones Transact-SQL se omitirán o actualizarán al implementar actualizaciones en una base de datos.

/p:IgnoreStatisticsSample={True|False}

True

Especifica si las diferencias en el ejemplo usado para CREATE STATISTICS se omitirán o actualizarán al implementar actualizaciones en una base de datos.

/p:IgnoreTableOptions={True|False}

False

Especifica si las diferencias en las opciones de tabla se omitirán o actualizarán al implementar actualizaciones en una base de datos.

/p:IgnoreUserSettingsObjects={True|False}

False

Especifica si las diferencias en los objetos de configuración de usuario se omitirán o actualizarán al implementar actualizaciones en una base de datos.

/p:IgnoreWhitespace={True|False}

True

Especifica si las diferencias en los espacios en blanco se omitirán o actualizarán al implementar actualizaciones en una base de datos.

/p:IgnoreWithNocheckOnCheckConstraints={True|False}

False

Especifica si las diferencias en el valor de la cláusula WITH NOCHECK para las restricciones CHECK se omitirán o actualizarán al implementar actualizaciones en una base de datos.

/p:IgnoreWithNocheckOnForeignKeys={True|False}

False

Especifica si las diferencias en el valor de la cláusula WITH NOCHECK para las claves externas se omitirán o actualizarán al implementar actualizaciones en una base de datos.

/p:IncludeTransactionalScripts={True|False}

False

Especifica si las instrucciones de transacciones se deben usar cuando sea posible al realizar la implementación de una base de datos.

/p:NumericRoundAbort={True|False}

Adopta de forma predeterminada el valor de esta configuración en el modelo de origen

Especifica el valor de conexión NUMERIC_ROUNDABORT. Este valor invalida el valor del modelo.

/p:PerformDatabaseBackup={True|False}

False

Especifica si se debería hacer una copia de seguridad de la base de datos de destino antes de realizar cualquier cambio.

/p:QuotedIdentifier={True|False}

Adopta de forma predeterminada el valor de esta configuración en el modelo de origen

Especifica el valor de conexión QUOTED_IDENTIFIER. Este valor invalida el valor del modelo.

/p:SingleUserMode={True|False}

False

Especifica si la base de datos se debería poner en modo usuario único durante las actualizaciones.

/p:SqlCommandVariablesFile=NombreArchivo

El archivo .sqlcmdvars que se especifica en el archivo .deploymanifest.

Especifica el archivo .sqlcmdvars que desea utilizar al implementar.

/p:TargetDatabase="Cadena"

No está disponible

Especifica el nombre de la base de datos a la que desea implementar.

/p:TreatVerificationErrorsAsWarnings={True|False}

False

Especifica si los errores detectados durante la comprobación de la implementación deben tratarse como advertencias. La comprobación se realiza en el plan de implementación generado antes de que se ejecute para la base de datos de destino. La comprobación del plan detecta problemas como la pérdida de objetos solo en el destino (como los índices) que deben quitarse para realizar un cambio. La comprobación detectará también las situaciones en las que existen dependencias (como una tabla o vista) debido a una referencia a un proyecto compuesto, pero dichas dependencias no existen en la base de datos de destino. Puede realizar esta comprobación para obtener un listado completo de todos los problemas de implementación y evitar que la implementación se detenga en el primer error.

/p:UnmodifiableObjectWarnings={True|False}

True

Especifica si deben generarse advertencias cuando se encuentran diferencias en objetos que no se pueden modificar como, por ejemplo, si el tamaño o las rutas de acceso son diferentes en un archivo.

/p:VerifyDeployment={True|False}

True

Especifica si las comprobaciones deben realizarse antes de la implementación para que esta no se detenga en caso de que haya problemas que impidan realizar la implementación correctamente. Por ejemplo, la implementación se podría detener si hay claves externas en la base de datos de destino que no existen en el proyecto de base de datos, lo que causará errores durante la implementación.

Puede mostrar una lista completa de propiedades de implementación escribiendo el siguiente comando en un símbolo del sistema:

VSDBCMD /? /a:Deploy /dsp:sql /cs:" ConnectionString "

Propiedades de importación comunes

Las propiedades de la siguiente tabla solo se aplican al importar objetos y valores en un archivo .dbschema.

Opción

Default

Notas

/p:IgnoreExtendedProperties={True|False}

False

Especifica si las propiedades extendidas se deberían omitir o importar.

/p:IgnorePermissions={True|False}

False

Especifica si los permisos se deberían omitir o importar.

NotaNota
El valor predeterminado de este valor difiere del valor predeterminado al importar mediante el Asistente para importar esquemas.

Puede mostrar una lista completa de propiedades de importación escribiendo el siguiente comando en un símbolo del sistema:

VSDBCMD /? /a:Import /dsp:sql /cs:" ConnectionString "

Líneas de comandos de ejemplo para implementar en varios entornos

Puede utilizar VSDBCMD para implementar un archivo .dbschema en varios entornos de destino. En este ejemplo, se implementa EnterpriseDB.dbschema en los entornos de desarrollo, prueba y producción.

Entorno de desarrollo

"%programfiles%\Microsoft Visual Studio 10.0\vstsdb\deploy\vsdbcmd" 
/a:Deploy 
/manifest:EnterpriseDB.deploymanifest 
/p:DeploymentConfigurationFile=Development.sqldeployment 
/p:SqlCommandVariablesFile=Development.sqlcmdvars 
/cs:"Data Source=DEV\sql2008;Integrated Security=true"

Entorno de prueba

"%programfiles%\Microsoft Visual Studio 10.0\vstsdb\deploy\vsdbcmd" 
/a:Deploy 
/manifest:EnterpriseDB.deploymanifest 
/p:DeploymentConfigurationFile=UserTest.sqldeployment 
/p:SqlCommandVariablesFile=UserTest.sqlcmdvars 
/cs:"Data Source=USERTEST\sql2008;Integrated Security=true"

Entorno de producción

"%programfiles%\Microsoft Visual Studio 10.0\vstsdb\deploy\vsdbcmd" 
/a:Deploy 
/manifest:EnterpriseDB.deploymanifest 
/p:DeploymentConfigurationFile=Production.sqldeployment 
/p:SqlCommandVariablesFile=Production.sqlcmdvars 
/cs:"Data Source=PRODUCTION\sql2008;Integrated Security=true"

Para cada entorno, se proporciona la configuración de implementación, el archivo de variables SQLCMD y la cadena de conexión que son específicos del entorno de destino.

Todos los entornos comparten el manifiesto de implementación. El manifiesto de implementación incluye el nombre del archivo .dbschema que desea implementar.

Vea también

Tareas

Cómo: Preparar una base de datos para la implementación desde un símbolo del sistema mediante VSDBCMD.EXE

Conceptos

Generar e implementar bases de datos en un entorno de ensayo o de producción

Información general acerca de la configuración del proyecto de base de datos

Historial de cambios

Fecha

Historial

Motivo

Julio de 2010

Se agregó un ejemplo de una cadena de conexión. Se agregó una descripción de /targetmodelfile.

Comentarios de los clientes.

1 de abril de 2011

Se corrigió el nombre de BlockIncrementalDeploymentIfDataLoss y se agregó una nota sobre la creación de scripts de implementación incremental.

Comentarios de los clientes.