我可以使用存储过程从不同的数据库中选择记录(在SQL中)吗?我有一个来自每个数据库的表,我想加入它们。
感谢。
答案 0 :(得分:5)
是的,只要你有权限。如果您有Linked Server设置,也可以跨服务器。
Cross DB示例:
SELECT * FROM localTable as lt
INNER JOIN otherDB.dbo.OtherTable as ot
ON lt.ID = ot.id
Cross Server示例(假设您已创建链接服务器):
SELECT * FROM localTable as lt
INNER JOIN ServerName.otherDB.dbo.OtherTable as ot
ON lt.ID = ot.id
答案 1 :(得分:3)
是。只需使用3部分命名语法database_name.schema_name.table_name
。
您还需要启用跨数据库所有权链接。 (不推荐)或使用this approach.
答案 2 :(得分:1)
使用完全限定的表名。例如,如果您在数据库ABC中并想要访问数据库XYZ中的表格表,请将其作为XYZ.dbo.table
访问
(它可能是dbo或其他东西,取决于表的所有者。通常是dbo)
答案 3 :(得分:1)
尝试以下内容:
SELECT a.userID, b.usersFirstName
FROM databaseA.dbo.TableA a
INNER JOIN database B.dbo.TableB b ON a.userID = b.userID
答案 4 :(得分:0)
另一种在某些环境中效果更好的技术是定义远程表的同义词。这使您可以拥有指向远程对象的本地引用。如果您处于必须迁移事物的环境中,并且从一个环境到下一个环境的相对位置可能不同,则特别有用。这是一个快速概述: