Referência de linha de comando para VSDBCMD.EXE (implantação e importação de esquema)

Você pode usar o VSDBCMD.EXE para:

  • Importar um esquema de banco de dados de um banco de dados ao vivo para um arquivo de .dbschema

  • Gerar um script de implantação de um arquivo de .dbschema

  • Gerar um script de implantação de um arquivo de .dbschema e implantar o script em um banco de dados de destino

  • Gere um script de implantação, comparando dois arquivos de .dbschema.

Além disso, você pode especificar opções para personalizar como o seu banco de dados é implantado ou importado.

Para obter mais informações sobre como você pode usar essa ferramenta, consulte Como: Prepare um banco de dados para a implantação de um Prompt de comando usando o VSDBCMD.EXE e Como: Importar um esquema a partir de um Prompt de comando.

Observação importanteImportante

Não é possível usar VSDBCMD.EXE para implantar um projeto de componente (DAC) do aplicativo de camada de dados ou para importar um esquema para um projeto DAC.

Opções gerais

As opções na tabela a seguir se aplicam às ações de importação e implantar.

Opção

Forma abreviada

Necessário?

Anotações

/ Ação: {Import|Implantar}

/a: {Import|Implantar}

Sim

Especifica se você deseja importar os objetos e configurações para um arquivo de .dbschema ou se você deseja implantar um arquivo de .dbschema em um servidor de destino ou o banco de dados.

/ ConnectionString: "seqüência de caracteres"

/ cs: "seqüência de caracteres"

Não

Especifica a seqüência de conexão ao banco de dados de destino. Por exemplo, você pode especificar /cs:"Data Source=MyDatabase/SQL2K8;Integrated Security=True;Pooling=False;Initial Catalog=AdventureWorks2008". Para importar um esquema, você deve especificar o nome do banco de dados usando o Initial Catalog. Para obter mais informações sobre a sintaxe para uma seqüência de conexão, consulte Connection String Syntax (ADO.NET).

/ DatabaseSchemaProvider:DspName

/DSP:DspName

Sim

Especifica o tipo de provedor de esquema de banco de dados ao qual você está se conectando. Por exemplo, use /dsp:SQL para SQL Server.

@File

Não disponível

Não

Você pode especificar um arquivo de resposta que contém uma ou mais opções de linha de comando.

/Quiet [+ |-]

/q

Não

Especifica se você deseja suprimir comentários detalhados de VSDBCMD.

/ O DeployToDatabase [+ |-]

/dd

Não

Especifica que você deseja gerar um script de implantação e implantá-lo no banco de dados de destino. Se você não especificar esta opção, você gerar um script de implantação, mas que o script não está sendo implantado.

/ ModelFile:nome de arquivo

/ modelo:nome de arquivo

Não

Especifica o nome do arquivo .dbschema que você deseja implantar ou que você deseja criar quando você importa um esquema. Não é necessário se você especificar um manifesto de implantação.

/ Propriedades:PropertyName=PropertyValue

p:PropertyName=PropertyValue

Não

Especifica um nome de propriedade e um valor que você deseja substituir no prompt de comando. Consulte Opções de implantação e Opções de importação para propriedades que são específicas para essas ações.

Opções de implantação

As opções na tabela a seguir se aplicam somente quando você implanta um arquivo .dbschema.

Opção

Forma abreviada

Necessário?

Anotações

/ ManifestFile:nome de arquivo

/ manifesto:nome de arquivo

Não

Especifica o arquivo de manifesto de implantação para usar quando você implanta o banco de dados. O manifesto de implantação é criado no caminho de saída de compilação quando você compila seu projeto de banco de dados.

ObservaçãoObservação
Implantação falhará se o seu arquivo de manifesto de implantação faz referência a um arquivo de script de saída que já existe e é somente leitura.

/ DeploymentScriptFile:nome de arquivo

/ script:nome de arquivo

Não

Especifica o nome que você deseja dar ao script de implantação.

/ ExtensionArguments

/ext:seqüência de caracteres

Não

Especifica os pares nome/valor para os parâmetros são passados para colaboradores de implantação personalizada.

/ TargetModelFile: Nome do arquivo

/targetmodel: Nome do arquivo

Não

Especifica um arquivo de .dbschema de destino que você deseja comparar com o arquivo de origem .dbschema. Use esta opção quando desejar gerar um script de implantação, comparando dois arquivos de .dbschema. Para obter mais informações, consulte Compare Schemas by using VSDBCMD.EXE.

Substituição de variáveis SQLCMD individuais na linha de comando

Você pode usar a sintaxe a seguir para substituir o valor de uma única variável SQLCMD:

**/p:SqlCmdVariableName=**valor

Se você especificar um nome de variável não foi declarado no arquivo .sqlcmdvars, ocorrerá um erro.

Você pode especificar variáveis SQLCMD em três pontos, que são aplicadas na seguinte ordem:

  1. Em tempo de design, em Database.sqlcmdvars, apontado pelo manifesto de .deployment

  2. Na linha de comando, especificando o /p:SqlCommandVariablesFile =Filepath

  3. Na linha de comando, especificando um nome de variável específico e valor

O segundo método substitui a primeira e a terceira substitui o segundo e o primeiro.

Propriedades comuns de implantação

Você pode especificar as propriedades na tabela a seguir, quando você implanta um arquivo de .dbschema em um prompt de comando.

Opção

Valor padrão

Anotações

/p:AbortOnFirstError = {True |False}

True

Especifica se a implantação deve ser cancelada quando o primeiro erro ocorrer.

/p:AlwaysCreateNewDatabase = {True |False}

Falso

Especifica se o banco de dados deve ser atualizado ou se devem ser descartado e recriado quando você implanta as alterações.

/p:AnsiNulls = {True |False}

O padrão é o valor dessa configuração no modelo de origem

Especifica a configuração de conexão de ANSI_NULLS. Essa configuração substitui o valor do modelo

/p:AnsiPadding = {True |False}

O padrão é o valor dessa configuração no modelo de origem

Especifica a configuração de conexão de ANSI_PADDING. Essa configuração substitui o valor do modelo.

/p:AnsiWarnings = {True |False}

O padrão é o valor dessa configuração no modelo de origem

Especifica a configuração de conexão ANSI_WARNINGS. Essa configuração substitui o valor do modelo.

/p:ArithAbort = {True |False}

O padrão é o valor dessa configuração no modelo de origem

Especifica a configuração de conexão de ARITH_ABORT. Essa configuração substitui o valor do modelo.

/p:BlockIncrementalDeployIfDataLoss = {True |False}

True

Especifica se você deseja que a implantação será interrompido se poderá ocorrer perda de dados.

/p:CheckNewConstraints = {True |False}

True

Especifica se, quando as restrições são criadas ou recriadas, ele serão criados com a opção NOCHECK por padrão. No final do script de implantação, um bloco de instruções será adicionado que irá verificar todas as restrições como um conjunto. Definindo essa propriedade como True, você pode implantar o seu esquema sem encontrar dados de verificação de erros são causados por uma verificação ou a restrição de chave estrangeira no meio do processo de implantação, adiando os dados até o final do seu script de implantação.

/p:CollationPreference = {UseSourceModelCollation | UseTargetModelCollation}

UseSourceModelCollation

Especifica a intercalação que é usada ao comparar os modelos de origem e destino.

/p:CommentOutSetVarDeclarations = {True |False}

Falso

Especifica se você deseja que as declarações de SETVAR especificam valores para variáveis ser comentados no script de implantação. Você pode definir essa propriedade como True se desejar usar o SQLCMD para implantar o script e você deseja especificar valores para essas variáveis no prompt de comando.

/p:ConcatNullYieldsNull = {True |False}

O padrão é o valor dessa configuração no modelo de origem

Especifica a configuração de conexão de CONCAT_NULL_YIELDS_NULL. Essa configuração substitui o valor do modelo.

/p:DeployDatabaseProperties = {True |False}

True

Especifica se as propriedades do banco de dados devem ser definidas ou atualizadas como parte do script de implantação.

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

DontChangeCollations

Essa configuração determina como o agrupamento de banco de dados é tratado quando durante a implantação. Há três valores possíveis: UseSourceModelCollation indica que o agrupamento de banco de dados de destino será atualizado se não coincide com o agrupamento especificado pela origem. UseTargetModelCollation indica que o agrupamento de banco de dados (ou servidor) de destino deve ser usado. DontChangeCollations indica que o agrupamento do servidor não deve ser alterado.

/p:DeploymentConfigurationFile =nome de arquivo

O arquivo de .sqldeployment que é especificado no arquivo .deploymanifest.

Especifica o arquivo de .sqldeployment que você deseja usar quando você implanta.

/p:DisableAndReenableDdlTriggers = {True |False}

True

Especifica se gatilhos Data Definition Language (DDL) são desabilitados no início do processo de implantação e reabilitados ao final do processo de implantação.

/p:DoNotUseAlterAssemblyStatementsToUpdateCLRTypes = {True |False}

Falso

Especifica a implantação deve descartar e recriar um assembly, se houver uma diferença em vez de emitir uma instrução ALTER ASSEMBLY sempre.

/p:DropConstraintsNotInSource = {True |False}

True

Especifica se as restrições que não existem em seu projeto de banco de dados serão descartadas do banco de dados de destino quando você implanta atualizações ao banco de dados.

/p:DropIndexesNotInSource = {True |False}

True

Especifica se os índices que não existem em seu projeto de banco de dados serão descartados do banco de dados de destino quando você implanta atualizações ao banco de dados.

/p:EnforceMinimalDependencies = {True |False}

Falso

Especifica se os corpos dos procedimentos, funções escalares e funções com valor de tabela são analisados e interpretados. Se você habilitar essa configuração, dependências dentro de corpos não são identificadas, mas as alterações na definição do objeto serão identificadas. Definindo essa opção como True, você pode melhorar o desempenho, mas as dependências perdidas podem causar problemas quando você implanta.

/p:GenerateDatabaseOptions = {True |False}

True

Especifica se o script de implantação deve conter instruções que defina as opções de banco de dados quando você implanta o banco de dados.

/p:GenerateDeployStateChecks = {True |False}

True

Especifica se você deseja que o script de implantação contêm instruções que verificar o estado do banco de dados de destino antes de implantar o esquema de banco de dados.

/p:GenerateDropsIfNotInProject = {True |False}

Falso

Especifica se os objetos no banco de dados de destino que não existem no projeto de origem ao implantar as atualizações desse banco de dados de destino de soltar.

/p:IgnoreAnsiNulls = {True |False}

Falso

Especifica se diferenças na configuração ANSI Nulls devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreAuthorizer = {True |False}

Falso

Especifica se diferenças no Authorizer devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreColumnCollation = {True |False}

Falso

Especifica se diferenças nos agrupamentos de colunas devem ser ignorados ou atualizados ao implantar atualizações ao banco de dados.

/p:IgnoreComments = {True |False}

Falso

Especifica se diferenças nos comentários devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreCryptographicProviderFilePath = {True |False}

Falso

Especifica se diferenças no caminho de arquivo para o provedor criptográfico devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreDdlTriggerState = {True |False}

Falso

Especifica se diferenças no estado habilitado ou desabilitado de gatilhos Data Definition Language (DDL) devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreDefaultSchema = {True |False}

Falso

Especifica se diferenças no esquema padrão devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreDmlTriggerOrder = {True |False}

Falso

Especifica se diferenças na ordem de gatilhos Data Manipulation Language (DML) devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreDmlTriggerState = {True |False}

Falso

Especifica se diferenças no estado habilitado ou desabilitado de gatilhos DML devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreExtendedProperties = {True |False}

Falso

Especifica se diferenças nas propriedades estendidas devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreFilegroupPlacement = {True |False}

True

Especifica se diferenças no posicionamento de objetos em grupos de arquivos devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreFillFactor = {True |False}

True

Especifica se diferenças no fator de preenchimento para armazenamento de índices devem ser ignoradas ou se um aviso deve ser emitido ao implantar atualizações ao banco de dados.

/p:IgnoreIdentitySeed = {True |False}

Falso

Especifica se diferenças na semente para uma coluna identidade devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreIncrement = {True |False}

Falso

Especifica se diferenças no incremento para uma coluna identidade devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreIndexOptions = {True |False}

Falso

Especifica se diferenças nas opções de índice devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreIndexPadding = {True |False}

True

Especifica se diferenças no preenchimento de índices devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreKeywordCasing = {True |False}

True

Especifica se diferenças na capitalização de palavras-chave devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreLockHintsOnIndexes = {True |False}

Falso

Especifica se diferenças nas dicas de bloqueio em índices devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreLoginSids = {True |False}

Falso

Especifica se diferenças no número de identificação de segurança (SID) devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreObjectPlacementOnPartitionSchema = {True |False}

True

Especifica se diferenças no mapeamento de partições para uma tabela particionada ou índice para grupos de arquivos devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnorePermissions = {True |False}

Falso

Especifica se diferenças nas permissões devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreQuotedIdentifiers = {True |False}

Falso

Especifica se diferenças na configuração de identificadores entre aspas devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreRoleMembership = {True |False}

Falso

Especifica se diferenças na associação de função de logins devem ser ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreRouteLifetime = {True |False}

True

Especifica se as diferenças na quantidade de tempo que SQL Server mantém a rota no roteamento tabela deve ser ignorada ou atualizada quando você implanta atualizações a um banco de dados.

/p:IgnoreSemicolonBetweenStatements = {True |False}

True

Especifica se diferenças na ponto e vírgula entre Transact-SQL instruções serão ignoradas ou atualizadas quando você implanta atualizações para um banco de dados.

/p:IgnoreStatisticsSample = {True |False}

True

Especifica se diferenças no exemplo usado para CREATE STATISTICS serão ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreTableOptions = {True |False}

Falso

Especifica se diferenças nas opções de tabela serão ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreUserSettingsObjects = {True |False}

Falso

Especifica se diferenças nos objetos de configuração de usuário serão ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreWhitespace = {True |False}

True

Especifica se diferenças em espaços em branco serão ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreWithNocheckOnCheckConstraints = {True |False}

Falso

Especifica se diferenças no valor da cláusula WITH NOCHECK para restrições de verificação serão ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IgnoreWithNocheckOnForeignKeys = {True |False}

Falso

Especifica se diferenças no valor da cláusula WITH NOCHECK para chaves estrangeiras serão ignoradas ou atualizadas ao implantar atualizações ao banco de dados.

/p:IncludeTransactionalScripts = {True |False}

Falso

Especifica se instruções transacionais devem ser usados onde for possível ao implantar ao banco de dados.

/p:NumericRoundAbort = {True |False}

O padrão é o valor dessa configuração no modelo de origem

Especifica a configuração de conexão de NUMERIC_ROUNDABORT. Essa configuração substitui o valor do modelo.

/p:PerformDatabaseBackup = {True |False}

Falso

Especifica se deve ser feito o backup do banco de dados de destino antes de qualquer alteração.

/p:QuotedIdentifier = {True |False}

O padrão é o valor dessa configuração no modelo de origem

Especifica a configuração de conexão QUOTED_IDENTIFIER. Essa configuração substitui o valor do modelo.

/p:SingleUserMode = {True |False}

Falso

Especifica se o banco de dados deve ser colocado em modo de usuário único durante atualizações.

/p:SqlCommandVariablesFile =nome de arquivo

O arquivo de .sqlcmdvars que é especificado no arquivo .deploymanifest.

Especifica o arquivo de .sqlcmdvars que você deseja usar quando você implanta.

/p:TargetDatabase = "seqüência de caracteres"

Não disponível

Especifica o nome do banco de dados ao qual você deseja implantar.

/p:TreatVerificationErrorsAsWarnings = {True |False}

Falso

Especifica se os erros encontrados durante a verificação de implantação devem ser tratados como avisos. A verificação é executada contra o plano de implantação gerado antes que o plano é executado no seu banco de dados de destino. Verificação de plano detecta problemas como, por exemplo, a perda de objetos somente de destino, como, por exemplo, índices, o que devem ser eliminados para fazer uma alteração. Verificação também irá detectar situações onde existem devido a uma referência a um projeto composto de dependências, como, por exemplo, uma tabela ou modo de exibição, mas não existem no banco de dados de destino. Você pode optar por fazer isso para obter uma lista completa de todos os problemas de implantação, em vez de implantação interromper no primeiro erro.

/p:UnmodifiableObjectWarnings = {True |False}

True

Especifica se avisos devem ser gerados quando diferenças forem encontradas em objetos que não podem ser modificados, por exemplo, se o tamanho de arquivo ou caminho de arquivo for diferente para um arquivo.

/p:VerifyDeployment = {True |False}

True

Especifica se as verificações devem ser executadas antes da implantação irá parar a implantação, se os problemas estão presentes podem bloquear a implantação bem-sucedida. Por exemplo, a implantação pode parar se você tiver chaves estrangeiras do banco de dados de destino que não existem no projeto de banco de dados e o que causará erros quando você implanta.

Você pode exibir uma lista completa das propriedades de implantação, digitando o seguinte comando em um prompt de comando:

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

Propriedades comuns de importação

As propriedades na tabela a seguir se aplicam somente quando você importa objetos e configurações para um arquivo de .dbschema.

Opção

Padrão

Anotações

/p:IgnoreExtendedProperties = {True |False}

Falso

Especifica as propriedades estendidas devem ser ignoradas ou importadas.

/p:IgnorePermissions = {True |False}

Falso

Especifica as permissões devem ser ignoradas ou importadas.

ObservaçãoObservação
O valor padrão dessa configuração é diferente do padrão quando você importar usando o Assistente de importação de esquema.

Você pode exibir uma lista completa das propriedades de importação, digitando o seguinte comando em um prompt de comando:

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

Linhas de exemplo de comando para implantar em vários ambientes

Você pode usar VSDBCMD para implantar um arquivo de .dbschema em vários ambientes de destino. Neste exemplo, você pode implantar EnterpriseDB.dbschema em desenvolvimento, testes e ambientes de produção.

Ambiente de Desenvolvimento

"%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"

Ambiente de teste

"%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"

Ambiente de produção

"%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 ambiente, você pode fornecer a configuração de implantação, o arquivo de variáveis SQLCMD e a seqüência de conexão são específicos do ambiente de destino.

Todos os ambientes de compartilham o manifesto de implantação. O manifesto de implantação inclui o nome do arquivo .dbschema que você deseja implantar.

Consulte também

Tarefas

Como: Prepare um banco de dados para a implantação de um Prompt de comando usando o VSDBCMD.EXE

Conceitos

Criar e implantar os bancos de dados para um ambiente de produção ou de preparo

Uma visão geral das configurações de projeto de banco de dados

Histórico de alterações

Date

History

Motivo

Julho de 2010

Adicionado um exemplo de uma seqüência de conexão. Descrição adicional do /targetmodelfile.

Comentários do cliente.