Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 我试图通过批处理命令使用sqlcmd.exe检查数据库是否存在,并根据结果执行其他操作_Batch File_Sqlcmd - Fatal编程技术网

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

Batch file 我试图通过批处理命令使用sqlcmd.exe检查数据库是否存在,并根据结果执行其他操作,batch-file,sqlcmd,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="%databa

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

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”:参数无效。请输入“-?”以获取帮助


如果您能提供任何解决此问题的指导,我将不胜感激。

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

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

为什么不直接做
…其中name='%databaseName%'
?此外,您还可以使用
sp_helpdb
列出您的数据库。与您现在使用的
for
循环不同,请尝试
sqlcmd-S%server%-U%user%-P!密码-Q“EXEC sp_helpdb”| find/i“%databaseName%”NUL&&(rem数据库存在)| |(rem数据库不存在)
非常感谢这一帮助。@rojo:不应使用此选项,因为它可能导致错误的查找。例如,您正在寻找数据库“test”,而您的服务器持有名为“test1”的数据库。在这种情况下,您的命令指示“test”数据库存在。@frantakocurek因此使用
findstr
并设置单词边界,然后。