【问题标题】:Identify relationships between multiple databases in SQL在 SQL 中识别多个数据库之间的关系
【发布时间】:2019-11-19 11:10:51
【问题描述】:

我正在将应用程序从一台服务器迁移到另一台服务器。根据这个应用程序的连接字符串,它正在触及不同的数据库。这意味着 DB1 中的视图查询将触及 DB2 中的表。因此,在迁移此应用程序时,我经常会看到“数据库不可用”错误链,每次看到此类错误时,我都必须迁移该特定数据库。

我想知道,既然我们有 ER 图来了解数据库中表之间的关系,那么 SQL Server 中是否有任何方法可以了解服务器中不同数据库之间的关系/链接?有什么工具可以做到这一点吗?

【问题讨论】:

  • 确实没有一种简单的方法可以做到这一点。 sys.sysdepends 使用 object_id,当对象在另一个数据库中时,它是无用的。
  • 如果使用链接服务器访问其他数据库,您可以对链接服务器名称(在服务器上定义)进行代码搜索。可以使用SELECT * FROM sys.servers 找到链接的服务器。代码搜索查询可在以下位置找到:stackoverflow.com/questions/14704105/…codeproject.com/Tips/603593/…

标签: sql sql-server


【解决方案1】:

根据您拥有的数据库数量,您可以通过以下方式快速找到它(所需搜索的数量 = 服务器中可用数据库的数量):

  1. 使用 Red-get 的“SQL 搜索”应用程序 (https://www.red-gate.com/dynamic/products/sql-development/sql-search/download) 并通过选择依次搜索其他数据库名称 您感兴趣的数据库。选择所有对象。
  2. 如果您有面向元数据的设计(一个存储过程循环遍历来自不同数据库的不同其他存储过程/函数的名称,这些数据库作为元数据存储在表中并使用包装存储过程执行它们),那么您将使用 SQL Locator 软件 (http://www.sqllocator.com/Downloads.html) 在 SQL 表值中搜索数据库名称。

以上两个软件都是免费的。

  • 您需要安装 SSMS (SQL Server Management Studio) 才能使用此应用程序。安装后,“SQL Search”将作为附加组件直接在您的 SSMS 中可用。

  • 可以通过提供 SQL Server 名称和您的 SQL Server 凭据直接使用 SQL 定位器。

注意:- 上述步骤将帮助您从同一 SQL Server 中的某个数据库中找出引用的数据库。如果您需要从链接服务器中查找数据库(我不相信您的问题是这样问的),那么您将不得不巧妙地利用上述相同的工具通过搜索外部服务器名称来查找外部服务器引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多