背景:運行SQL腳本
我有一個測試服務器(SQL Server 2008 R2中),其中包含一個數據庫中,我儲存其他數據塊從我的生產服務器信息(混合的SQL Server 2008 R2和2012年)。我有每月運行的多個腳本,它從服務器上的每個數據庫收集信息,例如VLF的數量。我一直在做的是在我的每個生產服務器上運行腳本,將結果複製到.txt文件中,然後將.txt文件導入我的測試服務器上的數據庫中。
問題:
如何自動化我的劇本到每一個生產服務器 沒有我登錄到每個生產服務器和運行每個腳本上運行?
如何將收集到的信息插入我的測試服務器數據庫DB 而無需複製/粘貼?
示例腳本:
SET NOCOUNT ON;
CREATE TABLE #to
(
ServerName varchar(20),
CaptureDate DATETIME,
DBName SYSNAME,
FileCount INT
);
DECLARE @v INT;
SELECT @v = CONVERT(INT, PARSENAME(CONVERT(VARCHAR(32),
SERVERPROPERTY('ProductVersion')), 4));
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'CREATE TABLE #ti
(
' + CASE WHEN @v >= 11 THEN 'RecoveryUnitId INT,' ELSE '' END + '
FileId int
, FileSize nvarchar(255)
, StartOffset nvarchar(255)
, FSeqNo nvarchar(255)
, Status int
, Parity int
, CreateLSN nvarchar(255)
);';
SELECT @sql = @sql + '
INSERT #ti EXEC ' + QUOTENAME(name)
+ '.sys.sp_executesql N''DBCC LOGINFO WITH NO_INFOMSGS'';
INSERT INTO
#to(DBName, FileCount) SELECT ''' + name + ''', COUNT(*) FROM #ti;
TRUNCATE TABLE #ti;'
FROM sys.databases;
EXEC sp_executesql @sql;
SELECT @@ServerName,GETDATE(),DBName,FileCount
FROM #to
ORDER BY DBName
DROP TABLE #to;
任何幫助將不勝感激。
dbsql也是命令行l訪問SQL Server。您可以使用'-i'標誌運行它來調用腳本名稱。 – 2013-05-01 15:24:34