SQLCMD在指定输入文件运行时,能否获取该文件的名称?
获取SQLCMD输入文件名称的方法
SQLCMD本身没有内置变量可以直接获取当前运行的输入脚本文件路径或名称,不过可以通过以下两种手动方式实现你要的效果:
调用时传入自定义变量
在命令行启动SQLCMD时,用-v参数显式指定脚本路径变量,比如:sqlcmd -S 你的服务器名 -d 目标数据库 -i "C:\脚本路径\你的脚本.sql" -v ScriptPath="C:\脚本路径\你的脚本.sql"这样脚本里就能直接使用
$(ScriptPath)变量,和你示例中的写法完全兼容,不管是打印日志还是插入记录表都能正常工作。借助脚本批量传递
如果是通过批处理(Windows)或Shell脚本(Linux)批量调用SQLCMD,可以先把脚本文件路径存为变量,再传递给SQLCMD:
Windows批处理示例:@echo off set "SCRIPT_FILE=C:\脚本路径\你的脚本.sql" sqlcmd -S 你的服务器名 -d 目标数据库 -i "%SCRIPT_FILE%" -v ScriptPath="%SCRIPT_FILE%"Linux bash示例:
SCRIPT_FILE="/home/user/scripts/你的脚本.sql" sqlcmd -S 你的服务器名 -d 目标数据库 -i "$SCRIPT_FILE" -v ScriptPath="$SCRIPT_FILE"
需要说明的是,官方文档里确实没有内置支持自动获取输入文件路径的功能,你找不到相关记录是正常的,这个需求只能通过手动传递变量的方式解决。
内容的提问来源于stack exchange,提问作者bielawski
相关产品推荐
相关产品推荐

