SQL Server Management Studio - 执行其他脚本的脚本?

问题描述:

所以我一直在寻找一种方法来开发一个脚本,该脚本将使用SQL Server Management Studio从我的项目文件夹中执行其他脚本,到目前为止,其他解决方案都无法工作。我试着写一个脚本,曾在它的sqlcommandline东西:SQL Server Management Studio - 执行其他脚本的脚本?

sqlcmd -S.\SQLExpress -imyScript.sql; 

,并没有工作和使用@\path\to\script.sql将不工作,要么使任何其他的想法我理解?或者我应该开始着手编写一个程序?在这种情况下,有人可以指出我的方向是正确的吗?

非常感谢您的帮助。

个人而言,我会考虑编写存储过程。 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