【问题标题】:SQL - Export Database Diagram - SSMS 17SQL - 导出数据库图 - SSMS 17
【发布时间】:2019-07-26 19:41:34
【问题描述】:

我正在尝试使用 SSMS 17 将 3 个数据库 (DB) 图从一个数据库导出到另一个数据库。我尝试了此处建议的解决方案:

How to export a SQL Server 2008 Database Diagram to another DB?

到目前为止,我发现的其他几个网站也推荐使用此解决方案,将表“sysdiagrams”的内容从源数据库复制到目标数据库(在我的情况下为 3 行)。

完成此操作后,我可以确认两个“sysdiagrams”表具有相同的内容,并且图表已导入目标数据库。然而,在每个导入的图表中,我只看到表格而不是关系。我觉得奇怪的是,在加载图表中的表格时,关系很快就可见了。加载所有表格后,它们就会消失。

有谁知道可能是什么问题?据我了解,此解决方案对于 SSMS 的早期版本是成功的。

任何帮助都非常感谢:)!

【问题讨论】:

  • 检查您认为存在于目标数据库中的关系是否真的存在。当图表中有“线条”时,图表编辑器将按照您描述的方式运行;编辑器将查找每条“线”的关系,并将删除验证失败的“线”(在最初绘制它们之后)。
  • 感谢您的回答 PeterB!
  • 当我说缺少关系时,我的意思是连接表格的线条很快出现然后消失。在源数据库中,我使用线条创建了关系(不使用查询)。它们一直出现在源图中。据我了解,图表的所有信息都包含在“sysdiagrams”表中。可能还有其他一些必须更新的数据?什么可能导致验证失败?
  • 我倾向于说缺少关系。您可以使用图表编辑器在两个表之间创建关系:它将在表之间创建一个关系,并在其中放置一个图。通过您的图表复制操作,您仅复制所有 ,而不是实际的 关系。因此,当您在编辑器中查看复制的图表时,线条会消失,因为关系是数据库中内容的“真相”。您需要编写 ALTER TABLE ... ADD CONSTRAINT ... 来重新创建关系,或尝试使用数据库差异工具。
  • 嗨彼得 B,我确认目标数据库中不存在关系。所以,你是对的。该图没有线条,因为没有可视化的关系。您能否创建一个答案以将其标记为“答案”?

标签: sql-server ssms database-diagramming


【解决方案1】:

检查目标数据库中是否确实存在关系(外键约束),因为如果它们不存在,那么图表编辑器的行为将与您描述的完全相同:最初它将绘制所有线,然后开始查找每个 FK每条线所代表的关系,它会一一删除没有找到关系的线。

为了澄清,您可以使用图表编辑器通过在表之间绘制一条线来创建 FK 关系(然后编辑器在图表中创建一条线实际的 FK 约束)。但是使用像您这样的“复制图表”操作,您只复制线数据而不复制实际关系。

要在目标数据库中添加缺少的关系,您可以编写ALTER TABLE ... ADD CONSTRAINT ... 语句,或者在目标数据库上再次使用图表编辑器,或者您可以尝试使用数据库差异工具。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 2023-03-27
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    相关资源
    最近更新 更多