批处理文件 - 使用 sqlcmd 拒绝获取错误访问

Batchfile - getting error access is denied using sqlcmd

我正在尝试创建一个批处理文件来执行一个文件夹中的所有脚本并在另一个文件夹中打印日志并获取访问 ID 被拒绝的错误。下面是我的文件夹结构。提前致谢。

脚本路径 - C:\project\Queries_Testing\Scripts

日志 - C:\project\Queries_Testing\logs

批处理文件 - C:\project\Queries_Testing\executeQueries.bat

代码来自 executeQueries.bat

@ECHO OFF
setlocal enabledelayedexpansion

set /p serverName=Enter DB Servername :
set /p dbName=Enter Database Name :
set /p userName=Enter Username : 
set /p password=Enter password : 
set /p scriptsPath=Enter Scripts Path :
set /p output=Enter path for output: 

for %%G in (*.sql) do sqlcmd /S %serverName% /d %dbName% -U %userName% -P %password% -i"%%G" -o%output%\%%G.lng text**og

 ECHO Finished!
 pause

这是一个示例脚本,它使用了我在评论中提供的信息。

executeQueries.bat

@Echo Off
Set /P "serverName=Enter DB Server Name: "
Set /P "dbName=Enter Database Name: "
Set /P "usrName=Enter User Name: "
Set /P "password=Enter User Password: "
Set "scriptsPath=C:\project\Queries_Testing\Scripts"
Set "output=C:\project\Queries_Testing\logs"

For %%A In ("%scriptsPath%\*.sql"
) Do sqlcmd /S "%serverName%" /d "%dbName%" -U "%usrName%" -P "%password%" -i"%%A" -o"%output%\%%~nA.log"

Echo Finished!
Pause

上面的代码使用标准 Set 命令提供的脚本和日志目录位置。一旦你确认它有效,你可以恢复到上面 4 行中使用的 Set /P 格式。
请注意你的脚本确实不为最终用户输入的信息提供任何验证例程。如果他们输入了错误的信息,sqlcmd 将被 运行 使用,并且可能会出现问题或产生错误。

请相应反馈;谢谢。