小编Dan*_*Dan的帖子

在批处理文件中使用SQLCMD,如何解析响应并检查错误?

我正在使用SQLCMD来获取表中的行数,但我也想知道查询是否遇到错误.

我使用的sqlcmd看起来像这样:

sqlcmd -S %server% -U %user% -P %pass% -b -Q "select count(*) from %table%"
Run Code Online (Sandbox Code Playgroud)

如果有效,它将返回:

-----------
      10205

(1 rows affected)
Run Code Online (Sandbox Code Playgroud)

(注意,-------上面有一个空行,我没有指定列名.)

如果我传入一个不存在的表,我得到以下响应:

Msg 208, Level 16, State 1, Server devServer, Line 1
Invalid object name 'dbo.no_table'.
Run Code Online (Sandbox Code Playgroud)

由于我有-b标志,我可以检查ERRORLEVEL的值(在本例中为1).

要存储count变量,我一直在使用以下行:

for /F %%i in ('sqlcmd -S %server% -U %user% -P %pass% -b -Q "select count(*) from %table%" ^| findstr /r "[^(][0-9]"') do SET /a rec_count=%%i
Run Code Online (Sandbox Code Playgroud)

在for之后,%errorlevel%返回0.即使在do内,errorlevel也是0.

是否有任何简单的方法来运行sqlcmd,如果没有错误则存储计数,如果有错误则打印两行?

sql-server batch-file sqlcmd

1
推荐指数
1
解决办法
4239
查看次数

标签 统计

batch-file ×1

sql-server ×1

sqlcmd ×1