2013-05-01 141 views
1

背景:運行SQL腳本

我有一個測試服務器(SQL Server 2008 R2中),其中包含一個數據庫中,我儲存其他數據塊從我的生產服務器信息(混合的SQL Server 2008 R2和2012年)。我有每月運行的多個腳本,它從服務器上的每個數據庫收集信息,例如VLF的數量。我一直在做的是在我的每個生產服務器上運行腳本,將結果複製到.txt文件中,然後將.txt文件導入我的測試服務器上的數據庫中。

問題:

  1. 如何自動化我的劇本到每一個生產服務器 沒有我登錄到每個生產服務器和運行每個腳本上運行?

  2. 如何將收集到的信息插入我的測試服務器數據庫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; 

任何幫助將不勝感激。

+0

dbsql也是命令行l訪問SQL Server。您可以使用'-i'標誌運行它來調用腳本名稱。 – 2013-05-01 15:24:34

回答

3
  1. 創建每個生產SQL Server的鏈接服務器的測試數據庫

    此鏈接提供的鏈接服務器的詳細信息 http://msdn.microsoft.com/en-us/library/ff772782.aspx

  2. 創建SQL Server作業運行在SQL將數據插入到測試服務器上的表中的腳本(通過鏈接服務器)

+0

感謝您的回覆... 當我創建作業腳本時,是否需要使用作業屬性中的「目標多個服務器」選項?我錯過了如何將測試服務器的作業腳本與生產服務器聯繫起來。 – 2013-05-01 16:18:58