Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 迭代服务器的SQL Server脚本第2部分_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server 迭代服务器的SQL Server脚本第2部分

Sql server 迭代服务器的SQL Server脚本第2部分,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我试图创建一个脚本来从服务器中的多个数据库获取数据,然后我希望它继续到下一个服务器并执行相同的操作。我已经创建了一个脚本来处理一台服务器及其所有数据库。脚本对于所有数据库、所有服务器中的表都是相同的 我的问题是,如何让脚本识别链接到当前服务器的链接服务器,并继续从这些服务器获取数据?是否存在某个人可能知道的隐藏存储过程或命令?我基本上希望通过我的所有服务器运行下面的脚本。当它在一台服务器中完成对所有数据库的迭代后,我希望它继续到下一台服务器并执行相同的操作。我将把所有数据保存在一个表中 下面是我

我试图创建一个脚本来从服务器中的多个数据库获取数据,然后我希望它继续到下一个服务器并执行相同的操作。我已经创建了一个脚本来处理一台服务器及其所有数据库。脚本对于所有数据库、所有服务器中的表都是相同的

我的问题是,如何让脚本识别链接到当前服务器的链接服务器,并继续从这些服务器获取数据?是否存在某个人可能知道的隐藏存储过程或命令?我基本上希望通过我的所有服务器运行下面的脚本。当它在一台服务器中完成对所有数据库的迭代后,我希望它继续到下一台服务器并执行相同的操作。我将把所有数据保存在一个表中

下面是我的脚本,我想让脚本在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 ''['+@DBNAME+']'', SUM(PGCOUNT), sum(filesize/1024/1024), sys.databases.CREATE_DATE
    FROM SYS.DATABASES, ['+@DBNAME+'].dbo.tbldoc WHERE created between ''2011-02-06'' and ''2011-02-12''
    and sys.databases.name='''+@DBNAME+''' 
    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
我应该添加另一个光标吗?此脚本的某些内容:


从master..sysservers中选择srvname,其中srvname像'sql%'

我只想将您的光标嵌套在链接服务器上运行的另一个光标中。从srvproduct字段中的master..sysservers中筛选服务器列表,该字段等于SQL Server。如果有什么是你不想要的列表,就把它放在not in子句中。然后,修改内部光标,将服务器名称添加到查询中,从而为您提供一个由四部分组成的表名。

如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮{},以精确设置格式并使用语法突出显示它!