首页 > 解决方案 > 批处理文件 - 使用 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

标签: batch-filesqlcmd

解决方案


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

执行查询.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上面的代码使用标准命令为脚本和日志目录提供的位置。一旦你确认它可以工作,你可以恢复到 上面几行Set /P中使用的格式。4
请注意,您的脚本不为最终用户输入信息提供任何验证例程。如果他们输入了不正确的信息,sqlcmd将使用它来运行,并且可能会出现问题或产生错误。

请提供相应的反馈;谢谢你。


推荐阅读