Подтвердить что ты не робот

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

Моя команда недавно восстановила базу данных разработки SQL Server 2005 с нуля, используя исходные файлы TFS.

Впоследствии у нас была хорошая чистая база данных, которая более точно соответствовала нашим тестовым и производственным средам. Однако мы также потеряли диаграммы базы данных, которые были созданы в течение нескольких месяцев в старой базе данных разработки.

Кто-нибудь знает, как экспортировать диаграмму базы данных SQL Server 2005 из одной базы данных в другую, которая содержит те же таблицы и объекты схемы?

UPDATE:

Оба ответа Valentin и CMS ниже должны работать нормально. Я принял Валентина, потому что он был первым, и я уже начал его использовать.

В итоге я создал временную таблицу, называемую "robsysdiagrams", и скопировал все данные в нее и использовал Microsoft SQL Server Database Publishing Wizard для script данные вставляются на диск. Затем я переименовал robsysdiagrams в sysdiagrams в script и запустил его в базе данных назначения. Все работало нормально.

4b9b3361

Ответ 1

Rob, существует таблица 'sysdiagrams', которая содержит определения диаграмм. Попробуйте создать таблицу и вставить данные из старой базы данных. Он должен работать.

НТН

Ответ 2

Предполагая, что у вас есть доступ к обеим базам данных в экземпляре SQL Server.

Включить диаграммы в новой базе данных:

В новой базе данных щелкните по папке "Диаграммы базы данных". Sql Server Management Studio предложит вам использовать диаграммы. Если вы выполните этот шаг, у вас будет таблица sysdiagrams в базе данных.

Затем выполните следующее:

INSERT INTO newdb.dbo.sysdiagrams 
     SELECT name, principal_id,[version], [definition]
       FROM olddb.dbo.sysdiagrams

Ответ 3

Старый, но элегантный ответ, с которым я столкнулся, ища решение одной и той же проблемы: bcp

Чтобы извлечь:

bcp YOUR_DATABASE..sysdiagrams out YOUR_DIAGRAM_NAME.bcp -c -T -S SERVERNAME

Для импорта:

(cd to the directory the diagram is in)
bcp YOUR_DATABASE..sysdiagrams in YOUR_DIAGRAM_NAME.bcp -c -T -S SERVERNAME

Ответ 5

Я думаю, что это лучший способ:

USE DestinationDatabase

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

Ответ 6

Это довольно легко, если у вас есть связанный сервер или когда вы все еще находитесь на одной машине:

USE newDB;

SET IDENTITY_INSERT sysdiagrams ON;

INSERT INTO sysdiagrams(name,principal_id,diagram_id,version,definition)
SELECT name,principal_id,diagram_id,version,definition
FROM oldDB..sysdiagrams;

SET IDENTITY_INSERT sysdiagrams OFF;

Ответ 7

Моя проблема в том, что иногда мне нужно отбрасывать мою базу данных и воссоздавать ее. У меня есть полное поколение script, которое создает все, кроме диаграмм.

Мое обходное решение заключается в том, чтобы временно скопировать диаграмму в другую базу данных и после восстановления моей копии базы данных.

Самое забавное: не следует пытаться открыть схему копирования, потому что в другой базе данных, где она находится, нет структур таблиц моей базы данных, поэтому SQL Server автоматически при открытии очищает все таблицы на диаграмме q -

Ответ 8

Вы можете напрямую копировать, как было сказано ранее. Если вы хотите "создать резервную копию" только диаграммы, вы можете это сделать, см. Мой ответ по другому вопросу.

fooobar.com/questions/253087/...

Ответ 9

Я сделал это, используя функцию MSSMS Export Data.

  • Щелкните правой кнопкой мыши по базе данных.
  • Выберите "Задачи" > "Экспорт данных", который запустит мастер.
  • Настройте оба источника данных. Я использовал собственный клиент SQL Server 11, но другие, вероятно, будут работать. Нажмите Далее.
  • Выберите Копировать данные из одной или нескольких таблиц или представлений (по умолчанию)
  • В списке выберите таблицу sysdiagrams.
  • Выберите "Редактировать сопоставления". Убедитесь, что установлен флажок "Включить идентификационную вставку". Нажмите ОК.
  • Нажмите "Далее", затем нажмите "Готово" для выполнения.

Работал как шарм.

Ответ 10

Безопасный способ сделать это:

merge into TcsDev1..sysdiagrams as Trg
using TcsDev2..sysdiagrams as Src
on Trg.name = Src.Name
when not matched by target then
insert (name, principal_id, [version], [definition]) 
values (src.name, src.[principal_id],  src.[version], src.[definition] );