Visão geral da comparação de esquemas
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
As ferramentas de comparação de esquemas permitem comparar duas definições de banco de dados, em que a origem e o destino da comparação podem ser qualquer combinação de banco de dados conectado, projeto de banco de dados SQL ou arquivo .dacpac
. Depois que a comparação for concluída, os resultados da comparação aparecerão como um conjunto de ações que tornam o destino igual à origem de maneira semelhante a uma comparação de controle do código-fonte. Por meio de uma interface de comparação de esquemas, você poderá atualizar o destino diretamente (se o destino for um projeto ou um banco de dados) ou gerar um script de atualização que tenha o mesmo efeito.
A a comparação de esquemas fornece os seguintes recursos:
- Comparar esquemas entre dois arquivos dacpac, bancos de dados ou projetos SQL.
- Exibir resultados como um conjunto de ações que devem ser executadas em relação ao destino para que corresponda à origem.
- Excluir seletivamente ações listadas nos resultados.
- Definir opções que controlam o escopo da comparação.
- Aplicar alterações diretamente ao destino ou gerar um script para aplicar alterações posteriormente.
- Salvar a comparação.
Funcionalidade
As diferenças entre a origem e o destino aparecem em uma grade para facilitar a revisão. A comparação pode ser feita em qualquer direção entre um modelo de banco de dados derivado de qualquer um dos seguintes:
- banco de dados conectado
- Projeto de banco de dados SQL
- Arquivo
.dacpac
Na comparação de esquemas, você pode detalhar e revisar cada diferença na grade de resultados ou no formulário de script, onde os detalhes das alterações estão disponíveis em um nível por linha. Você também pode excluir seletivamente diferenças específicas antes de atualizar o destino. As ferramentas de comparação de esquema estão disponíveis no Visual Studio, no Azure Data Studio e na linha de comando.
Opções de comparação de esquemas
As opções de comparação de esquemas são extraídas das opções de implantação disponíveis na biblioteca DacFx .NET. Estas opções incluem:
- ignorar espaço em branco
- ignorar esquemas de partição
- ignorar ordem das colunas
- descartar índices que não estão na origem
- bloquear em caso de possível perda de dados
Os tipos de objeto incluídos na comparação também podem ser configurados. Esses objetos incluem tabelas, procedimentos armazenados, índices, permissões, tipos definidos pelo usuário e muito mais.
Arquivos de comparação de esquemas
A definição de comparação para comparação de esquemas pode ser salva como um arquivo .scmp
, conhecido como arquivo de comparação de esquemas. Esse arquivo armazena informações sobre a comparação de esquemas em XML e inclui:
- informações de conexão de origem e destino
- opções de comparação
- tipos de objetos excluídos
Um arquivo .scmp
pode ser aberto no Visual Studio ou no Azure Data Studio para executar facilmente a mesma comparação novamente mais tarde ou para compartilhar a comparação com outras pessoas.
Iniciar e usar a comparação de esquemas
No menu Ferramentas no Visual Studio, selecione SQL Server e selecione Nova Comparação de Esquemas.
Como alternativa, clique com o botão direito do mouse no projeto TradeDev, no Gerenciador de Soluções, e selecione Comparação de Esquemas.
A janela Comparação de Esquemas é aberta e o Visual Studio automaticamente atribui a ela um nome, como
SqlSchemaCompare1
.Duas listas suspensas com uma seta verde entre elas aparecem logo abaixo da barra de ferramentas da janela Comparação de Esquemas. Esses menus permitem que você selecione definições de banco de dados para a origem e o destino da comparação.
Na lista suspensa Selecionar Origem, escolha Selecionar Origem para abrir a caixa de diálogo Selecionar Esquema de Origem.
Se você abriu a janela Comparação de Esquemas clicando com o botão direito do mouse no nome do projeto, o esquema de origem já estará preenchido e você poderá passar para a etapa 4.
Conclua as seleções para uma fonte de comparação de esquemas escolhendo um Projeto, uma conexão de Banco de dados ou um arquivo .dacpac. A origem é a definição de banco de dados que você deseja usar como base para alterações no destino.
Na lista suspensa Selecionar Destino, na Janela de Comparação de Esquemas, escolha Selecionar Destino para abrir a caixa de diálogo Selecionar Esquema de Destino. Conclua as seleções para um destino de comparação de esquemas escolhendo um Projeto, uma conexão de Banco de dados ou um arquivo .dacpac. O destino é a definição de banco de dados que você deseja avaliar e potencialmente aplicar alterações.
Você também pode selecionar o botão Opções na barra de ferramentas da Janela de Comparação de Esquemas para especificar quais objetos são comparados, que tipos de diferenças são ignorados e outras configurações.
Selecione o botão Comparar na barra de ferramentas da Janela de Comparação de Esquemas para iniciar o processo de comparação.
Quando a comparação estiver concluída, as diferenças estruturais entre o projeto e o banco de dados aparecerão no painel Resultados, na parte superior da janela. Por padrão, os resultados da comparação agrupam todas as diferenças por ação (como Excluir, Alterar ou Adicionar). O painel Resultados exibe uma linha para cada objeto de banco de dados que difere entre as definições de banco de dados. Cada linha identifica o objeto no esquema de origem ou destino (ou ambos), bem como a ação que seria executada no esquema de destino para tornar o objeto de destino igual ao objeto de origem. Se um objeto tiver sido refatorado e renomeado ou movido para um novo esquema, os nomes da origem e do destino serão diferentes, e o nome da origem aparecerá em negrito para realçar a diferença.
Por padrão, a lista de resultados oculta os objetos iguais em ambos os esquemas ou que não têm suporte para atualização (por exemplo, objetos internos). Você poderá selecionar os botões de filtro apropriados na barra de ferramentas para mostrar esses objetos.
Para alterar a preferência de agrupamento, selecione a lista suspensa Agrupar Resultados na barra de ferramentas. Selecione Tipo para agrupar os resultados por tipo de objeto (por exemplo, por tabelas, exibições ou procedimentos armazenados).
Por padrão, todas as diferenças são incluídas no escopo da ação Atualizar Destino. Você pode excluir as diferenças que não deseja sincronizar. Para isso, desmarque a coluna Ação no centro de cada linha. Como alternativa, clique com o botão direito do mouse em uma linha no painel Esquema e selecione Excluir. A linha fica acinzentada imediatamente. Quando a comparação de esquemas for usada para atualizar o banco de dados de destino, essa linha não será considerada para nenhuma alteração pendente.
Você também poderá clicar com o botão direito do mouse em uma linha de grupo e selecionar Excluir Tudo ou Incluir Tudo, o que é equivalente a desmarcar ou marcar todas as diferenças nesse grupo. Quando você agrupa resultados por esquema, isso é útil para incluir ou excluir todas as alterações de um esquema específico.
Se a linha que está sendo excluída tiver objetos dependentes (por exemplo, uma linha Tabela que seja referenciada por uma linha Exibição), a linha excluída será desabilitada, mas sua caixa de seleção não será desmarcada. Quando todas as linhas que dependem dela forem desmarcadas, uma linha desabilitada é desmarcada. Além disso, se uma linha for refatorada (renomeada ou movida para outro esquema), a caixa de seleção será desabilitada para essa linha e qualquer uma de suas linhas filho dependentes.
Se você atualizar a comparação, essas diferenças que você escolheu ignorar serão ignoradas.
Para atualizar o esquema do destino, você tem duas opções. Você poderá atualizar o destino diretamente na janela Comparação de Esquemas, se o destino for um banco de dados ou um projeto, ou gerar um script de atualização, se o destino for um banco de dados ou um arquivo de banco de dados. Um script gerado é exibido no Editor Transact-SQL, no qual você pode inspecionar o script e executá-lo em um banco de dados.
A comparação de esquema gráfico ainda não está disponível na versão prévia de projetos SQL no estilo SDK no Visual Studio. Use o Azure Data Studio para comparar esquemas.
Observação
A comparação de esquemas não está disponível no Visual Studio Code. Use o Azure Data Studio ou o Visual Studio para comparar esquemas.
No Azure Data Studio, na paleta de comandos (
ctrl/cmd+shift+P
), pesquise e selecione Comparação de Esquemas.Como alternativa, clique com o botão direito do mouse em um projeto de banco de dados na exibição Projetos de Banco de Dados ou em um banco de dados no Pesquisador de Objetos e selecione Comparação de Esquemas.
A janela Comparação de Esquemas é aberta e uma origem ou destino pode ser predefinida com base no ponto de inicialização.
Dois botões de reticências com uma seta entre eles aparecem logo abaixo da barra de ferramentas da janela Comparação de Esquemas. Esses menus permitem que você selecione definições de banco de dados para a origem e o destino da comparação.
Selecionar o botão de reticências para a origem ou destino abre uma caixa de diálogo onde um ou ambos podem ser atualizados. Conclua as seleções para uma fonte de comparação de esquemas escolhendo um Projeto, uma conexão de Banco de dados ou um arquivo .dacpac. A origem é a definição de banco de dados que você deseja usar como base para alterações no destino. O destino é a definição de banco de dados que você deseja avaliar e potencialmente aplicar alterações.
Depois que as seleções forem concluídas, selecione OK para fechar a caixa de diálogo e retornar à janela Comparação de Esquemas.
Você também pode selecionar o botão Opções na barra de ferramentas da Janela de Comparação de Esquemas para especificar quais objetos são comparados, que tipos de diferenças são ignorados e outras configurações.
Selecione o botão Comparar na barra de ferramentas da Janela de Comparação de Esquemas para iniciar o processo de comparação.
Quando a comparação estiver concluída, as diferenças estruturais entre o projeto e o banco de dados aparecerão no painel Resultados, na parte superior da janela. Por padrão, os resultados da comparação agrupam todas as diferenças por ação (como Excluir, Alterar ou Adicionar). O painel Resultados exibe uma linha para cada objeto de banco de dados que difere entre as definições de banco de dados. Cada linha identifica o objeto no esquema de origem ou destino (ou ambos), bem como a ação que será executada no esquema de destino para tornar o objeto de destino igual ao objeto de origem. Se um objeto tiver sido refatorado e renomeado ou movido para um novo esquema, os nomes da origem e do destino serão diferentes, e o nome da origem aparecerá em negrito para realçar a diferença.
Por padrão, todas as diferenças são incluídas no escopo da ação Atualizar Destino. Você pode excluir as diferenças que não deseja sincronizar. Para isso, desmarque a coluna Ação no centro de cada linha. Como alternativa, clique com o botão direito do mouse em uma linha no painel Esquema e selecione Excluir. A linha fica acinzentada imediatamente. Quando a comparação de esquemas for usada para atualizar o banco de dados de destino, essa linha não será considerada para nenhuma alteração pendente.
Você também poderá clicar com o botão direito do mouse em uma linha de grupo e selecionar Excluir Tudo ou Incluir Tudo, o que é equivalente a desmarcar ou marcar todas as diferenças nesse grupo. Quando você agrupa resultados por esquema, isso é útil para incluir ou excluir todas as alterações de um esquema específico.
Se a linha que está sendo excluída tiver objetos dependentes (por exemplo, uma linha Tabela que seja referenciada por uma linha Exibição), a linha excluída será desabilitada, mas sua caixa de seleção não será desmarcada. Quando todas as linhas que dependem dela forem desmarcadas, uma linha desabilitada será desmarcada. Além disso, se uma linha for refatorada (renomeada ou movida para outro esquema), a caixa de seleção será desabilitada para essa linha e qualquer uma de suas linhas filho dependentes.
Se você atualizar a comparação, essas diferenças que você escolheu ignorar serão ignoradas.
Para atualizar o esquema do destino, você tem duas opções. Você poderá atualizar o destino diretamente na janela Comparação de Esquemas com o botão Aplicar se o destino for um banco de dados ou um projeto, ou gerar um script de atualização se o destino for um banco de dados com o botão Gerar script. Um script gerado é exibido no Editor Transact-SQL, no qual você pode inspecionar o script e executá-lo em um banco de dados.
A comparação de esquemas requer uma ferramenta gráfica, como o Visual Studio ou o Azure Data Studio.