【问题标题】:SQL Server 2005, how to copy a Database Diagram to another serverSQL Server 2005,如何将数据库图复制到另一台服务器
【发布时间】:2011-03-19 14:48:27
【问题描述】:

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

我找到了this,并仔细修改,只复制了一张图:

INSERT INTO dbB.dbo.sysdiagrams 
SELECT [name],[principal_id],[version],[definition]
FROM dbA.dbo.sysdiagrams
Where name = 'MyDiagramName'

但我需要将其复制到另一台服务器(从开发到生产)。

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

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

【问题讨论】:

    标签: sql sql-server-2005 tsql ssms


    【解决方案1】:

    刚刚找到this solution

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

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

    【讨论】:

      【解决方案2】:

      首先:在Destination Server 内部从Source Server 创建一个链接服务器。

      要创建Link Server,请使用this Link

      第二个:使用这个

      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
      

      【讨论】:

      • 我在问题中指定我不想使用链接服务器,因为该图需要包含在升级脚本中。还是谢谢。
      • 对链接服务器使用开放数据源。
      • 你就是不明白。如果目标服务器没有“看到”源服务器怎么办?
      • 好的。此链接可能对您有所帮助:codeproject.com/Articles/43076/…
      • 我认为您需要为源数据库中的所有图表备份脚本,然后您可以在不考虑目标数据库上存在源数据库的情况下运行此备份。
      【解决方案3】:

      【讨论】:

      • 这使用“临时表”。不适用于另一个服务器场景。
      • 你用过链接服务器吗?
      • 是的,但我不想这样做,这是问题的一部分。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多