Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server 2005,如何将数据库关系图复制到另一台服务器_Sql_Sql Server 2005_Tsql_Ssms - Fatal编程技术网

SQL Server 2005,如何将数据库关系图复制到另一台服务器

SQL Server 2005,如何将数据库关系图复制到另一台服务器,sql,sql-server-2005,tsql,ssms,Sql,Sql Server 2005,Tsql,Ssms,有没有办法将SQL Server数据库关系图复制到另一台服务器 我发现并修改了它,只复制了一个图表: INSERT INTO dbB.dbo.sysdiagrams SELECT [name],[principal_id],[version],[definition] FROM dbA.dbo.sysdiagrams Where name = 'MyDiagramName' 但我需要将它复制到另一台服务器上,以便开发生产 我不想创建链接服务器来执行此操作。更新的解释背后的原因是,我想在升级脚

有没有办法将SQL Server数据库关系图复制到另一台服务器

我发现并修改了它,只复制了一个图表:

INSERT INTO dbB.dbo.sysdiagrams 
SELECT [name],[principal_id],[version],[definition]
FROM dbA.dbo.sysdiagrams
Where name = 'MyDiagramName'
但我需要将它复制到另一台服务器上,以便开发生产

我不想创建链接服务器来执行此操作。更新的解释背后的原因是,我想在升级脚本中包含该图。我对数据库进行了更改,以支持新版本、新表等,我希望该图成为升级脚本的一部分。因此,最好是将其放入SQL脚本中。如果a获得了一个单独的文件以在以后手动导入,它可以完成这项工作,但不是最好的


因此,我需要以某种方式将图表定义“保存”到一个文件中,以便将其恢复到另一台服务器上。

本教程/示例将对此进行解释

刚找到

在本文中,提供了创建存储过程的代码,该存储过程生成SQL Server脚本以重新创建图表。因此,您只需将存储过程的输出保存在一个.SQL文件中,并在另一台服务器上运行它


问题是将Varbinary转换为十六进制的字符串Varchar,以便能够在插入/更新查询中使用它。但这在链接中得到了很好的解释…

首先:从目标服务器内部的源服务器创建一个链接服务器

用于创建链接服务器

第二:用这个

USE DestinationDatabase

DELETE  sysDiagrams
WHERE   name IN ( SELECT    name
              FROM      <LinkServerName>.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    <LinkServerName>.SourceDatabase.dbo.sysDiagrams

SET IDENTITY_INSERT sysDiagrams OFF

这将使用“临时表”。这对另一个服务器场景不起作用。您是否使用过链接服务器?是的,但我想不使用链接服务器,这是问题的一部分。我在问题中指定了我不想使用链接服务器,因为该关系图需要包含在升级脚本中。无论如何,谢谢。对链接服务器使用开放数据源。你就是不明白。如果目标服务器看不到源服务器怎么办?确定。这个链接可能会帮助你:我认为你需要从源数据库的所有图表备份脚本,然后你可以运行备份,而不考虑在目的地数据库的存在源数据库。