Partilhar via


Validar um pacote DAC

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Esta é uma prática recomendada para revisar o conteúdo de um pacote de DAC antes de implantá-lo em produção e também para validar as ações de atualização antes de atualizar um DAC existente. Isso é especialmente válido durante a implantação de pacotes que não foram desenvolvidos em sua organização.

Os métodos de upgrade de um pacote de DAC incluem:

Pacotes de DAC não confiáveis

Recomendamos não implantar um pacote de DAC de origens desconhecidas ou não confiáveis. Esses DACs podem conter código mal-intencionado que possivelmente executarão códigos Transact-SQL inesperados ou provocarão erros ao modificar o esquema. Antes de usar um DAC de uma origem desconhecida ou não confiável, implante-o em uma instância de teste isolada do Mecanismo de Banco de Dados, execute DBCC CHECKDB (Transact-SQL) no banco de dados e examine o código, como procedimentos armazenados ou outro código definido pelo usuário, no banco de dados.

Exibir o conteúdo de um DAC

Há dois mecanismos para visualizar o conteúdo de um pacote de aplicativo da camada de dados (DAC):

  • importar o pacote de DAC para um projeto SQL no SQL Server Developer Tools
  • publicar o pacote de DAC em uma instância de teste

Importar um DAC no SQL Server Developer Tools

  1. Abra o menu Arquivo, selecione Novo e, em seguida, selecione Projeto....

  2. Selecione o modelo de projeto SQL Server e especifique um Nome, um Locale um Nome de solução.

  3. No Gerenciador de Soluções, clique com o botão direito do mouse no nó do projeto e selecione Propriedades....

  4. Na guia Configurações de Projeto , na seção Tipos de Saída , marque a caixa de seleção Aplicativo da Camada de Dados (arquivo .dacpac) e feche a caixa de diálogo de propriedades.

  5. No Gerenciador de Soluções, clique com o botão direito do mouse no nó do projeto e selecione Importar Aplicativo da Camada de Dados....

  6. Use o Gerenciador de Soluções para abrir todos os arquivos no DAC, como a política de seleção de servidor e os scripts de pré e pós-implantação.

  7. Use a Exibição de Esquema para examinar todos os objetos no esquema, especialmente o código em objetos, como funções ou procedimentos armazenados.

Publicar o pacote de DAC em uma instância de teste

Várias ferramentas estão disponíveis para publicar um pacote de DAC em uma instância de teste. A extensão Dacpac do SQL Server para o Azure Data Studio contém o Assistente de Aplicativo da Camada de Dados. Vamos analisar a publicação de um pacote de DAC em uma instância de teste.

  1. Se necessário, implemente uma instância de teste usando o assistente de implantação.

  2. Conecte-se à sua instância de teste no Azure Data Studio e clique com o botão direito do mouse no nó de servidor. Selecione Assistente de aplicativo da camada de dados no menu de contexto.

  3. Na etapa 1 do assistente, selecione Implantar um arquivo .dacpac de aplicativo da camada de dados em uma instância do SQL Server

  4. Na etapa 2 do assistente, insira o local do arquivo e selecione Novo Banco de Dados para o banco de dados de destino. Insira um nome de banco de dados.

  5. Na etapa 3 do assistente, revise o resumo antes de selecionar Implantar.

  6. Após a conclusão da implantação, examine o conteúdo do banco de dados no Pesquisador de Objetos.

  7. OPCIONAL: clique com o botão direito do mouse no banco de dados no Pesquisador de Objetos e selecione Criar projeto a partir do banco de dados para gerar um projeto SQL a partir do banco de dados.

Exibir alterações no banco de dados

Depois que a versão atual de um DAC for implantada para produção, alterações poderão ter sido feitas diretamente no banco de dados associado que podem estar em conflito com o esquema definido em uma nova versão do DAC. Antes de atualizar para uma nova versão do DAC, verifique se foram feitas alterações no banco de dados. Em vários cenários, você pode querer ver a diferença entre um banco de dados e um pacote de DAC. Por exemplo, poderão ter sido feitas alterações diretamente no banco de dados associado que talvez estejam em conflito com o esquema definido em uma nova versão do DAC.

Todos os bancos de dados

Exibir alterações no banco de dados usando a comparação de esquemas

Exibir alterações de banco de dados usando a CLI SqlPackage

A CLI SqlPackage pode ser usada com a ação DeployReport para exibir as diferenças entre um .dacpac e um banco de dados por meio das ações que seriam realizadas se o .dacpac fosse publicado no banco de dados.

Bancos de dados registrados como um aplicativo da camada de dados

Exibir alterações no banco de dados usando um assistente

  1. Execute o assistente para Atualizar Aplicativo da Camada de Dados , especificando o DAC implantado no momento e o pacote de DAC que contém a nova versão do DAC.

  2. Na página Detectar Alteração , examine o relatório das alterações que foram feitas no banco de dados.

  3. Selecione Cancelar se não desejar continuar com a atualização.

  4. Para obter mais informações sobre como usar o assistente, veja Atualizar um aplicativo da camada de dados.

Exibir alterações no banco de dados usando o PowerShell

  1. Crie um objeto de servidor SMO e defina-o como a instância que contém o DAC a ser exibido.

  2. Abra um objeto ServerConnection e conecte-se à mesma instância.

  3. Especifique o nome de DAC em uma variável.

  4. Use o método GetDatabaseChanges() para recuperar um objeto ChangeResults e redirecione o objeto para um arquivo de texto para gerar um relatório simples de objetos novos, excluídos e alterados.

O exemplo a seguir relata todas as alterações no banco de dados que foram feitas em um DAC implantado chamado MyApplication.

## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$srv = get-item .  
  
## Open a Common.ServerConnection to the same instance.  
$serverconnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($srv.ConnectionContext.SqlConnectionObject)  
$serverconnection.Connect()  
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)  
  
## Specify the DAC instance name.  
$dacName  = "MyApplication"  
  
## Generate the change list and save to file.  
$dacChanges = $dacstore.GetDatabaseChanges($dacName) | Out-File -Filepath C:\DACScripts\MyApplicationChanges.txt  

Exibir alterações de banco de dados usando a CLI SqlPackage

A CLI do SqlPackage pode ser usada com a ação DriftReport para exibir as alterações feitas em um banco de dados desde que ele foi registrado pela última vez.

Exibir ações de upgrade

Todos os bancos de dados

Exibir alterações no banco de dados usando a publicação do projeto SQL

  • Usando a extensão Projetos de Banco de Dados SQL no Azure Data Studio, as ações a serem executadas quando um projeto SQL for publicado em um banco de dados podem ser exibidas no Windows, macOS e Linux selecionando "Gerar Script" durante o processo de publicação.

  • Usando o SQL Server Data Tools no Visual Studio, as ações a serem executadas quando um projeto SQL for publicado em um banco de dados podem ser exibidas no Windows como um script de implantação.

Exibir ações de upgrade usando a CLI SqlPackage A CLI SqlPackage pode ser usada com a ação DeployReport para exibir as diferenças entre um .dacpac e um banco de dados por meio das ações que seriam realizadas se o .dacpac fosse publicado no banco de dados.

Bancos de dados registrados como um aplicativo da camada de dados

Antes de usar uma nova versão de um pacote de DAC para atualizar um DAC que foi implantado de um pacote de DAC anterior, você pode gerar um relatório que contém as instruções Transact-SQL a serem executadas durante o upgrade e, depois, examinar as instruções.

Registrar ações de upgrade usando um assistente

  1. Execute o assistente para Atualizar Aplicativo da Camada de Dados , especificando o DAC implantado no momento e o pacote de DAC que contém a nova versão do DAC.

  2. Na página Resumo , examine o relatório das ações de atualização.

  3. Selecione Cancelar se não desejar continuar com a atualização.

  4. Para obter mais informações sobre como usar o assistente, veja Atualizar um aplicativo da camada de dados.

Registrar ações de upgrade usando o PowerShell

  1. Crie um objeto de servidor SMO e defina-o como a instância que contém o DAC implantado.

  2. Abra um objeto ServerConnection e conecte-se à mesma instância.

  3. Use System.IO.File para carregar o arquivo de pacote de DAC.

  4. Especifique o nome de DAC em uma variável.

  5. Use o método GetIncrementalUpgradeScript() para obter uma lista das instruções Transact-SQL que uma atualização executará e redirecione a lista para um arquivo de texto.

  6. Feche o fluxo de arquivos usado para ler o arquivo de pacote de DAC.

O exemplo a seguir relata as instruções Transact-SQL que seriam executadas para atualizar um DAC denominado MyApplication ao esquema definido em um arquivo MyApplication2017.dacpac.

## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$srv = get-item .  
  
## Open a Common.ServerConnection to the same instance.  
$serverconnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($srv.ConnectionContext.SqlConnectionObject)  
$serverconnection.Connect()  
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)  
  
## Load the DAC package file.  
$dacpacPath = "C:\MyDACs\MyApplication2017.dacpac"  
$fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)  
$dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)  
  
## Specify the DAC instance name.  
$dacName  = "MyApplication"  
  
## Generate the upgrade script and save to file.  
$dacstore.GetIncrementalUpgradeScript($dacName, $dacType) | Out-File -Filepath C:\DACScripts\MyApplicationUpgrade.sql  
  
## Close the filestream to the new DAC package.  
$fileStream.Close()  

Comparar DACs

Antes de atualizar um DAC, é recomendável revisar as diferenças nos objetos em nível de banco de dados e instância entre o DAC atual e o novo. Se você não tiver uma cópia do pacote para o DAC atual, poderá extrair um pacote do banco de dados atual.

Se você importar os pacotes de DAC para projetos de DAC no SQL Server Developer Tools, poderá usar a ferramenta de comparação de esquemas para analisar as diferenças entre o dois DACs.

Outra alternativa é desempacotar os DACs em pastas separadas. Você pode usar uma ferramenta de diferenças, como o utilitário WinDiff, para analisar as diferenças.

Confira também

Aplicativos da camada de dados
Implantar um aplicativo da camada de dados
Atualizar um aplicativo da camada de dados