Powershell调用Sqlcmd工作目录
我的文件夹结构中有一个Powershell脚本,如下所示:Powershell调用Sqlcmd工作目录,sql,powershell,Sql,Powershell,我的文件夹结构中有一个Powershell脚本,如下所示: ── Versions/ └── v025/ └── v025.sql Update.ps1 RunScript.sql Update.ps1文件具有以下命令 Invoke-SqlCmd -InputFile "./RunScript.sql" -ServerInstance $server -Database $database -Username $user -Passwo
── Versions/
└── v025/
└── v025.sql
Update.ps1
RunScript.sql
Update.ps1文件具有以下命令
Invoke-SqlCmd -InputFile "./RunScript.sql" -ServerInstance $server -Database $database -Username $user -Password $pass
RunScript.sql具有以下功能:
:r v025\v025.sql
执行的结果消息是:
Invoke-SqlCmd : Cannot find path 'v025\v025.sql' because it does not exist.
为什么会这样?文件位置正确
有什么想法吗?假设使用windows,您可能想尝试使用。\v025\v025.sql 还有,我可能错了,但我认为 调用SqlCmd-InputFile“/RunScript.sql” 应该是
调用SqlCmd-InputFile“\RunScript.sql”尝试将脚本的路径完全限定为第一个测试,检查斜杠的方向,以防它们被视为转义符。您好,谢谢您的回答。我已经试过了,效果也不错。好吧-我不太熟悉脚本
:r v025\v025中包含的SQL语法。SQL
,但通常我会认为SQL查询中执行的路径通常与服务器相关(比如备份/磁盘操作等),因为查询是远程发送到服务器并在那里执行的。如果它使用绝对路径,并且这是一个本地服务器实例。。。。这可能是为什么?嗯,这是一个蝙蝠脚本。但是我们需要迁移到PowerShell,现在出现了此错误消息。v025
是否位于Versions
目录中?无论是从Update.ps1还是RunScript.sql的上下文调用该命令,我都希望它是:r Versions\v025\v025.sql
。也许我遗漏了什么?嗨,谢谢你的回答。这会产生相同的错误:Invoke SqlCmd:找不到路径“.\v025\v025.sql”,因为它不存在。我认为这是因为RunScript.sql正在服务器上运行,而v025.sql不在服务器上(或者至少在运行它的相对路径中),我认为它不会工作。-你能让你的powershell脚本只运行v025.sql作为一个单独的调用sqlcmd吗?是的,我可以运行它并按预期运行。但这不是我需要的。我需要运行RunScript.sql,这个sql内部有几个r:命令,而且每个v0x/x0x.sql文件也有几个r:命令。