如何将SQL Server数据库图表迁移到另一个数据库?

Rob*_*son 26 database sql-server sql-server-2005

我的团队最近使用TFS源文件从头开始重建他们的SQL Server 2005开发数据库.

之后,我们有一个很好的干净数据库,更贴近我们的测试和生产环境.但是,我们也丢失了旧开发数据库中几个月创建的数据库图表.

有谁知道将SQL Server 2005数据库关系图从一个数据库导出到包含相同表和架构对象的另一个数据库的方法?

更新:

Valentin和CMS的答案都应该可以正常使用.我接受了Valentin的,因为它是第一次,我已经开始使用它了.

我最终创建了一个名为'robsysdiagrams'的临时表,并将所有数据复制到该表中,并使用Microsoft SQL Server数据库发布向导将数据插入到磁盘的脚本.然后我在脚本中将robsysdiagrams重命名为sysdiagrams并在目标数据库上运行它.一切都很好.

小智 17

我在寻找解决同一问题的过程中遇到了一个古老而优雅的答案: bcp

提取:

bcp YOUR_DATABASE..sysdiagrams out YOUR_DIAGRAM_NAME.bcp -c -T -S SERVERNAME
Run Code Online (Sandbox Code Playgroud)

要导入:

(cd to the directory the diagram is in)
bcp YOUR_DATABASE..sysdiagrams in YOUR_DIAGRAM_NAME.bcp -c -T -S SERVERNAME
Run Code Online (Sandbox Code Playgroud)

  • 普通插入不适用于大图(当您要打开图时,它会显示一个弹出窗口:错误文件已损坏),使用 bcp 命令是一种切割器解决方案,它应该是唯一被接受的解决方案。 (2认同)

Kim*_*jor 16

假设您可以访问SQL Server实例中的两个数据库.

在新数据库中启用Diagrams:

在新数据库中,单击"Database Diagrams"文件夹.Sql Server Management Studio将提示您输入图表.如果您执行此步骤,则数据库中将包含sysdiagrams表.

然后执行以下操作:

INSERT INTO newdb.dbo.sysdiagrams 
     SELECT name, principal_id,[version], [definition]
       FROM olddb.dbo.sysdiagrams
Run Code Online (Sandbox Code Playgroud)


Val*_*yev 13

Rob,有一个表'sysdiagrams',它包含图表定义.尝试创建表并从旧数据库插入数据.它应该工作.

HTH


CMS*_*CMS 11

您可以将图表(存档链接)编写为.sql文件的脚本 ...


Ard*_*oli 5

我认为这是更好的方法:

USE DestinationDatabase

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)