sql - 可以从 t-sql 中远程执行查询吗?

标签 sql sql-server sql-server-2005 t-sql

首先是原始问题:

假设有 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/

相关文章:

c# - SQL Server 中的日期列到 ASP.NET 模型中的 System.DateTime

sql - SQL 第 2 部分中按中断系列升序/降序对结果最小值/最大值进行分组

sql - 通过某些值在两个范围日期之间生成数据

SQL Server 代理作业 : How to execute a job step without executing the entire job

sql-server-2005 - SQL order by 和 left outer join 没有正确的顺序

sql-server - 为什么 UPDATE 比 SELECT 花费的时间长得多?

sql - TSQL:如何在单个选择中使用可能为 null 或 int 的变量

SQL 更新 SET 子查询?

sql - 事务如何与 node-postgres 一起工作?

sql-server - 在Django数据库中插入多个值-原始sqlite语句