小编inf*_*dba的帖子

链接服务器查询在哪里执行?

我有两个实例ServerAServerB,并且我在ServerA 中ServerB创建了一个链接服务器作为Linksrv_B

我可以使用四部分命名约定在ServerA上执行查询:

SELECT * FROM Linksrv_B.master.sys.databases
Run Code Online (Sandbox Code Playgroud)

OPENQUERY()

SELECT * FROM OPENQUERY(Linksrv_B, 'SELECT * FROM master.sys.databases')  
Run Code Online (Sandbox Code Playgroud)

我知道链接服务器使用分布式事务作为行集跨异构数据库工作。

  1. OLEDB 提供程序在哪里启动/连接?服务器A还是服务器B?
  2. 查询是在 ServerA 还是 ServerB 上执行的?优化器是否在哪个服务器上发挥作用?
  3. 结果集在哪里缓存?
  4. 谁能给我们一个详细的解释链接服务器是如何工作的。

sql-server linked-server distributed-transactions openrowset distributed-queries

8
推荐指数
1
解决办法
1753
查看次数

检索表列中选择查询的值

对于以下查询,我需要替代游标/while 循环:

我们有一个表格,如下面的屏幕截图所示,包含以下列:ID, Module, Query。该表包含近 100,000 条记录。目前,我们正在使用游标和 while 循环将选择查询的输出插入到临时表中,我们将根据ID.

在此处输入图片说明

我需要帮助编写一个查询,该查询将Query列作为输入并像函数一样将结果作为值提供。

我试图创建其执行动态SQL功能,但它失败,因为EXECsp_executesql没有一个函数中允许的。尝试使用存储过程也不起作用,因为我们只能将一个查询作为参数从该表中传递以获取作为值的输出。

每个查询返回一个值(一列,一行)。不同的查询可能返回不同数据类型的值;所有都应转换为nvarchar.

任何解决方案将不胜感激。

sql-server

2
推荐指数
1
解决办法
4118
查看次数