サーバー内の複数のデータベースからデータを取得するためのスクリプトを作成しようとしていますが、次のサーバーに引き続き同じスクリプトを実行します。私はすでにあるサーバーとそのすべてのデータベースで動作するスクリプトを作成しました。スクリプトは、すべてのデータベース、すべてのサーバーのテーブルで同じです。サーバー経由で繰り返すSQL Serverスクリプト
私の質問は、現在のサーバーにリンクしているこれらのサーバーからデータを取得し続けるリンクサーバーをスクリプトで認識させるにはどうすればよいですか?誰かが知っている隠されたストアドプロシージャやコマンドがありますか?ここで
は、以下の私のスクリプトです、私は現在、私のサーバの1つにリンクされている5台のサーバーを介して実行するスクリプトを持つようにしたい:
SET NOCOUNT ON
DECLARE @DBNAME NVARCHAR(MAX)
DECLARE @DBNAME1 NVARCHAR(MAX)
DECLARE @varSQL NVARCHAR(MAX)
DROP TABLE TEMPIMGCOUNTERSERVER3
CREATE TABLE TEMPIMGCOUNTERSERVER3
(DBname NVARCHAR(MAX),
Images INT,
FileSize INT,
DBCreation DATETIME)
DECLARE DBNAME CURSOR FAST_FORWARD FOR
select name from sys.databases where [NAME] LIKE 'Z%' AND create_date between '2011-02-06' and '2011-02-12'
ORDER BY [create_date]
OPEN DBNAME
FETCH NEXT FROM DBNAME INTO @DBname
WHILE (@@FETCH_STATUS=0)
BEGIN
Set @varSQL='INSERT INTO TEMPIMGCOUNTERSERVER3 (DBNAME, IMAGES, FileSize, DBCreation)
SELECT ''['[email protected]+']'', SUM(PGCOUNT), sum(filesize/1024/1024), sys.databases.CREATE_DATE
FROM SYS.DATABASES, ['[email protected]+'].dbo.tbldoc WHERE created between ''2011-02-06'' and ''2011-02-12''
and sys.databases.name='''[email protected]+'''
GROUP BY sys.databases.NAME, sys.databases.CREATE_DATE'
EXEC SP_EXECUTESQL @varSQL
FETCH NEXT FROM DBNAME
INTO @DBNAME
END
CLOSE DBNAME
DEALLOCATE DBNAME
INSERT TEMPIMGCOUNTERSERVER3 (DBNAME, IMAGES, FILESIZE)
SELECT @@SERVERNAME + ' ' +'TOTAL IMAGES AND FILE SIZE', SUM(IMAGES), SUM(FILESIZE) FROM TEMPIMGCOUNTERSERVER3
SELECT DBNAME, IMAGES, FILESIZE, convert(VARCHAR(10),
DBCREATION, 101) AS DBCREATION FROM TEMPIMGCOUNTERSERVER3
GROUP BY DBNAME, IMAGES, FILESIZE, convert(VARCHAR(10), DBCREATION, 101)
HAVING SUM(IMAGES) is not null
ORDER BY DBCREATION