解决方法
可以做到这一点,但是这是一种皇室痛苦.这是一个进程和一些脚本的大纲.
图表存储在名为sysDiagrams的“系统”表中.当您单击SSMS中的图节点时,会创建此表(仅?),它会询问您是否要创建支持图的对象,并单击“是”.在源数据库和目标数据库上都这样做.
在“源”数据库中创建图表.
查看sysDiagrams的结构和内容.请注意,columns diagram是一个标识列.每个图表存储1行. (你不在乎,但sql 2000中曾经是4或5行)
要复制到同一sql实例上的另一个数据库,最简单的方法是在表之间执行INSERT … SELECT ….使用该标识列,您将不得不对SET IDENTITY_INSERT感到惊讶,也可能在目标计算机上分配一个新的标识值.有刺激性,但不是极度困难.
以下脚本将将所有图表从一个数据库复制到同一个服务器上的另一个(这是我如何归档复杂的图表,使得waaaay太长时间无法创建,容易被丢弃和重新创建的数据库):
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,definition from SourceDatabase.dbo.sysDiagrams SET identity_insert sysDiagrams off
要复制到其他sql实例(或服务器)上的另一个数据库,那么它变得更加困难.我使用临时创建的链接服务器定义,使用脚本我多年前出汗的子弹,并且不想再次修改(即发布一个不同的问题,所以知道谁可以告诉你他们如何工作),并修改脚本与适当的四部分命名约定.其他选项(OPENROWSET等)也是可行的,但我对这些选项的了解甚少.