【问题标题】:How to execute a stored procedure present in database A/Server A and query database B/Server B as well?如何执行数据库 A/Server A 中存在的存储过程并同时查询数据库 B/Server B?
【发布时间】:2021-10-06 01:30:36
【问题描述】:

我有一个包含大量存储过程的配置数据库,然后我有大量数据库,它们都是一个系统的一部分,位于同一个数据库服务器上。

config 数据库中的存储过程在执行时,经常会查询其他数据库,因为配置和所有其他数据库都在同一个数据库服务器上,所以可以这样做。

但是随着时间的推移,随着数据的增长、客户的增长、数据库的增长,这台数据库服务器正在变慢。所以现在我们想把我们的一些数据库放在不同的数据库服务器上,但我们无法这样做,因为这些数据库和配置数据库彼此紧密耦合,因为配置数据库中的许多存储过程查询其他数据库数据库也是如此。

有什么方法可以执行config 数据库/服务器 A 中存在的存储过程,但该存储过程也在查询服务器 B 上的数据库 2?

如果不是,那么将所有其他数据库与配置数据库分离的最佳方法是什么?我知道通过实现 ORM 或其他方式来摆脱存储过程可能是一种选择,但由于我们有 1000 多个存储过程,这将非常耗时。

【问题讨论】:

  • 链接服务器。

标签: sql-server database stored-procedures architecture software-design


【解决方案1】:

假设您的配置数据库是服务器 A,并且您的所有用户数据库都在服务器 A 上,并且您的 SP 使用 3 部分命名来查询多个数据库。 现在您想将其中一个数据库 (DB1) 迁移到服务器 B。现在 DB1 在服务器 A 上不存在,它现在在服务器 B 上。然后您可以在服务器 A 上创建一个名为 DB1 的占位符 DB。然后,您将创建一个到服务器 B 的链接服务器,并在占位符 DB1 中创建别名,该别名使用具有相同表名的链接服务器对象。这样,您的数千个 SP 及其配置无需更改。 但是,链接服务器可能会引入性能问题,因为连接和索引效率较低。

【讨论】:

    猜你喜欢
    • 2011-08-01
    • 2014-10-13
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多