SQL Server 2005, как скопировать диаграмму базы данных на другой сервер

Есть ли способ скопировать диаграмму базы данных SQL Server на другой сервер?

Я нашел этот и модифицировал его, чтобы скопировать только одну диаграмму:

INSERT INTO dbB.dbo.sysdiagrams 
SELECT [name],[principal_id],[version],[definition]
FROM dbA.dbo.sysdiagrams
Where name = 'MyDiagramName'

Но мне нужно скопировать его на другой сервер (Development to Production).

Я не хочу создавать связанный сервер для этого. (Обновленное объяснение). Причина в том, что я хочу включить диаграмму в обновление script. Я внес изменения в базу данных для поддержки новой версии (новые таблицы и т.д.), И я хочу, чтобы диаграмма была частью обновления script. так что лучше всего, если я могу поместить это в SQL script. Если после этого отдельный файл будет импортирован вручную, он может выполнить эту работу, но это не самое лучшее.

Поэтому мне нужно "сохранить" определение диаграммы в файле, чтобы восстановить его на другом сервере.

Ответы

Ответ 1

Просто нашел это решение.

В этой статье содержится код для создания хранимой процедуры, которая генерирует SQL Server Script для воссоздания диаграмм. Поэтому вы просто сохраняете вывод хранимой процедуры в файле .SQL и запускаете ее на другом сервере.

Проблема состоит в том, чтобы преобразовать Varbinary To String (Varchar) в Hex, чтобы использовать его в запросе на вставку/обновление. Но это хорошо объяснено в ссылке...

Ответ 2

Сначала: создайте один сервер ссылок из Source Server внутри Destination Server.

Для создания Link Server используйте эту ссылку

Второе: используйте это

USE DestinationDatabase

DELETE  sysDiagrams
WHERE   name IN ( SELECT    name
              FROM      <LinkServerName>.SourceDatabase.dbo.sysDiagrams )

SET IDENTITY_INSERT sysDiagrams ON

INSERT  sysDiagrams
    ( name ,
      principal_id ,
      diagram_id ,
      version ,
      definition
    )
    SELECT  name ,
            principal_id ,
            diagram_id ,
            version ,
            definition
    FROM    <LinkServerName>.SourceDatabase.dbo.sysDiagrams

SET IDENTITY_INSERT sysDiagrams OFF