我试图通过批处理命令检查数据库是否存在使用sqlcmd.exe,并将根据结果执行其他操作

时间:2015-02-26 00:37:29

标签: batch-file sqlcmd

我正在编写一个检查数据库是否存在的批处理文件,并根据结果批处理将执行其他语句。

FOR /F "usebackq" %%S IN ( `sqlcmd.exe -S %server% -d master -U %username% -P !password! ^
    -Q "set nocount on; select count(*) from dbo.sysdatabases where [name]='$(inputDatabase)'" -v inputDatabase="%databaseName%"` ) DO (
 SET existsDB=%%S
 )
if !existsDB! EQU 1 (
    REM DO SOMETHING
) else (
    REM DO SOMETHING
)

动态分配数据库名称失败。返回“Sqlcmd:'TestDB':无效参数。输入' - ?'寻求帮助。“

我很感激任何解决问题的方向。

1 个答案:

答案 0 :(得分:2)

以下代码不仅检查数据库名称,还检查登录凭据和服务器名称。

`SET _chk_DB=server
FOR /F "usebackq" %%S IN (`sqlcmd.exe -S %_svr% -d master -U %_usr%
-P %_psw% ^
-Q "set nocount on; select count(*) from dbo.sysdatabases where
[name]='%_dtb%'" `) DO (  
SET _chk_DB=%%S  
)
IF [%_chk_DB%]==[server] SET _returncode=1
IF [%_chk_DB%]==[login] SET _returncode=2
IF [%_chk_DB%]==[0] SET _returncode=4
`