1

因此,我一直在寻找一种方法来开发一个脚本,该脚本将使用 SQL Server Management Studio 从我的项目文件夹中执行其他脚本,到目前为止,其他解决方案都没有奏效。我尝试编写一个包含 sqlcommandline 内容的脚本:

sqlcmd -S.\SQLExpress -imyScript.sql; 

那没有用,据我了解,使用@\path\to\script.sql也不会起作用,所以还有其他想法吗?还是我应该开始考虑编写程序?在这种情况下,有人能指出我正确的方向吗?

提前感谢您的任何帮助。

4

1 回答 1

0

就个人而言,我会考虑编写存储过程。MSDN 文档很好,如果您快速搜索,在线上有很多资源。

或者你可以做这样的事情来让它发生(你需要有执行命令外壳等的权限):

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
于 2013-04-05T14:19:54.753 回答