我的团队最近使用TFS源文件从头开始重建他们的SQL Server 2005开发数据库.
之后,我们有一个很好的干净数据库,更贴近我们的测试和生产环境.但是,我们也丢失了旧开发数据库中几个月创建的数据库图表.
有谁知道将SQL Server 2005数据库关系图从一个数据库导出到包含相同表和架构对象的另一个数据库的方法?
更新:
Valentin和CMS的答案都应该可以正常使用.我接受了Valentin的,因为它是第一次,我已经开始使用它了.
我最终创建了一个名为'robsysdiagrams'的临时表,并将所有数据复制到该表中,并使用Microsoft SQL Server数据库发布向导将数据插入到磁盘的脚本.然后我在脚本中将robsysdiagrams重命名为sysdiagrams并在目标数据库上运行它.一切都很好.
我在寻找解决同一问题的过程中遇到了一个古老而优雅的答案: bcp
提取:
bcp YOUR_DATABASE..sysdiagrams out YOUR_DIAGRAM_NAME.bcp -c -T -S SERVERNAME
要导入:
(cd to the directory the diagram is in) bcp YOUR_DATABASE..sysdiagrams in YOUR_DIAGRAM_NAME.bcp -c -T -S SERVERNAME
假设您可以访问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
Rob,有一个表'sysdiagrams',它包含图表定义.尝试创建表并从旧数据库插入数据.它应该工作.
HTH
您可以将图表(存档链接)编写为.sql文件的脚本 ...
我认为这是更好的方法:
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