Descrição detalhada do produto Normalmente, os dados do dbForge Data Compare for SQL Server são usados em ambientes que compartilham um objeto de banco de dados em vários bancos de dados. A ferramenta é essencial quando os mesmos estão fora de sincronia, devido à falta de rede ou erros humanos que diferem na estrutura e necessidade de sincronização de dados personalizados, ou quando você está movendo dados entre os ambientes durante o desenvolvimento e não precisam de replicação. Show
O que o SQL Server DBAs e os desenvolvedores podem fazer com essas ferramentas de comparar dados? • Realizar uma comparação de banco de dados do SQL Server para detectar mudanças • Comparar backups do SQL Server com os bancos de dados ao vivo • Analisar as diferenças de dados entre dois bancos de dados • Sincronizar dois bancos de dados que estão fora de sincronia • Restaurar dados de uma tabela em particular a partir do backup • Gerar relatórios de comparação de dados em Excel e HTML • Olhar cópia de dados do banco de desenvolvimento para produção • Automatize tarefas de sincronização de dados de rotina com a interface de linha de comando O software é fornecido como um aplicativo independente. No entanto, o pacote inclui um add-in para a ferramenta de administração do SQL Server padrão - Microsoft SQL Server Management Studio. A integração de comparação de dados em SSMS permite o lançamento de sua comparação diretamente do menu de contexto do Object Explorer, bem como do menu principal do SSMS. Por que escolher este software? Ele conta com um excelente desempenho ao comparar grandes bancos de dados, possui amplo suporte de versões do SQL Server, reduz o tempo de inatividade do sistema causados por erros de replicação de dados e acelera a recuperação. Ele também acelera o desenvolvimento de aplicações, graças a rápida implantação de alterações de dados e constrói cenários de sincronização de dados personalizados a baixo custo. Eleve a sua comparação de dados e sincronização para um nível profissional. Encontre as melhores práticas utilizadas pelo dbForge Data Compare for SQL Server. Confira você mesmo! Requisitos Compatibilidade do Microsoft SQL Server • SQL Server 2014, 2012, LocalDB • SQL Server 2008, 2008R2 (incluindo a edição Express) • SQL Server 2005 (incluindo a edição Express) • SQL Server 2000 • SQL Azure Requisitos do sistema • .NET Framework 3.5 SP1 ou superior instalado • Processador de 2 GHz ou superior • 1024 MB de RAM • 100 MB de espaço livre em disco • Microsoft Windows XP/7/8/8.1, e Windows Server 2008/2012 Nota: O .NET Framework está pré-instalado no Microsoft Windows Vista e no Windows 7/8/8.1 As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá. Se você fez alterações no esquema de origem ou de destino após a migração, pode comparar os dois esquemas de bancos de dados usando a AWS SCT. Você pode comparar esquemas para versões iguais ou anteriores do esquema de origem. As seguintes comparações de esquemas são compatíveis:
Você especifica as configurações para a comparação de esquemas na guia Compare Schema (Comparar esquema) na página Project Settings (Configurações do projeto). Para comparar esquemas, selecione-os e a AWS SCT indica os objetos que são diferentes entre os dois esquemas e os objetos que são iguais. Para comparar dois esquemas
A AWS SCT indica os objetos que são diferentes entre os dois esquemas, adicionando um círculo preto em volta do ícone do objeto. Você pode aplicar os resultados da comparação de esquemas a um único objeto, a uma única categoria de objetos ou a todo o esquema. Marque a caixa de seleção próxima à categoria, ao objeto ou ao esquema em que você deseja aplicar os resultados.
Muitos colegas já tiveram a necessidade de comparar duas bases de dados no SQL Server para analisar rapidamente a diferença entre elas. Como é algo recorrente, estou publicando aqui uma consulta (query) que compara a estrutura de duas bases e destaca tabelas e campos que existem em uma e não na outra, bidirecionalmente. Bases de exemploImagine que você tem um BANCO_A: use BANCO_A; go create table Person ( id int primary key identity, name varchar(100), height numeric(4,1) ); create table Car ( id int primary key identity, brand varchar(100), model varchar(100), year int ); create table Animal ( id int primary key identity, name varchar(100), kind varchar(100) );E também um BANCO_B: use BANCO_B; go create table Person ( id int primary key identity, name varchar(100) ); create table Car ( id int primary key identity, brand varchar(100), model varchar(100), year float, kilometers int ); create table Pet ( id int primary key identity, name varchar(100) );Verificando tabelas adicionadas e excluídasPara identificar somente as tabelas que foram adicionadas ou excluídas de uma base para outra, use a seguinte consulta: SELECT T1.TABLE_NAME 'DB1 TABLE', T2.TABLE_NAME 'DB2 TABLE' FROM BANCO_A.INFORMATION_SCHEMA.TABLES T1 FULL JOIN BANCO_B.INFORMATION_SCHEMA.TABLES T2 ON T1.TABLE_NAME = T2.TABLE_NAME ORDER BY ISNULL(T1.TABLE_NAME, T2.TABLE_NAME)Verificando colunas adicionadas e excluídasPara verificar as diferenças tanto das tabelas como das colunas que elas contém, use a seguinte consulta: Executando a consulta dinamicamenteNos dois exemplos acima, basta trocar BANCO_A e BANCO_B por duas bases que você precisa comparar. Entretanto, pode ser que você queira criar uma procedure ou rotina que compare duas bases quaisquer. Para isso você pode executar uma consulta dinâmica usando o comando SP_SQLEXEC. Veja o seguinte exemplo: DECLARE @BANCO1 NVARCHAR(100) = 'BANCO_A', @BANCO2 NVARCHAR(100) = 'BANCO_B', @SQL NVARCHAR(2000) SET @SQL = N'SELECT T1.TABLE_NAME ''DB1 TABLE'', T2.TABLE_NAME ''DB2 TABLE'' FROM ' + @BANCO1 + '.INFORMATION_SCHEMA.TABLES T1 FULL JOIN ' + @BANCO2 + '.INFORMATION_SCHEMA.TABLES T2 ON T1.TABLE_NAME = T2.TABLE_NAME ORDER BY ISNULL(T1.TABLE_NAME, T2.TABLE_NAME)'; EXEC sp_sqlexec @SQLAgora basta alterar o valor das variáveis ou receber os nomes das duas bases através de parâmetros. Duas observações importantes:
Estamos usando uma solução desenvolvida internamente que é basicamente um procedimento com argumentos do que você deseja incluir na comparação (código SP, Full SP, estrutura de tabela, padrões, índices, gatilhos, etc.). Dependendo de suas necessidades e orçamento, pode ser um bom caminho para você também. Também é facilmente desenvolvido, então apenas redirecionamos a saída do procedimento para arquivos de texto e fazemos comparações de texto entre os arquivos. Uma coisa boa sobre isso é que é possível salvar a saída no controle de origem. / B
Structured Query Language ou SQL é uma linguagem de banco de dados padrão que é usada para criar, manter e recuperar os dados de bancos de dados relacionais como MySQL, Oracle, etc. Aqui vamos ver como comparar e encontrar diferenças entre duas tabelas em SQL Aqui, primeiro criaremos um banco de dados denominado “geeks” e, em seguida, criaremos duas tabelas “ department_old ” e “ department_new ” nesse banco de dados. Em seguida, executaremos nossa consulta nessa tabela. Criando banco de dados :.Use a instrução SQL abaixo para criar um banco de dados chamado geeks : Usando banco de dados:USE geeks;Definição de tabela para a tabela department_old :CREATE TABLE department_old( ID int, SALARY int, NAME Varchar(20), DEPT_ID Varchar(255));Adicione valores à tabela:Use a consulta abaixo para adicionar dados à tabela: INSERT INTO department_old VALUES (1, 34000, 'ANURAG', 'UI DEVELOPERS'); INSERT INTO department_old VALUES (2, 33000, 'HARSH', 'BACKEND DEVELOPERS'); INSERT INTO department_old VALUES (3, 36000, 'SUMIT', 'BACKEND DEVELOPERS'); INSERT INTO department_old VALUES (4, 36000, 'RUHI', 'UI DEVELOPERS'); INSERT INTO department_old VALUES (5, 37000, 'KAE', 'UI DEVELOPERS');Para verificar o conteúdo da tabela, use a declaração abaixo: SELECT * FROM department_old;
O resultado do SQL Server Management Studio: Definição de tabela para a nova tabela department :CREATE TABLE department_new( ID int, SALARY int, NAME Varchar(20), DEPT_ID Varchar(255));Adicione valores à tabela:Use a consulta abaixo para adicionar dados à tabela: INSERT INTO department_new VALUES (1, 34000, 'ANURAG', 'UI DEVELOPERS'); INSERT INTO department_new VALUES (2, 33000, 'HARSH', 'BACKEND DEVELOPERS'); INSERT INTO department_new VALUES (3, 36000, 'SUMIT', 'BACKEND DEVELOPERS'); INSERT INTO department_new VALUES (4, 36000, 'RUHI', 'UI DEVELOPERS'); INSERT INTO department_new VALUES (5, 37000, 'KAE', 'UI DEVELOPERS'); INSERT INTO department_new VALUES (6, 37000, 'REHA', 'BACKEND DEVELOPERS');Para verificar o conteúdo da tabela, use a declaração abaixo: SELECT * FROM department_new;
Saída: Comparando os resultados das duas consultasSuponhamos que temos duas tabelas: tabela1 e tabela2 . Aqui, usaremos UNION ALL para combinar os registros com base nas colunas que precisam ser comparadas. Se os valores nas colunas que precisam ser comparados forem iguais, COUNT (*) retornará 2, caso contrário, COUNT (*) retornará 1. Sintaxe: SELECT column1, column2.... columnN FROM ( SELECT table1.column1, table1.column2 FROM table1 UNION ALL SELECT table2.column1, table2.column2 FROM table2 ) table1 GROUP BY column1 HAVING COUNT(*) = 1Exemplo: Select ID from ( select * from department_old UNION ALL select * from department_new) department_old GROUP BY ID HAVING COUNT(*) = 1Saída: Se os valores nas colunas envolvidas na comparação forem idênticos, nenhuma linha retornará. |