quarta-feira, 23 de abril de 2008

Copiando um diagrama do SQL Server 2005 para outro banco de dados

Olá,

A muito tempo não atualizo o blog e em conseqüência disso creio que perdi o público que havia conquistado.
Pena... meu público já estava em quase 3 pessoas. :-)

O blog é para mim, além de uma ferramenta de distribuição de conhecimento, uma ferramenta de preservação de conhecimento.
Isto quer dizer que eu o uso como uma biblioteca para referência futura e o post de hoje tem basicamente este último objetivo.

Antes de seguir uma das dicas aqui apresentadas, é importante que a estrutura do banco de dados de destino esteja igual ao banco de origem, pelo menos as tabelas que fazem parte do diagrama que se quer importar.

Segue script que encontrei prontinho em C# articles and tutorials on SharpDeveloper.NET:

use Old_Database
go
--this will copy your database diagrams into a temporary table
select * into dbo.#tempsysdiagrams from sysdiagrams

use New_Database
go
insert into sysdiagrams ([name],principal_id,version,definition)
select [name],principal_id,version,definition from dbo.#tempsysdiagrams where [name] = 'Name_of_your_Diagram'

O script acima usa uma tabela temporária para armazenar o conteúdo da SysDiagrams do banco de origem e, após mudar para o banco de destino, realizar o insert neste.
Em meu caso os bancos estavam em servidores diferentes, logo precisei usar o nosso amigo Integration Services (ferramenta ETL do SQL Server 2005).
O caminho mais curto para realizar esta exportação/importação é clicar com o botão direito do mouse no banco de origem ou destino e selecionar “Tasks” -> “Export Data” ou “Import Data”, conforme o caso.

O importante aqui é lembrar que na tela “Select Source Table and Views” você deve selecionar a tabela “SysDiagrams” e clicar no botão “Edit mappings”. Na tela que se abre, ignore o campo “diagram_id”. O resto vai funcionar perfeitamente.

Abraços e até o próximo post. Daqui a um ano. :-)
Brincadeira.