SQL Server 2005, как скопировать диаграмму базы данных на другой сервер - PullRequest
14 голосов
/ 22 июля 2010

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

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

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

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

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

Так что мне нужно как-то «сохранить» определение диаграммы в файл, чтобы восстановить его на другом сервере.

Ответы [ 3 ]

5 голосов
/ 23 июля 2010

Только что нашел это решение .

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

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

2 голосов
/ 31 октября 2013

Первый: создайте один сервер ссылок из 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
0 голосов
/ 22 июля 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...