从另一个SQL脚本运行SQL脚本



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

我想执行它们的脚本和日志使用,但是如何在其他SQL脚本中运行SQL脚本。在Visual Studio中的SQLProj中使用了":R"语句,但在我的情况下它不起作用,那么我该如何解决?我使用SQL Server2016。

    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:随附的文件@fullscript (c: git mypath @fullscriptPath( 不存在。(54,8(

不确定您会遇到什么错误,但是通过它的外观,您正在尝试使用SQLCMD语句(:r(

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

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

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

相关内容

  • 没有找到相关文章

最新更新