MS SQL Server 中是不是有任何方法可以使用某种链接将表的一列映射到另一个数据库?

Posted

技术标签:

【中文标题】MS SQL Server 中是不是有任何方法可以使用某种链接将表的一列映射到另一个数据库?【英文标题】:Is there any way in MS SQL Server to map one column of a table to another database using some sort of link?MS SQL Server 中是否有任何方法可以使用某种链接将表的一列映射到另一个数据库? 【发布时间】:2021-07-21 17:33:44 【问题描述】:

例如,如果我在其中有 DB_1table Table_1 以及该表中的几列,包括 Column_5。 然后有第二个database 本地DB_2Table_6 并在其中Column_6

有没有办法在DB_1.Table_1.Column_5DB_2.Table_6.Column_6 之间创建某种链接,以便在DB_1.Table_1.Column_5 中完成选择或插入时,它知道在DB_2.Table_6.Column_6 中获取或设置该数据?

我知道我可以将两者同步和/或使用触发器,但是

    我们不想占用 DB_1 中的空间(在两个地方存储相同的数据)并且 不想修改位于 DB_1 之上的更高级别的应用程序来更改查询以使用来自链接服务器的列。

此时,DB_2 之上没有任何应用程序。

【问题讨论】:

【参考方案1】:

当你做选择时,你可以做跨数据库连接:

select ...
from [db1].[dbo].[table1]
join [db2].[dbo].[table2]
on ...

在此处阅读更多信息:https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/cross-database-queries?view=sql-server-ver15

关于纠缠值,您可以在[db1].[table1] 上创建一个触发器,该触发器将update [db2][table2]

【讨论】:

谢谢。正如我所提到的,我们不想在 db1.table1 上存储副本,而只想存储一个链接。这个想法是您只需从 [db1].[dbo].[table1] 中选择 *,它就会知道通过仅在其中存储某种链接来从 db2 获取 column5 字段。我想这是不可能的? @JohnWatt 有可能,请参阅我的回答。它不涉及将表从一个数据库复制到另一个数据库。 @JohnWatt 这种方法将所有表留在原处并执行跨数据库查询和触发器。 也可以创建访问多个数据库的视图:***.com/questions/2143199/… 系统如何知道匹配的行?如果两个数据库中所有行中的所有值都相同 - 但您不想再使用 DB1 中的表,则可以重命名该表并创建指向 DB2 的同义词。

以上是关于MS SQL Server 中是不是有任何方法可以使用某种链接将表的一列映射到另一个数据库?的主要内容,如果未能解决你的问题,请参考以下文章

MS SQL Server - 列出所有会话上下文值

仅使用脚本在 MS SQL Server 之间移动多个表

我可以将MS Access连接到SQL Server而不是特定的SQL Server数据库吗?

MS SQL Server 2005 中的 LIMIT 样式功能

除非我停止任何本地 SQL Server 实例,否则 Docker、MS SQL Server、SMMS 无法连接

在 MS SQL Server Management Studio 中处理事务的最佳方式