【发布时间】:2013-04-30 17:33:01
【问题描述】:
我编写了一个小批处理文件,通过 sqlcmd 连接 15 个 SQL Server,并将 t-sql 查询的输出存储在 HTML 格式的输出文件中。当所有 SQL Server 都启动并运行时,脚本运行良好,但是每当 SQL Server 中的任何一个关闭时,就会在输出文件中保存以下错误 - “HResult 0xFFFFFFFF,级别 16,状态 1 SQL Server 网络接口:定位服务器/实例时出错指定 [xFFFFFFFF]。"
我没有写这样模糊的错误,而是尝试使用 IF ELSE 编写连接失败的错误处理程序,但没有成功,需要帮助。
我尝试为错误处理(如果 SQL 实例关闭)编写的部分代码如下,输入文本文件包含以下两个用于所有 sql 服务器的值 --> SQLinstancename,Application name
FOR /F "tokens=1,2 delims=," %%G in (%CD%\SQLServerList_SQLReport.txt) DO (
sqlcmd -E -S %%G -q "exit(select @@servername)"
IF ERRORLEVEL==0 (
sqlcmd -E -S %%G -i %MainSCRIPT% -v appname = "%%H" >> %HTMLFILE%
) ELSE (
ECHO "<tr><tr rowspan=1><td align=center bgcolor = gray rowspan=1><b><font face=verdana color=white size=1>%%H</font></b></td>" >> %HTMLFILE%
ECHO "<td align=center rowspan=1><font face=verdana size=1>%%G</font></td>" >> %HTMLFILE%
ECHO "<td align=center colspan =6 rowspan=1><font face=verdana size=1 color=RED><b>Unable to connect to SQL Server, check the connectivity*</b></font><tr></tr><tr></tr>" >> %HTMLFILE%
))
【问题讨论】:
-
有什么问题 - 请提供错误详情
-
问题是当服务器或 sql server 关闭时,代码无法识别错误级别,而不是进入 else 条件,它仍在记录错误“HResult 0xFFFFFFFF, Level 16, State 1 SQL Server Network接口:查找指定的服务器/实例时出错 [xFFFFFFFF]。”在 html 文件中
标签: batch-file sqlcmd