0

我想运行指定文件夹中的所有脚本。我创建了包含脚本路径的 sql-cursor。

我想执行脚本并记录它们的使用情况,但是如何在其他 sql 脚本中运行 sql 脚本。Visual Studio 中的 sqlproj 中使用了 ':r' 语句,但在我的情况下它不起作用,那么我该如何解决呢?我使用 SQL Server 2016。

    FETCH NEXT FROM ScriptsFromFolderCursor INTO @scriptName
    WHILE @@FETCH_STATUS = 0
    BEGIN 
        DECLARE @fullScriptPath nvarchar(1024) = @MyPath + @scriptName

        -- WHAT SHOULD BE THERE ??
        :r @fullScriptPath

        -- log usage of script
        INSERT INTO  DeployedSqlScripts([ScriptName], [Version],[DateUtc])
        VALUES (@fullScriptPath, @DbVersion, GetUtcDate())

        FETCH NEXT FROM ScriptsFromFolderCursor INTO @scriptName
    END

我收到错误:

错误 SQL72001:包含的文件 @fullScriptPath (C:\GIT\myPath\@FULLSCRIPTPATH) 不存在。(54, 8)

4

2 回答 2

0

不知道你得到了什么错误,但看起来你正在尝试使用 SQLCMD 语句(:r

您是否在 SQLCMD 模式下执行过此脚本?文档 - https://docs.microsoft.com/en-us/sql/tools/sqlcmd-utility

于 2017-04-19T10:19:20.803 回答
0

如果您愿意使用 T-SQL 以外的脚本环境,您可以使用 execsql.py ( http://pypi.python.org/pypi/execsql ) 执行此操作。INCLUDE 元命令 ( http://pythonhosted.org/execsql/#include ) 将允许您在运行脚本中插入另一个 SQL 脚本,以及在目录 ( http://pythonhosted.org/中导入所有 CSV 文件的示例execsql/#example13)可以很容易地适应用于将所有 SQL 脚本包含在一个目录中。

免责声明:我写了 execsql.py。

于 2017-05-06T21:52:49.280 回答