Sql 如何将数据库关系图从一台服务器移动到另一台服务器
我在测试数据库中创建了一个新的数据库关系图,它位于sitde01服务器中。现在我想把它移到另一台服务器上。如何将其迁移到另一台服务器。为了移动数据库关系图,您需要迁移该关系图中包含的所有表和触发器。要做到这一点,最简单的方法是备份数据库并在另一台服务器上还原。这是可以做到的,但这是一件非常痛苦的事情。下面是流程的概要和一些脚本 图表存储在名为sysDiagrams的“系统”表中。此表(仅?)在您单击SSMS中的“图表”节点时创建,它询问您是否要创建支持图表的对象,然后单击“是”。在源数据库和目标数据库上都这样做 在“源”数据库中创建一个或多个图表 回顾系统图的结构和内容。请注意,列Sql 如何将数据库关系图从一台服务器移动到另一台服务器,sql,sql-server,sql-server-2005,sql-server-2008,database-diagram,Sql,Sql Server,Sql Server 2005,Sql Server 2008,Database Diagram,我在测试数据库中创建了一个新的数据库关系图,它位于sitde01服务器中。现在我想把它移到另一台服务器上。如何将其迁移到另一台服务器。为了移动数据库关系图,您需要迁移该关系图中包含的所有表和触发器。要做到这一点,最简单的方法是备份数据库并在另一台服务器上还原。这是可以做到的,但这是一件非常痛苦的事情。下面是流程的概要和一些脚本 图表存储在名为sysDiagrams的“系统”表中。此表(仅?)在您单击SSMS中的“图表”节点时创建,它询问您是否要创建支持图表的对象,然后单击“是”。在源数据库和目标
diagram\u id
是一个标识列。为每个图存储1行。(您不在乎,但在SQL 2000中它过去是4或5行。)
要复制到同一SQL实例上的另一个数据库,最简单的方法是执行INSERT。。。选择。。。在桌子之间。有了标识列,您将不得不对SET identity_INSERT大惊小怪,并可能在目标计算机上分配一个新的标识值。令人恼火,但不是很难
以下脚本将所有关系图从一个数据库复制到同一服务器上的另一个数据库(这就是我如何从容易被删除和重新创建的数据库中归档耗时太长的复杂关系图的方式):
要复制到另一个SQL实例(或服务器)上的另一个数据库,就更难了。我使用临时创建的链接服务器定义,使用几年前我一直在使用的脚本,不想再修改(即,发布不同的问题,以便知道它们是如何工作的)并使用适当的四部分命名约定修改脚本。其他选项(OPENROWSET等)也是可能的,但我对它们更不熟悉。如果您想将图表从一个实例或服务器移动到另一个实例或服务器,并且不想恢复整个数据库,可以执行以下操作
这个解决方案对我非常有效。当然,如果您不想要所有的图表,或者如果目标数据库中存在其他图表,则必须过滤select语句并执行一些identity\u insert操作,但这应该不会太难。备份和还原是我知道您可以迁移图表的唯一方法。我不想进行备份和还原,因为服务器中的表不一样。除了备份和恢复,还有其他方法吗?图表只是所有PK和FK的直观视图。。。您可以轻松地创建一个脚本,用此信息更新现有数据库。@balexandre-一点也不正确。在图表中,可以有文本注释。另外,图表中表格的图形布局可以传达表格在逻辑上是如何组合在一起的。+1:这对我很有用。因为我在同一台服务器上,所以这并不是什么大不了的事,但在找到这个脚本之前,我有点挣扎。
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
USE TargetDatabase
SET identity_insert sysDiagrams on
INSERT sysDiagrams (name, principal_id, diagram_id, version, definition)
select name, principal_id, diagram_id, version, definition
from TempDatabase.dbo.sysDiagrams
SET identity_insert sysDiagrams off