私は次のコード(カーソル)を持っています:
DECLARE @SN VARCHAR(20);
DECLARE @sql NVARCHAR(MAX);
DECLARE C CURSOR LOCAL FAST_FORWARD
FOR SELECT DISTINCT(SERVERNAME) FROM INSTALLATION
where DATABASETYPE = 'MsSql' AND SERVERNAME IN ('x');
OPEN C;
FETCH NEXT FROM C INTO @SN;
WHILE (@@FETCH_STATUS = 0)
BEGIN
PRINT @SN;
-- you could loop here for each database, if you'd define what that is
SELECT name
FROM master.dbo.sysdatabases
WHERE name not in ('master','model','msdb','tempdb');
SET @sql = N'SELECT TOP 1 NAME FROM TABLE ';
EXEC sp_executesql @sql;
FETCH NEXT FROM C INTO @SN;
END
CLOSE C;
DEALLOCATE C;
すべてのサーバーをループして、データベースの一部 (すべてではない) で select ステートメントを実行できるようにしたいと考えています。
クエリは次のようなものです。
SELECT TOP 1 NAME FROM TABLE
カーソルを実行しているサーバーには、他のすべてのサーバーがリンクサーバーとして含まれています。