Atualizar um aplicativo da camada de dados
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
Use o Assistente para Atualizar Aplicativo da Camada de Dados ou um script do Windows PowerShell para alterar o esquema e as propriedades de um DAC (aplicativo da camada de dados) implantado no momento para coincidir com o esquema e as propriedades definidos em uma nova versão do DAC.
Antes de começar: Escolher opções de atualização de DAC, Limitações e Restrições, Pré-requisitos, Segurança, Permissões
Para atualizar um DAC, usando: o Assistente para Atualizar o Aplicativo da Camada de Dados, PowerShell
Antes de começar
Uma atualização de DAC é um processo no local que altera o esquema do banco de dados existente para corresponder ao esquema definido em uma nova versão do DAC. A nova versão do DAC é fornecida em um arquivo de pacote DAC. Para obter mais informações sobre como criar um pacote de DAC, veja Aplicativos da camada de dados.
Escolhendo Opções de Upgrade de DAC
Há quatro opções de atualização para uma atualização no local:
Ignorar Perda de Dados - Se for True, o upgrade continuará mesmo que algumas operações resultem em perda de dados. Se for False, essas operações encerrarão o upgrade. Por exemplo, se uma tabela no banco de dados atual não estiver presente no esquema do novo DAC, a tabela será descartada se True for especificado. A configuração padrão é True.
Bloquear se Houver Alterações - Se for True, o upgrade será encerrado se o esquema do banco de dados for diferente do definido no DAC anterior. Se False, a atualização continuará mesmo que sejam detectadas alterações. A configuração padrão é False.
Reverter se Houver Falha - Se for True, o upgrade será incluído em uma transação; se forem encontrados erros, será feita uma tentativa de reversão. Se for False, todas as alterações serão confirmadas à medida que forem feitas e, se ocorrerem erros, talvez seja necessário restaurar um backup anterior do banco de dados. A configuração padrão é False.
Ignorar Validação da Política - Se for True, a política de seleção do servidor DAC não será avaliada. Se for False, a política será avaliada, e o upgrade será encerrado se houver um erro de validação. A configuração padrão é False.
Limitações e Restrições
Os upgrades de DAC só podem ser executados no Banco de dados SQL ou no SQL Server 2005 (9.x) Service Pack 4 (SP4) ou posterior.
Pré-requisitos
É prudente fazer um backup completo do banco de dados antes de iniciar o upgrade. Talvez seja necessário restaurar o backup se um upgrade encontrar um erro e não for possível reverter todas as alterações.
Antes de iniciar o upgrade, há várias ações que você deve executar para validar o pacote de DAC e as ações de upgrade. Para obter mais informações sobre como executar essas verificações, consulte Validate a DAC Package.
Recomendamos que você evite um upgrade usando um pacote de DAC de fontes desconhecidas ou não confiáveis. Esses pacotes 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 pacote de uma origem desconhecida ou não confiável, desempacote o DAC e examine o código, como procedimentos armazenados ou outro código definido pelo usuário.
Se tiverem sido feitas alterações no banco de dados atual após a implantação da última versão do DAC, algumas dessas alterações poderão impedir a conclusão bem-sucedida do upgrade ou poderão ser removidas pelo upgrade. Você deve primeiro gerar e examinar um relatório de revisão que inclua as alterações feitas no banco de dados.
É prudente gerar uma lista das alterações de esquema que o upgrade realizará e revisar essa lista para verificar se há problemas.
O nome do aplicativo no pacote de DAC deve corresponder ao nome do aplicativo do DAC implantado no momento. Por exemplo, se o DAC atual tiver um nome de aplicativo GeneralLedger, você só poderá atualizar usando um pacote de DAC com um nome de aplicativo GeneralLedger.
Certifique-se de que haja espaço suficiente no log de transações para registrar todas as modificações.
Segurança
Para melhorar a segurança, os logons de autenticação do SQL Server são armazenados em um pacote do DAC sem senha. Quando o pacote é implantado ou atualizado, o logon é criado como um logon desabilitado com uma senha gerada. Para habilitar os logons, conecte-se usando um logon com permissão a ALTER ANY LOGIN e use ALTER LOGIN para habilitar o logon e atribuir uma nova senha a ser comunicada ao usuário. Isso não é necessário para logons de Autenticação do Windows porque suas senhas não são gerenciadas pelo SQL Server.
Permissões
Um DAC pode ser atualizado somente pelos membros das funções de servidor fixas sysadmin ou serveradmin ou por logons que estejam na função de servidor fixa dbcreator e tenham permissões ALTER ANY LOGIN. O logon deve ser o proprietário do banco de dados existente. A conta interna do administrador de sistema do SQL Server chamada sa também pode atualizar um DAC.
Usar o Assistente para Atualizar o Aplicativo da Camada de Dados
Para atualizar um DAC usando um assistente
No Pesquisador de Objetos, clique com o botão direito do mouse no banco de dados que contém o DAC a ser atualizado.
Expanda a opção Tarefas e selecione a opção Atualizar Aplicativos da Camada de Dados.
Conclua as etapas das caixas de diálogo do assistente:
Página de Introdução
Esta página descreve as etapas para atualizar um aplicativo da camada de dados.
Não mostrar esta página novamente. - Marque a caixa de seleção para interromper a exibição da página no futuro.
Avançar> – Segue para a página Selecionar Pacote.
Cancelar – Encerra o assistente sem atualizar o DAC.
Página Selecionar Pacote
Use essa página para especificar o pacote de DAC que contém a nova versão do aplicativo da camada de dados. A página faz a transição por dois estados.
Selecionar o pacote de DAC
Use o estado inicial da página para escolher o pacote de DAC a ser implantado. O pacote de DAC deve ser um arquivo de pacote de DAC válido e deve ter uma extensão .dacpac. O nome do aplicativo de DAC no pacote de DAC deve ser igual ao nome do aplicativo do DAC atual.
Pacote de DAC – Especifique o caminho e o nome de arquivo do pacote de DAC que contém a nova versão do aplicativo da camada de dados. Você pode selecionar o botão Procurar no lado direito da caixa para procurar o local do pacote de DAC.
Nome do Aplicativo – Uma caixa somente leitura que exibe o nome do aplicativo de DAC atribuído quando o DAC foi criado ou extraído de um banco de dados.
Versão – Uma caixa somente leitura que exibe a versão atribuída quando o DAC foi criado ou extraído de um banco de dados.
Descrição – Uma caixa somente leitura que exibe a descrição escrita quando o DAC foi criado ou extraído de um banco de dados.
< Anterior – Retorna à página Introdução .
Próximo >: exibe uma barra de progresso enquanto o assistente confirma se o arquivo selecionado é um pacote de DAC válido.
Cancelar – Encerra o assistente sem atualizar o DAC.
Validar o pacote de DAC
Exibe uma barra de progresso enquanto o assistente confirma se o arquivo selecionado é um pacote de DAC válido. O assistente avançará para a página Revisar Política se o pacote de DAC for validado. Se o arquivo não for um pacote de DAC válido, o assistente permanecerá na página Selecionar Pacote de DAC. Selecione outro pacote de DAC válido ou cancele o assistente e gere um novo pacote de DAC.
Validando o conteúdo do DAC – A barra de progresso que relata o status atual do processo de validação.
< Anterior: retorna ao estado inicial da página Selecionar Pacote.
Próximo >: avança para a versão final da página Selecionar Pacote.
Cancelar – Encerra o assistente sem implantar o DAC.
Página Detectar Alterações
Use essa página para registrar os resultados da verificação do assistente em busca de alterações feitas no banco de dados que tornam seu esquema diferente da definição de esquema armazenada nos metadados do DAC em msdb
. Por exemplo, se as instruções CREATE, ALTER ou DROP tiverem sido usadas para adicionar, alterar ou remover objetos do banco de dados após a implantação original do DAC. A página exibe primeiro uma barra de progresso e, em seguida, informa os resultados da análise.
Detectando alteração, isso pode demorar alguns minutos – Exibe uma barra de progresso enquanto o assistente verifica as diferenças entre o esquema atual do banco de dados e os objetos na definição do DAC.
Resultados da detecção de alterações: indica que a análise foi concluída, e os resultados são informados abaixo.
O banco de dados DatabaseName não foi alterado – O assistente não detectou diferenças nos objetos definidos no banco de dados e em suas contrapartes na definição do DAC.
O banco de dados DatabaseName foi alterado – O assistente detectou alterações entre os objetos no banco de dados e em suas contrapartes na definição do DAC.
Continuar, apesar da possível perda de alterações: especifique que você está ciente de que alguns dos objetos ou dados no banco de dados atual não estarão presentes no novo banco de dados e que está disposto a continuar com o upgrade. Somente selecione este botão se você tiver analisado o relatório de alterações e entender as etapas que deve executar para transferir manualmente os objetos ou os dados necessários no novo banco de dados. Se não tiver certeza, selecione o botão Salvar Relatório para salvar o relatório de alterações e, em seguida, selecione Cancelar. Analise o relatório, faça um planejamento de como transferir os objetos e os dados necessários após a conclusão da atualização e reinicie o assistente.
Salvar Relatório: selecione o botão para salvar um relatório das alterações que o assistente detectou entre os objetos no banco de dados e suas contrapartes na definição do DAC. Em seguida, você poderá revisar o relatório para determinar se precisa tomar medidas após a conclusão do upgrade, incorporando alguns ou todos os objetos listados no relatório ao novo banco de dados.
< Anterior: retorna à página Selecionar Pacote de DAC.
Próximo >: avança para a página Opções.
Cancelar – Encerra o assistente sem implantar o DAC.
Página Opções
Use esta página para selecionar a reversão em opção de falha para a atualização.
Reverter se Houver Falhas: selecione essa opção para incluir o upgrade em uma transação, que o assistente poderá tentar reverter se ocorrerem erros. Para obter mais informações sobre a opção, consulte Escolhendo Opções de Atualização de DAC.
Restaurar Padrões – Retorna a opção à configuração padrão de false.
< Anterior: retorna à página Detectar Alteração.
Próximo >: avança para a página Revisar Plano de Upgrade.
Cancelar – Encerra o assistente sem implantar o DAC.
Página Analisar um plano de atualização
Use essa página para rever as ações realizadas pelo processo de upgrade. Somente prossiga quando tiver certeza de que o upgrade não criará problemas.
As ações a seguir serão usadas para atualizar o DAC. - Examine as informações exibidas para assegurar que as ações executadas estarão corretas. A coluna Ação exibe as ações, tais como instruções Transact-SQL, que serão executadas para realizar a atualização. A coluna Perda de Dados conterá um aviso se a ação associada puder excluir dados.
Atualizar – Atualiza a lista de ações.
Salvar Relatório de Ação – Salva o conteúdo da janela de ação em um arquivo HTML.
Continuar, apesar da possível perda de alterações: especifique que você está ciente de que alguns dos objetos ou dados no banco de dados atual não estarão presentes no novo banco de dados e que está disposto a continuar com o upgrade. Somente selecione este botão se você tiver analisado o relatório de alterações e entender as etapas que deve executar para transferir manualmente os objetos ou os dados necessários no novo banco de dados. Se você não tiver certeza, clique no botão Salvar Relatório de Ação para salvar o relatório de alterações e no botão Salvar Scripts para salvar o script Transact-SQL. Depois, clique em Cancelar. Analise o relatório e o script, faça um planejamento de como transferir os objetos e os dados necessários após a conclusão da atualização e reinicie o assistente.
Salvar Scripts – Salva as instruções Transact-SQL que serão usadas para executar a atualização em um arquivo de texto.
Restaurar Padrões – Retorna a opção à configuração padrão de false.
< Anterior: retorna à página Detectar Alteração.
Próximo >: avança para a página Resumo.
Cancelar – Encerra o assistente sem implantar o DAC.
Página de Resumo
Use essa página para revisar as ações que o assistente executa ao atualizar o DAC.
As configurações a seguir serão usadas para atualizar o DAC. - Examine as informações exibidas para assegurar que as ações executadas estarão corretas. A janela exibe o DAC selecionado para atualização e o pacote de DAC que contém a nova versão do DAC. A janela também exibe se a versão atual do banco de dados é a mesma da definição atual do DAC ou se o banco de dados foi alterado.
< Anterior: retorna à página Analisar Plano de Upgrade.
Próximo >: implanta o DAC e exibe os resultados na página Atualizar DAC.
Cancelar – Encerra o assistente sem implantar o DAC.
Página Atualizar DAC
Esta página relata o êxito ou falha da operação de atualização.
Atualizando o DAC – Relata o êxito ou falha de cada ação realizada para atualizar o DAC. Analise as informações para determinar o êxito ou falha de cada ação. Todas as ações que encontrarem um erro têm um link na coluna Resultado. Selecione o link para exibir um relatório do erro para aquela ação.
Salvar Relatório – Selecione esse botão para salvar o relatório de atualização em um arquivo HTML. O arquivo relata o status de cada ação, inclusive todos os erros gerados por qualquer uma das ações. A pasta padrão é uma pasta SQL Server Gerenciamento Studio\Pacotes de DAC na pasta Documentos da conta do Windows.
Concluir – Encerra o assistente.
Usar o PowerShell
Para atualizar um DAC que usa o método IncrementalUpgrade() em um script do PowerShell
Crie um objeto de servidor SMO e defina-o como a instância que contém o DAC a ser atualizado.
Abra um objeto ServerConnection e conecte-se à mesma instância.
Use System.IO.File para carregar o arquivo de pacote de DAC.
Use add_DacActionStarted e add_DacActionFinished para assinar eventos de atualização do DAC.
Defina o DacUpgradeOptions.
Use o método IncrementalUpgrade para atualizar o DAC.
Feche o fluxo de arquivos usado para ler o arquivo de pacote de DAC.
Exemplo (PowerShell)
O exemplo a seguir atualiza um DAC chamado MyApplication em uma instância padrão do Mecanismo de Banco de Dados, usando uma nova versão do DAC em um pacote MyApplication2017.dacpac.
## Set an 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)
## Subscribe to the DAC upgrade events.
$dacstore.add_DacActionStarted({Write-Host `n`nStarting at $(get-date) :: $_.Description})
$dacstore.add_DacActionFinished({Write-Host Completed at $(get-date) :: $_.Description})
## Upgrade the DAC and close the package.
$dacName = "MyApplication"
## Set the upgrade options.
$upgradeProperties = New-Object Microsoft.SqlServer.Management.Dac.DacUpgradeOptions
$upgradeProperties.blockonchanges = $true
$upgradeProperties.ignoredataloss = $false
$upgradeProperties.rollbackonfailure = $true
$ upgradeProperties.skippolicyvalidation = $false
## Upgrade the DAC
$dacstore.IncrementalUpgrade($dacName, $dacType, $upgradeProperties)
## Close the package file.
$fileStream.Close()