如何将数据库图从一个服务器移动到另一个服务器

9 sql sql-server sql-server-2005 sql-server-2008 database-diagram

我在测试数据库中创建了一个新的数据库图表,它位于sitde01服务器中.现在我想将它移动到另一台服务器.如何将其迁移到另一台服务器.

Phi*_*ley 16

它可以做到,但这是一个皇家的痛苦.这是一个过程和一些脚本的概述.

图表存储在名为sysDiagrams的"系统"表中.单击SSMS中的图表节点时会创建此表(仅?),它会询问您是否要创建支持图表的对象,然后单击"是".在源数据库和目标数据库上执行此操作.

在"源"数据库中创建图表.

查看sysDiagrams的结构和内容.请注意,该列diagram_id是标识列.每个图表都存储1行.(你不在乎,但它曾经是SQL 2000中的4行或5行.)

要复制到同一SQL实例上的另一个数据库,最简单的方法是在表之间执行INSERT ... SELECT .... 使用该标识列,您将不得不与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
Run Code Online (Sandbox Code Playgroud)

要复制到另一个SQL实例(或服务器)上的另一个数据库,它会变得更加困难.我使用临时创建的链接服务器定义,使用多年前我冒充子弹的脚本,并且从不想再次修改(即发布一个不同的问题,以便有人知道可以告诉你它们是如何工作的),并用适当的四个修改脚本 - 部分命名约定.其他选项(OPENROWSET等)是可能的,但我对它们的熟悉程度更低.