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).
Importante |
---|
|
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. |
Observação |
---|
|
Observação |
---|
|
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. |
Observação |
---|
|
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>