2013-04-05 113 views
1

所以我一直在尋找一種方法來開發一個腳本,該腳本將使用SQL Server Management Studio從我的項目文件夾中執行其他腳本,到目前爲止,其他解決方案都無法工作。我試着寫一個腳本,曾在它的sqlcommandline東西:SQL Server Management Studio - 執行其他腳本的腳本?

sqlcmd -S.\SQLExpress -imyScript.sql; 

,並沒有工作和使用@\path\to\script.sql將不工作,要麼使任何其他的想法我理解?或者我應該開始着手編寫一個程序?在這種情況下,有人可以指出我的方向是正確的嗎?

非常感謝您的幫助。

回答

0

個人而言,我會考慮編寫存儲過程。 MSDN documentation是不錯的,如果你快速搜索,網上有很多資源。

或者你可以做這樣的事情做到這一點(你需要有權執行命令shell等):

CREATE TABLE ##SQLFiles (SQLFileName VARCHAR(2000)) 
GO 

INSERT INTO ##SQLFiles 
EXECUTE master.dbo.xp_cmdshell 'dir /b "C:\SQL Scripts\*.sql"' 
GO 

DECLARE cFiles CURSOR LOCAL FOR 
    SELECT DISTINCT [SQLFileName] 
    FROM ##SQLFiles 
    WHERE [SQLFileName] IS NOT NULL AND 
      [SQLFileName] != 'NULL' 
    ORDER BY [SQLFileName] 

DECLARE @vFileName   VARCHAR(200) 
DECLARE @vSQLStmt    VARCHAR(4000) 

OPEN cFiles 
FETCH NEXT FROM cFiles INTO @vFileName 
WHILE @@FETCH_STATUS = 0 
BEGIN 
    -- The following SET command must be on a single line or else an error will be generated. 
    -- It is split in this script for readability purposes. 
    SET @vSQLStmt = 'master.dbo.xp_cmdshell ''osql -S Server Name -U User Name -P Password 
        -d Database Name -i "C:\SQL Scripts\' + @vFileName + '"''' 
    EXECUTE (@vSQLStmt) 

    FETCH NEXT FROM cFiles INTO @vFileName 
END 

CLOSE cFiles 
DEALLOCATE cFiles 
GO 

DROP TABLE ##SQLFiles 
GO 
+1

嗯謝謝你,我想我會考慮開發程序,但我非常感謝您的協助。 – Jfabs 2013-04-05 14:30:39