我想从指定文件夹运行所有脚本。我创建了包含脚本路径的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。