Это можно сделать, но это королевская боль.Вот схема процесса и некоторые сценарии.
Диаграммы хранятся в «системной» таблице с именем sysDiagrams.Эта таблица (только?) Создается, когда вы нажимаете на узел диаграмм в SSMS, она спрашивает вас, хотите ли вы создать объекты, поддерживающие диаграммы, и вы нажимаете «Да».Сделайте это как для исходной, так и для целевой базы данных.
Создайте диаграмму или диаграммы в базе данных «source».
Просмотрите структуру и содержимое sysDiagrams.Обратите внимание, что столбец diagram_id
является столбцом идентификаторов.1 строка сохраняется для каждой диаграммы.(Вам все равно, но в SQL 2000 раньше было 4 или 5 строк.)
Чтобы скопировать в другую базу данных на том же экземпляре SQL , самый простой способ - это сделатьВСТАВИТЬ ... ВЫБРАТЬ ... между таблицами.С этим столбцом идентификаторов вам придется возиться с SET IDENTITY_INSERT и, возможно, назначить новое значение идентификатора на конечном компьютере.Раздражает, но не критически сложно.
Следующий скрипт скопирует все диаграммы из одной базы данных в другую, находящуюся на одном сервере (именно так я архивирую сложные диаграммы, создание которых заняло слишком много времени, из баз данных, которыесклонны к удалению и воссозданию):
USE TargetDatabase
DELETE sysDiagrams
where name in (select name from 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 SourceDatabase.dbo.sysDiagrams
SET identity_insert sysDiagrams off
Чтобы скопировать в другую базу данных на другом экземпляре SQL (или сервере), ну, это становится еще сложнее.Я использую временно созданные определения Linked Server, используя сценарии, которые я выбил пулями много лет назад, и мне больше никогда не захочется их модифицировать (т. Е. Опубликовать другой вопрос, чтобы кто-то, кто знает, мог рассказать вам, как они работают), и изменить сценарии с помощью соответствующихсоглашения об именовании частей.Возможны и другие варианты (OPENROWSET и т. П.), Но я еще менее знаком с ними.