Demonstra Passo a passo: Comparando os esquemas de um projeto de banco de dados e o banco de dados
Este tópico se aplica a:
Visual Studio Ultimate |
Visual Studio Premium |
Visual Studio Professional |
Visual StudioExpress |
---|---|---|---|
Esta explicação passo a passo, você irá comparar o esquema de um banco de dados projeto com o esquema de banco de dados usando o Visual Studio. Dependendo de como sua equipe estiver usando o projeto de banco de dados e o banco de dados, em seguida, convém copiar as mudanças de esquema em uma direção ou o outro. Você pode encontrar os seguintes cenários típicos conforme o andamento da sua equipe por meio do ciclo de vida de desenvolvimento de banco de dados:
Projeto é a origem e o banco de dados é o destino. Você pode usar um projeto de banco de dados para desenvolver ou manter um banco de dados. Depois de alterar o esquema do projeto, você copiar as alterações no banco de dados, está hospedada em um servidor de teste. Posteriormente, sua equipe pode implantar o banco de dados para um servidor de produção.
A comparação que você executar esta explicação passo a passo gera um script de idioma de definição de dados (DDL) de diferenças de esquemas. Você pode usar esse script para aplicar todo ou parte do projeto de banco de dados no banco de dados. Para obter mais informações, consulte propagar a alterações do projeto no banco de dados.
Banco de dados é a origem e o projeto é o destino. Um erro pode ser encontrado no esquema de um banco de dados de produção ou o esquema pode ficar desatualizado e requerem uma atualização. Essa descoberta pode exigir a sua equipe para aplicar uma atualização urgente ao banco de dados. Para manter o projeto sincronizado com o banco de dados, você pode importar a atualização para um projeto de banco de dados. Para obter mais informações, consulte Como: Importar atualizações a partir de um banco de dados para o projeto de banco de dados.
Essa explicação passo a passo ilustra as seguintes tarefas:
Fase de instalação.
Criar um projeto de banco de dados. O novo projeto começa vazio.
Importar um esquema de banco de dados de um script.
Configurar, construir e implantar o projeto de banco de dados ao seu servidor de banco de dados. O banco de dados e o projeto tem esquemas idênticos.
Fase de produção
Adicionar uma tabela para o projeto de banco de dados. Você adicionar uma tabela com três colunas que é chamada InternationalShippers.
Comparar os dois esquemas. Nesta comparação, você pode designar o projeto de banco de dados como a origem e o banco de dados como o destino. Portanto, os resultados mostram a tabela de InternationalShippers como uma nova tabela no projeto de banco de dados.
Propagar alterações do projeto no banco de dados. Você pode propagar a nova tabela de InternationalShippers do projeto de banco de dados para o banco de dados distribuído. Caso tenha seguido esse procedimento, você substituiria a partes do banco de dados de exemplo.
Observação Você também pode propagar alterações de um banco de dados para um projeto de banco de dados. Para obter mais informações, consulte Como: Importar atualizações a partir de um banco de dados para o projeto de banco de dados.
Pré-requisitos
Para concluir este passo a passo, você precisa dos seguintes aplicativos e permissões:
SQL Server 2008
Permissões para criar e atualizar os bancos de dados no servidor de banco de dados de destino
Visual Studio PremiumouVisual Studio Ultimate
Fase de instalação.
Criar um projeto de banco de dados
Para criar um projeto de banco de dados
No menu File, aponte para New, e em seguida, clique em Project.
A Caixa de diálogo New Project é aberta.
Em Modelos instalados, expanda o banco de dados nó e depois clique em SQL Server.
Na lista de modelos, clique em Projeto de banco de dados de 2008 do SQL Server.
Em nome, digite CompareProject e clique em OK.
O projeto CompareProject, que está vazio, abre e aparece na Solution Explorer.
Importar um esquema de banco de dados de um script
Para criar um script a partir do qual você pode importar um esquema
Sobre o arquivo , aponte para novae, em seguida, clique em arquivo.
O Novo arquivo abre a caixa de diálogo.
No categorias , clique em Geral se já não estiver realçado.
No modelos de lista, clique em Arquivo Sqle, em seguida, clique em Abrir.
O Transact-SQL editor será aberta.
Copie o seguinte código e, em seguida, cole-o para o Transact-SQL editor.
PRINT N'Creating Sales...'; GO CREATE SCHEMA [Sales] AUTHORIZATION [dbo]; GO PRINT N'Creating Sales.Customer...'; GO CREATE TABLE [Sales].[Customer] ( [CustomerID] INT IDENTITY (1, 1) NOT NULL, [CustomerName] NVARCHAR (40) NOT NULL, [YTDOrders] INT NOT NULL, [YTDSales] INT NOT NULL ); GO PRINT N'Creating Sales.Orders...'; GO CREATE TABLE [Sales].[Orders] ( [CustomerID] INT NOT NULL, [OrderID] INT IDENTITY (1, 1) NOT NULL, [OrderDate] DATETIME NOT NULL, [FilledDate] DATETIME NULL, [Status] CHAR (1) NOT NULL, [Amount] INT NOT NULL ); GO PRINT N'Creating Sales.Def_Customer_YTDOrders...'; GO ALTER TABLE [Sales].[Customer] ADD CONSTRAINT [Def_Customer_YTDOrders] DEFAULT 0 FOR [YTDOrders]; GO PRINT N'Creating Sales.Def_Customer_YTDSales...'; GO ALTER TABLE [Sales].[Customer] ADD CONSTRAINT [Def_Customer_YTDSales] DEFAULT 0 FOR [YTDSales]; GO PRINT N'Creating Sales.Def_Orders_OrderDate...'; GO ALTER TABLE [Sales].[Orders] ADD CONSTRAINT [Def_Orders_OrderDate] DEFAULT GetDate() FOR [OrderDate]; GO PRINT N'Creating Sales.Def_Orders_Status...'; GO ALTER TABLE [Sales].[Orders] ADD CONSTRAINT [Def_Orders_Status] DEFAULT 'O' FOR [Status]; GO PRINT N'Creating Sales.PK_Customer_CustID...'; GO ALTER TABLE [Sales].[Customer] ADD CONSTRAINT [PK_Customer_CustID] PRIMARY KEY CLUSTERED ([CustomerID] ASC) WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF); GO PRINT N'Creating Sales.PK_Orders_OrderID...'; GO ALTER TABLE [Sales].[Orders] ADD CONSTRAINT [PK_Orders_OrderID] PRIMARY KEY CLUSTERED ([OrderID] ASC) WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF); GO PRINT N'Creating Sales.FK_Orders_Customer_CustID...'; GO ALTER TABLE [Sales].[Orders] ADD CONSTRAINT [FK_Orders_Customer_CustID] FOREIGN KEY ([CustomerID]) REFERENCES [Sales].[Customer] ([CustomerID]) ON DELETE NO ACTION ON UPDATE NO ACTION; GO PRINT N'Creating Sales.CK_Orders_FilledDate...'; GO ALTER TABLE [Sales].[Orders] ADD CONSTRAINT [CK_Orders_FilledDate] CHECK ((FilledDate >= OrderDate) AND (FilledDate < '01/01/2010')); GO PRINT N'Creating Sales.CK_Orders_OrderDate...'; GO ALTER TABLE [Sales].[Orders] ADD CONSTRAINT [CK_Orders_OrderDate] CHECK ((OrderDate > '01/01/2005') and (OrderDate < '01/01/2020')); GO PRINT N'Creating Sales.uspCancelOrder...'; GO CREATE PROCEDURE [Sales].[uspCancelOrder] @OrderID INT AS BEGIN DECLARE @Delta INT, @CustomerID INT BEGIN TRANSACTION SELECT @Delta = [Amount], @CustomerID = [CustomerID] FROM [Sales].[Orders] WHERE [OrderID] = @OrderID; UPDATE [Sales].[Orders] SET [Status] = 'X' WHERE [OrderID] = @OrderID; UPDATE [Sales].[Customer] SET YTDOrders = YTDOrders - @Delta WHERE [CustomerID] = @CustomerID COMMIT TRANSACTION END GO PRINT N'Creating Sales.uspFillOrder...'; GO CREATE PROCEDURE [Sales].[uspFillOrder] @OrderID INT, @FilledDate DATETIME AS BEGIN DECLARE @Delta INT, @CustomerID INT BEGIN TRANSACTION SELECT @Delta = [Amount], @CustomerID = [CustomerID] FROM [Sales].[Orders] WHERE [OrderID] = @OrderID; UPDATE [Sales].[Orders] SET [Status] = 'F', [FilledDate] = @FilledDate WHERE [OrderID] = @OrderID; UPDATE [Sales].[Customer] SET YTDSales = YTDSales - @Delta WHERE [CustomerID] = @CustomerID COMMIT TRANSACTION END GO PRINT N'Creating Sales.uspNewCustomer...'; GO CREATE PROCEDURE [Sales].[uspNewCustomer] @CustomerName NVARCHAR (40) AS BEGIN INSERT INTO [Sales].[Customer] (CustomerName) VALUES (@CustomerName); SELECT SCOPE_IDENTITY() END GO PRINT N'Creating Sales.uspPlaceNewOrder...'; GO CREATE PROCEDURE [Sales].[uspPlaceNewOrder] @CustomerID INT, @Amount INT, @OrderDate DATETIME, @Status CHAR (1)='O' AS BEGIN DECLARE @RC INT BEGIN TRANSACTION INSERT INTO [Sales].[Orders] (CustomerID, OrderDate, FilledDate, Status, Amount) VALUES (@CustomerID, @OrderDate, NULL, @Status, @Amount) SELECT @RC = SCOPE_IDENTITY(); UPDATE [Sales].[Customer] SET YTDOrders = YTDOrders + @Amount WHERE [CustomerID] = @CustomerID COMMIT TRANSACTION RETURN @RC END GO
Sobre o arquivo menu, clique em Salvar SqlQuery_1.sql como.
O Salvar arquivo como abre a caixa de diálogo.
Em nome do objeto, tipo SampleImportScript.sql.
Você pode salvar o arquivo em qualquer local no computador. Anote a localização porque você deve usá-lo no próximo procedimento.
Clique em Save.
No menu File, clique em Close Solution.
Em seguida, você cria um projeto de banco de dados e importar o esquema do script que você criou.
Para importar um esquema de banco de dados de um script
Sobre o projeto menu, clique em Script de banco de dados de importação.
Depois de ler a página de boas-vindas, clique em próximo.
Clique em Procurare procure o local em que você salvou o arquivo SampleImportScript.sql.
Clique duas vezes no arquivo SampleImportScript.sql e clique em Concluir.
O script é importado, e os objetos que são definidos no script são adicionados ao seu projeto de banco de dados.
Revise o resumo e, em seguida, clique em Concluir.
Configurar, construir e implantar o projeto de banco de dados
Esses procedimentos criar um banco de dados que tem o esquema importado em um o ambiente de desenvolvimento isolado (ou seguro) na qual você pode desenvolver e testar o banco de dados.
Para configurar e construir o projeto de banco de dados
Em Solution Explorer, clique no projeto CompareProject.
Sobre o projeto menu, clique em Propriedades de CompareProject.
As propriedades do projeto CompareProject aparecem.
Clique o Deploy guia.
No A ação implantar , clique em criar um script de implantação (. SQL) e implantar banco de dados.
Em Configurações de banco de dados de destino, clique em Editar.
No Propriedades de conexão caixa de diálogo caixa, defina as propriedades de conexão do banco de dados para onde você deseja trabalhar e, em seguida, clique em OK.
O Conexão de destino caixa exibe a seqüência de conexão correta.
Aviso
Você deve criar o banco de dados em um servidor de teste, um servidor de desenvolvimento ou computador local. Você não deve usar um servidor de produção.
No nome do banco de dados de destino caixa, digite CompareProjectDB.
No menu File, clique em Save All.
Sobre o Build menu, clique em Build Solution.
O script de implantação é construído com base nas propriedades do projeto que você acabou de definir. O status da compilação aparece no saída janela, e Build: 1 com êxito ou atualizada aparece como a última linha.
Para implantar o projeto de banco de dados
Em Solution Explorer, clique no projeto CompareProject.
Sobre o Build menu, clique em Implantar CompareProject.
Como alternativa, você pode também direito no projeto na Solution Explorer e clique em Deploy.
Aviso
Você deve executar essa implantação contra um servidor de teste, um servidor de desenvolvimento ou computador local. Você não deve usar o seu servidor de produção.
O projeto de banco de dados é implantado para um novo banco de dados. O status da implantação aparece no saída janela, e implantação bem-sucedida aparece como a última linha.
Fase de produção
Adicionar uma tabela para o projeto de banco de dados
Para adicionar uma tabela ao projeto
Sobre o Exibir menu, clique em Visualização do esquema de banco de dados.
Modo de exibição do esquema abre e exibe o esquema do projeto CompareProject.
Em Visualização Esquema, expanda o nó CompareProject e expanda o nó esquemas.
Com o botão direito vendas, aponte para Adde clique em tabela.
O Add New Item - compareproject abre a caixa de diálogo.
Em modelos de, clique em tabela.
Em nome, digite InternationalShippers e clique em Add.
Uma tabela chamada InternationalShippers é adicionada ao projeto CompareProject. A definição da tabela aparece no Transact-SQL editor.
Altere o script SQL na InternationalShippers.table.sql para as instruções a seguir:
CREATE TABLE [Sales].[InternationalShippers] ( [ShipperID] [int] NOT NULL IDENTITY(1,1), [CompanyName] [nvarchar] (40) NOT NULL, [Region] [nvarchar] (40) NOT NULL, [Phone] [nvarchar] (24) NULL ) ON [PRIMARY]
Clique em Salvar InternationalShippers.table.sql.
Em Visualização Esquema, a tabela de InternationalShippers com o botão direito e clique em Exibir o arquivo no Solution Explorer.
Em Solution Explorer, o arquivo de InternationalShippers.sql é realçado.
Pressione F4.
O Propriedades janela aparece e exibe as propriedades do arquivo InternationalShippers.table.sql. O Build Action for definida como Build, que indica que o arquivo contém a definição de um objeto de banco de dados e deve ser analisado e validado.
Comparar os dois esquemas
Para comparar os dois esquemas
Sobre o dados , aponte para Esquema comparare clique em Comparação do novo esquema.
O Comparação do novo esquema abre a caixa de diálogo.
Em O esquema de destino, clique em banco de dados especificar uma conexão de banco de dados que você tiver implantado anteriormente e clique em OK.
O esquema do banco de dados é comparado com o esquema do seu projeto alterado e os resultados aparecem na Esquema comparar janela. Na coluna CompareProject, [Vendas].Tabela de [InternationalShippers] é exibida. O status da tabela é novo e sua ação de atualização é criar. Se você propagadas alterações agora, a tabela seria criada no banco de dados de destino. Para obter mais informações, consulte o procedimento a seguir.
Para revisar e Ignorar diferenças esperadas
Na lista de resultados de comparação, role até o arquivos SQL nó.
Para o banco de dados de destino, duas linhas que possuem o status de ausente aparecem na lista: uma linha para o arquivo de grupo de arquivos e uma linha para o arquivo de log.
Clique no A ação de atualização coluna para cada linha alterar a ação a ser Ignorar.
Quando você atualiza um esquema de banco de dados, você normalmente não deseja alterar o arquivo de grupo de arquivos ou o arquivo de log associado com o banco de dados de destino. Alterando a ação de ignorar, o banco de dados de destino continuará a usar seus arquivos atuais.
Em seguida, você pode atualizar opcionalmente o banco de dados de destino para coincidir com o banco de dados de origem.
Propagar alterações do projeto no banco de dados
Para propagar alterações no banco de dados de destino
No Esquema comparar janela, clique em Atualizações de gravação.
Observação O Atualizações de gravação botão pode ser desativado se o projeto contém um ou mais erros. Se isso ocorrer, aparecerá uma mensagem na barra de status comparar do esquema.
As ações que foram listadas o Esquema comparar janela, que incluem a ação de criação para a tabela de InternationalShippers, são executados. Essa sincronização altera o esquema do banco de dados para coincidir com o projeto de banco de dados. Quando a operação de atualização estiver concluída, os esquemas são comparados novamente, e os resultados são atualizados.
Enquanto o esquema de destino está sendo atualizado, você pode cancelar a operação, abrindo o dados menu, apontando para Esquema comparare em seguida, clicando em Parar a gravação destino.
Aviso
Porque algumas alterações de esquema não podem ser executadas dentro do escopo de uma transação, você poderá perder dados se você cancelar uma operação de atualização. Por exemplo, uma tabela do banco de dados de destino pode ter sido abandonada em preparação para sua recriação. Se você cancelar a atualização nesse momento, você poderá perder a tabela. Se esse tipo de perda de dados ocorrer, você deve comparar os esquemas novamente.
Consulte também
Tarefas
Como: Comparar os esquemas de banco de dados
Como: Comparar e sincronizar os dados de dois bancos de dados
Conceitos
Comparar e sincronizar esquemas de banco de dados
Comparar e sincronizar os dados em um ou mais tabelas com dados em um banco de dados de referência