我想从指定的文件夹运行所有脚本。我创建了包含脚本路径的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)
答案 0 :(得分:0)
不确定您获得了什么错误,但从它的外观来看,您正在尝试使用SQLCMD语句(:r
)
您是否在SQLCMD模式下执行了此脚本? Documentation - https://docs.microsoft.com/en-us/sql/tools/sqlcmd-utility
答案 1 :(得分:0)
如果您愿意使用除T-SQL之外的脚本环境,则可以使用execsql.py(http://pypi.python.org/pypi/execsql)执行此操作。 INCLUDE metacommand(http://pythonhosted.org/execsql/#include)将允许您在正在运行的脚本中插入另一个SQL脚本,并且可以轻松地将目录中导入所有CSV文件的示例(http://pythonhosted.org/execsql/#example13)用于包括所有目录中的SQL脚本。
免责声明:我写了execsql.py。