首先是原始问题:
假设有 2 个 DB:DB1 和 DB2。连接到 DB1 后,我可以像登录到 DB2 一样对 DB2 执行查询吗? 所以基本上:
- 我已连接到 DB1
- 从 TSQL 中我以某种方式连接到 DB2
- 我在本地执行查询(并等待)
- 我关闭连接并返回 DB1
- 我会完成查询的其余部分。
所以我知道我可以进行 interDB 查询,例如: select * from DB2.somedb.dbo.sometable 但这不是我想要的。
背景:
数据位于两台独立的数据库计算机上。我必须以合并两台机器上表中的数据的方式查询数据。
我已经尝试了很多方案,但每次它要么运行得很慢,要么由于一个表或另一个表中存在 XML 列而无法完成查询。
有效的解决方案(尽管是手动的)是:
- 登录到 DB2 并对某个临时表执行一半的查询
- 将临时表复制到 DB1
- 登录到 db1 并执行查询的第二部分。
最好我想把这一切都做成一个脚本,这样我就可以自动化它
最佳答案
您查看过 SQL Server 中的OPENQUERY
函数吗:
EXEC sp_addlinkedserver 'OracleSvr',
'Oracle 7.3',
'MSDAORA',
'ORCLDB'
GO
SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles')
GO
甚至是OPENROWSET
函数:
SELECT a.*
FROM OPENROWSET('SQLNCLI', 'Server=Seattle1;Trusted_Connection=yes;',
'SELECT GroupName, Name, DepartmentID
FROM AdventureWorks.HumanResources.Department
ORDER BY GroupName, Name') AS a;
使用 SQL Server 在线书籍了解更多详细信息或尝试 googlefu
关于sql - 可以从 t-sql 中远程执行查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4132876/