Sql 如何对此使用EXECUTE命令?

Sql 如何对此使用EXECUTE命令?,sql,sql-server,exec,execute,Sql,Sql Server,Exec,Execute,我们有一个SQL Server 2014,大约有20多个链接的oracle服务器。 我需要不时检查所有这些链接服务器的Oracle端状态的用户ID 我目前为此使用以下OPENQUERY语句: SELECT * FROM OPENQUERY (MYLINKEDORACLESERVER,'SELECT * FROM SYS.USER_USERS') 产出: 然而,由于服务器的数量,我们正在寻找一种更自动化的方法来实现这一点 SYS.SERVERS输出我添加了OPENQUERY语法的所有链接orac

我们有一个SQL Server 2014,大约有20多个链接的oracle服务器。 我需要不时检查所有这些链接服务器的Oracle端状态的用户ID

我目前为此使用以下OPENQUERY语句:

SELECT * FROM OPENQUERY (MYLINKEDORACLESERVER,'SELECT * FROM SYS.USER_USERS')
产出:

然而,由于服务器的数量,我们正在寻找一种更自动化的方法来实现这一点

SYS.SERVERS输出我添加了OPENQUERY语法的所有链接oracle服务器的列表

SELECT 'select * from openquery ('+ name +',''SELECT * FROM USER_USERS'')' FROM sys.servers 
WHERE provider='OraOLEDB.Oracle'
产出:

如何利用EXECUTE语句,使其自动执行输出的每个OPENQUERY语句

期望输出:


一种方法是字符串聚合它们,然后在单个批处理中执行它们。由于您不在SQL Server 2017+中,因此将使用旧的FOR XML PATH方法:

声明@SQL nvarcharMAX, @CRLF nchar2=NCHAR13+NCHAR10; 设置@SQL=stufflect@CRLF+N'SELECT*来自OPENQUERY'+QUOTENAMEs.[name]+',选择*来自USER_USERS;' 从sys.servers 对于XML路径N,键入.value'/text[1]',nvarcharMAX',1,2,N; PRINT@SQL-你最好的朋友 EXEC sys.sp_executesql@SQL;
根据问题指南,请不要发布代码、数据、错误消息等的图像-复制或在问题中键入文本。请保留图像用于图表或演示渲染错误,这些内容无法通过文本准确描述。