运行 SQL 查询特定服务器名称

Running SQL query on specific server name

我目前正在 运行 在 SSMS 中执行以下查询,其中 运行 是具有以 AccountsLive 结尾的数据库的查询...无论如何也包含服务器名称还有吗?

例如,我希望下面的 运行 仅适用于以 ACCDB1 结尾的服务器名称。这完全可能吗?

DECLARE @Sql NVARCHAR(MAX);
SET @Sql = STUFF(
(SELECT NCHAR (10) + N'UNION ALL' + NCHAR(10) + N'SELECT
LEFT('+ QUOTENAME(d.name, '''') + N', LEN('+ QUOTENAME(d.name, '''') + N') - 12) AS Office,
pt_copysupp COLLATE Latin1_General_CI_AS as S_Code
FROM ' + QUOTENAME(d.name) + '.dbo.pl_transactions'
FROM sys.databases d
WHERE NAME like '%AccountsLive'
FOR XML PATH(''), TYPE)
.value('text()[1]','nvarchar(max)'), 1, 11, '');
exec(@Sql);

查询sys.servers得到名称以ACCDB1

结尾的链接服务器列表
select name
from   sys.servers
where  name like '%ACCDB1'

对于每个链接服务器 @server,使用 OPENQUERY 在该服务器上执行您的查询 @Sql。您将需要使用动态查询来形成 OPENQUERY 并执行它

declare @dsql nvarchar(max)

select @dsql = 'select * from OPENQUERY(' + QUOTENAME(@server) + ', ''' + @Sql + ''')'

print @dsql

exec sp_executesql @dsql