Partilhar via


Usando MSDeploy com o provedor do dbSqlPackage

 

O DbSqlPackage é um provedor do MSDeploy que permite interagir com bancos de dados do SQL Server/SQL Azure.O DbSqlPackage dá suporte às seguintes ações:

  • Extract: cria um arquivo de instantâneo de banco de dados (.dacpac) de bancos de dados do SQL Server ou do SQL Azure.

  • Publish: atualiza um esquema de banco de dados incrementalmente para que corresponda ao esquema de um arquivo .dacpac de origem.

  • DeployReport: cria um relatório XML das alterações que teriam sido feitas por uma ação de publicação.

  • Script: cria um script Transact-SQL equivalente ao script executado pela ação Publish.

Para obter mais informações sobre DACFx, consulte a documentação da API gerenciada do DACFx em https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dac.aspx ou SqlPackage.exe (ferramenta de linha de comando do DACFx).

System_CAPS_ICON_important.jpg Importante


O recurso de provedor dbSqlPackage será removido na próxima versão principal do Visual Studio.Para obter informações sobre como fazer a publicação do banco de dados com a Implantação da Web, consulte o provedor dbDacFx para obter a publicação de banco de dados Incremental.

Sintaxe da linha de comando

O MSDeploy com o provedor do dbSqlPackage usa uma linha de comando do seguinte formato:

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

Verbos do MS-Deploy

Você especifica verbos do MS-Deploy usando a opção –verb na linha de comando do MS-DeployO provedor do dbSqlPackage dá suporte aos seguintes verbos do MSDeploy:

Verbo Descrição
dump Fornece informações, que incluem o nome, o número da versão e a descrição, sobre um banco de dados de origem contido em um arquivo .dacpac.Especifique o banco de dados de origem usando o seguinte formato na linha de comando:

msdeploy –verb:dump –source:dbSqlPackage=”.dacpac-file-path
sync Especifica as ações do dbSqlPackage usando o seguinte formato na linha de comando:

msdeploy –verb:sync –source:dbSqlPackage=”input” [,DbSqlPackage-source-parameters] -dest:dbSqlPackage=”input” [,DbSqlPackage-destination-parameters]

Consulte as seções abaixo para obter os parâmetros válidos de origem e destino para o verbo de sincronização.

Origem do dbSqlPackage

O provedor do dbSqlPackage usa uma entrada que é uma cadeia de conexão válida do SQL Server/SQL Azure ou um caminho para um arquivo .dacpac no disco.A sintaxe para especificar a fonte de entrada para o provedor é a seguinte:

Entrada Padrão Descrição
-source:dbSqlPackage={input} N/A input é uma cadeia de conexão válida do SQL Server ou do SQL Azure ou um caminho para um arquivo .dacpac no disco. Note: As únicas propriedades da cadeia de conexão com suporte ao usar uma cadeia de conexão como fonte de entrada são InitialCatalog, DataSource, UserID, Password, IntegratedSecurity, Encrypt, TrustServerCertificate e ConnectionTimeout.

Se sua fonte de entrada for uma cadeia de conexão para um banco de dados SQL Server/SQL Azure ativo, o dbSqlPackage extrairá um instantâneo de banco de dados (na forma de um arquivo .dacpac) em um banco de dados SQL Server/SQL Azure ativo.

Os parâmetros Source são:

Parâmetro Padrão Descrição
Profile:{ string} N/D Especifica o caminho de um arquivo para um perfil de publicação do DAC.O perfil define uma coleção de propriedades e variáveis para serem usadas ao gerar o dacpac resultante.O perfil de publicação é passado para o destino e usado como as opções padrão ao realizar uma ação Publish, Script ou DeployReport.
DacApplicationName={ string } Nome do banco de dados Define o nome do aplicativo a ser armazenado nos metadados do DACPAC.A cadeia de caracteres padrão é o nome do banco de dados.
DacMajorVersion ={integer} 1 Define a versão principal a ser armazenada nos metadados do DACPAC.
DacMinorVersion={integer} 0 Define a versão secundária a ser armazenada nos metadados do DACPAC.
DacApplicationDescription={ string } N/D Define a descrição do aplicativo a ser armazenada nos metadados do DACPAC.
ExtractApplicationScopedObjectsOnly={True | False} True Se True, extrairá apenas objetos com escopo do aplicativo da origem.Se False, extrairá os objetos com escopo de aplicativo e os objetos sem escopo de aplicativo.
ExtractReferencedServerScopedElements={True | False} True Se for True, extrairá logon, auditoria de servidor e objetos de credencial referenciados pelos objetos do banco de dados de origem.
ExtractIgnorePermissions={True | False} False Se for True, ignorará permissões de extração para todos os objetos extraídos. Se for False, não extrairá.
ExtractStorage={File|Memory} File Especifica o tipo de armazenamento de backup para o modelo de esquema usado durante a extração.
ExtractIgnoreExtendedProperties={True|False} False Especifica se as propriedades estendidas devem ser ignoradas.
VerifyExtraction = {True|False} False Especifica se o dacpac extraído deve ser verificado.

Destino do DbSqlPackage

O provedor do dbSqlPackage aceita uma cadeia de conexão válida do SQL Server/SQL Azure ou um caminho para um arquivo .dacpac no disco como a entrada de destino.A sintaxe para especificar o destino para o provedor é a seguinte:

Entrada Padrão Descrição
-dest:dbSqlPackage={input} N/D input é uma cadeia de conexão válida do SQL Server ou do SQL Azure ou um caminho completo ou parcial para um arquivo .dacpac no disco.Se input for um caminho de arquivo, nenhum outro parâmetro poderá ser especificado.

Os parâmetros de Destination a seguir estão disponíveis para todas as operações do dbSqlPackage:

Propriedade Padrão Descrição
Action={Publish|DeployReport|Script} N/D Os parâmetros opcionais que especificam a ação a ser realizada no Destination.
AllowDropBlockingAssemblies ={True | False} False Especifica se a publicação do SqlClr cancela assemblies de bloqueio como parte do plano de implantação.Por padrão, os assemblies de bloqueio ou de referência bloquearão uma atualização de assembly se o assembly de referência precisar ser cancelado.
AllowIncompatiblePlatform={True | False} False Especifica se a ação de publicação deve avançar apesar de plataformas do SQL Server potencialmente incompatíveis.
BackupDatabaseBeforeChanges={True | False} False Faz backup do banco de dados antes de implantar as alterações.
BlockOnPossibleDataLoss={ True | False} True Especifica se o episódio de publicação será terminado se a operação de publicação puder provocar perda de dados.
BlockWhenDriftDetected={ True | False} True Especifica se deve bloquear a atualização de um banco de dados cujo esquema não mais corresponda seu registro ou não esteja registrado.
CommentOutSetVarDeclarations= {True | False} False Especifica se as declarações da variável SETVAR são comentadas no script de publicação gerado.Você pode optar por fazer isso se planejar usar uma ferramenta como o SQLCMD.exe para especificar os valores na linha de comando ao publicar.
CompareUsingTargetCollation={ True | False} False Essa configuração dita como o agrupamento do banco de dados é tratado durante a implantação; por padrão, o agrupamento do banco de dados de destino será atualizado se não corresponder ao agrupamento especificado pela origem.Quando essa opção estiver configurada, o agrupamento do banco de dados de destino (ou do servidor) deverá ser usado.
CreateNewDatabase={ True | False} False Especifica se o banco de dados de destino deve ser atualizado ou removido e recriado quando um banco de dados é publicado.
DeployDatabaseInSingleUserMode={ True | False} False Se for True, o banco de dados será definido como o Modo de Usuário Único antes da implantação.
DisableAndReenableDdlTriggers={True | False} True Especifica se os gatilhos da DDL (linguagem de definição de dados) são desabilitados no início do processo de publicação e reabilitados no final da ação de publicação.
DoNotAlterChangeDataCaptureObjects={ True | False} True Se for True, os objetos do Change Data Capture não serão alterados.
DoNotAlterReplicatedObjects=( True | False} True Especifica se os objetos que forem replicados são identificados durante a verificação.
DropConstraintsNotInSource= {True | False} True Especifica se a ação de publicação cancela restrições não existentes no instantâneo de banco de dados (.dacpac) do banco de dados de destino quando você publica em um banco de dados.
DropDmlTriggersNotInSource= {True | False} True Especifica se a ação de publicação cancela gatilhos DML (linguagem de manipulação de dados) não existentes no instantâneo de banco de dados (.dacpac) do banco de dados de destino quando você publica em um banco de dados.
DropExtendedPropertiesNotInSource= {True | False} True Especifica se a ação de publicação cancela propriedades estendidas não existentes no instantâneo de banco de dados (.dacpac) do banco de dados de destino quando você publica em um banco de dados.
DropIndexesNotInSource= {True | False} True Especifica se a ação de publicação cancela índices não existentes no instantâneo de banco de dados (.dacpac) do banco de dados de destino quando você publica em um banco de dados.
DropObjectsNotInSource= {True | False} False Especifica se os objetos que não existem no arquivo do instantâneo de banco de dados (.dacpac) serão removidos do banco de dados de destino quando você publicar em um banco de dados.
DropPermissionsNotInSource= {True | False} False Especifica se a ação de publicação cancela permissões não existentes no instantâneo de banco de dados (.dacpac) do banco de dados de destino quando você publica em um banco de dados.
DropRoleMembersNotInSource= {True | False} False Especifica se a ação de publicação cancela membros de função não existentes no instantâneo de banco de dados (.dacpac) do banco de dados de destino quando você publica em um banco de dados.
GenerateSmartDefaults={True | False} False Especifica se o SqlPackage.exe fornece automaticamente um valor padrão quando atualiza uma tabela que contém dados com uma coluna que não permite valores nulos.
IgnoreAnsiNulls= {True | False} False Especifica se as diferenças na configuração do ANSI NULLS devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreAuthorizer= {True | False} False Especifica se as diferenças no Autorizador devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreColumnCollation= {True | False} False Especifica se as diferenças no agrupamento de colunas devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreComments= {True | False} False Especifica se as diferenças na ordem de comentários devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreCryptographicProviderFile= {True | False} True Especifica se as diferenças no caminho do arquivo de um provedor criptográfico devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreDdlTriggerOrder= {True | False} False Especifica se as diferenças na ordem de gatilhos DDL (linguagem de definição de dados) devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreDdlTriggerState={True | False} False Especifica se as diferenças no estado habilitado ou desabilitado de gatilhos DDL devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreDefaultSchema={True | False} False Especifica se as diferenças no esquema padrão devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreDmlTriggerOrder= {True | False} False Especifica se as diferenças na ordem de gatilhos DML devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreDmlTriggerState= {True | False} False Especifica se as diferenças no estado habilitado ou desabilitado de gatilhos DML devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreExtendedProperties= {True | False} False Especifica se as diferenças nas propriedades estendidas devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreFileAndLogFilePath={True | False} True Especifica se as diferenças nos caminhos de arquivos e arquivos de log devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreFilegroupPlacement= {True | False} True Especifica se as diferenças no posicionamento de FILEGROUPs devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreFileSize= {True | False} True Especifica se as diferenças nos tamanhos dos arquivos devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreFillFactor= {True | False} True Especifica se as diferenças nos fatores de preenchimento devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
Propriedade Padrão Descrição
IgnoreFullTextCatalogFilePath= {True | False} True Especifica se as diferenças no caminho para arquivos de índice de texto completo devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreIdentitySeed= {True | False} False Especifica se as diferenças na semente de uma coluna de identidade devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreIncrement= {True | False} False Especifica se as diferenças no incremento de uma coluna de identidade devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreIndexOptions ={True | False} False Especifica se as diferenças nas opções de índice devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreIndexPadding= {True | False} True Especifica se as diferenças no preenchimento de índice devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreKeywordCasing= {True | False} True Especifica se as diferenças em maiúsculas e minúsculas de palavra-chave devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreLockHintsOnIndexes= {True | False} False Especifica se as diferenças nas dicas de bloqueio em índices devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreLoginSids= {True | False} True Especifica se as diferenças no SID (identificador de segurança) devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreNotForReplication= {True | False} False Especifica se as diferenças na configuração de não replicação devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreObjectPlacementOnPartitionScheme= {True | False} True Especifica se as diferenças no posicionamento de um objeto em um esquema de partição devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnorePartitionSchemes= {True | False} False Especifica se as diferenças nos esquemas e funções de partição devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnorePermissions= {True | False} False Especifica se as diferenças nas permissões devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreQuotedIdentifiers= {True | False} False Especifica se as diferenças nas configurações do identificador entre aspas devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreRoleMembership={True | False} False Especifica se as diferenças nas associações de logons à função devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreRouteLifetime= {True | False} True Especifica se as diferenças nas associações de logons à função devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreSemicolonBetweenState= {True | False} True Especifica se as diferenças em pontos-e-vírgulas entre instruções Transact-SQL devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreTableOptions= {True | False} False Especifica se as diferenças nas opções de tabela devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreUserSettingsObjects= {True | False} False Especifica se as diferenças nas opções de configuração do usuário devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreWhitespace= {True | False} True Especifica se as diferenças no espaço em branco devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreWithNocheckOnCheckConstraints={True | False} False Especifica se as diferenças no valor da cláusula WITH NOCHECK para restrições de verificação devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IgnoreWithNocheckOnForeignKeys={True | False} False Especifica se as diferenças no valor da cláusula WITH NOCHECK para chaves estrangeiras devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
IncludeCompositeObjects= {True | False} False Especifica se todos os elementos compostos devem ser incluídos como parte de uma única operação de publicação.
IncludeTransactionalScripts={True | False} False Especifica se as instruções transacionais devem ser usadas sempre que possível quando você publica em um banco de dados.
NoAlterStatementsToChangeClrTypes={True | False} False Especifica se a publicação sempre deverá cancelar e recriar um assembly se houver uma diferença em vez de emitir uma instrução ALTER ASSEMBLY.
PopulateFilesOnFilegroups= {True | False} True Especifica se um novo arquivo também é criado quando você cria um novo FileGroup no banco de dados de destino.
RegisterDataTierApplication={True | False} False Especifica se o esquema está registrado com o servidor de banco de dados.
ScriptDatabaseCollation {True | False} False Especifica se as diferenças no agrupamento de banco de dados devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
ScriptDatabaseCompatibility= {True | False} True Especifica se as diferenças na compatibilidade de banco de dados devem ser ignoradas ou atualizadas quando você publica em um banco de dados.
ScriptDatabaseOptions= {True | False} True Especifica se as propriedades do banco de dados de destino devem ser definidas ou atualizadas quando você publica em um banco de dados.
ScriptFileSize={True | False} False Controla se o tamanho é especificado ao adicionar um arquivo a um grupo de arquivos.
ScriptNewConstraintValidation= {True | False} True Especifica se todas as restrições devem ser verificadas como um conjunto no final da publicação, evitando erros de dados provocados por uma restrição de verificação ou de chave estrangeira no meio da ação de publicação.Se essa opção for False, as restrições serão publicadas sem verificar os dados correspondentes.
ScriptDeployStateChecks={True | False} False Especifica se as instruções devem ser geradas no script de publicação para verificar se os nomes de banco de dados e de servidor correspondem aos nomes especificados no projeto de banco de dados.
ScriptRefreshModule= {True | False} True Especifica se as instruções de atualização devem ser incluídas no final do script de publicação.
Storage={File|Memory} Memory Especifica como os elementos são armazenados ao criar o modelo de banco de dados.Por razões de desempenho, o padrão é Memory.Para bancos de dados muito grandes, é necessário realizar armazenamento de backup de arquivos.
TreatVerificationErrorsAsWarnings= {True | False} False Especifica se os erros que ocorrem durante a verificação de publicação como avisos devem ser tratados.A verificação é executada em relação ao plano de implantação gerado antes de o plano ser executado em relação ao banco de dados de destino.A verificação do plano detecta problemas, como a perda de objetos apenas de destino (por exemplo, índices), que devem ser cancelados para fazer uma alteração.A verificação também detecta situações onde existem dependências (como tabelas ou exibições) devido a uma referência a um projeto composto, mas não existem no banco de dados de destino.Você pode optar por tratar erros de verificação como avisos para obter uma lista completa de problemas, em vez de permitir que a ação de publicação seja interrompida quando ocorre o primeiro erro.
UnmodifiableObjectWarnings= {True | False} True Especifica se devem ser gerados avisos quando diferenças forem localizadas em objetos que não podem ser modificados (por exemplo, se o tamanho ou os caminhos de arquivo forem diferentes para um arquivo).
VerifyCollationCompatibility={True | False} True Especifica se a compatibilidade de agrupamento é verificada.
VerifyDeployment={True | False} True Especifica se devem ser executadas verificações antes da publicação, que interromperão a ação de publicação se estiverem presentes problemas que possam bloquear uma publicação bem-sucedida.Por exemplo, sua ação de publicação poderá ser interrompida se você obtiver erros durante a publicação porque chaves estrangeiras no banco de dados de destino não existem no projeto de banco de dados.
System_CAPS_ICON_note.jpg Observação


Os parâmetros de destino especificados serão sobrescritos pelos especificados no perfil Publish de origem.

System_CAPS_ICON_note.jpg Observação


As variáveis e os valores do SQLCMD devem ser especificados no parâmetro de origem do perfil de publicação, porque não podem ser especificados como um parâmetro de destino.

Os parâmetros Destination a seguir estão disponíveis somente para operações de DeployReport e Script:

Parâmetro Padrão Descrição
OutputPath={ string } N/D Parâmetro opcional que instrui o dbSqlPackage para criar o arquivo de saída XML do DeployReport ou arquivo de saída de SQL do Script no local do disco especificado por cadeia de caracteres.Essa ação substitui todos os scripts que residem atualmente no local fornecido por cadeia de caracteres.
System_CAPS_ICON_note.jpg Observação


Se o parâmetro OutputPath não for fornecido para uma ação DeployReport ou Script, a saída será retornada como uma mensagem.

Exemplos

Veja a seguir uma sintaxe de exemplo para uma operação Extract usando dbSqlPackage:

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

Veja a seguir uma sintaxe de exemplo para uma operação Publish usando dbSqlPackage:

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

Veja a seguir uma sintaxe de exemplo para uma operação DeployReport usando 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>  

Veja a seguir uma sintaxe de exemplo para uma operação Script usando 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>