2013-04-29 2 views
1

Я написал небольшой пакетный файл для подключения 15 SQL-серверов через sqlcmd и сохранил вывод запроса t-sql в выходном файле формата HTML. Сценарий работает нормально, когда все серверы SQL запущены и работают, но всякий раз, когда какой-либо из SQL Server работает, тогда следующая ошибка сохраняется в выходном файле - «HResult 0xFFFFFFFF, уровень 16, состояние 1 Сетевые интерфейсы SQL Server: ошибка локализации сервера/экземпляра Указанный [xFFFFFFFF]. "Написание обработчика ошибок для экземпляра SQL-сервера в небольшой пакетной файловой программе

Вместо того, чтобы писать такую ​​неопределенную ошибку, я попытался написать обработчик ошибок для сбоя соединения, используя IF ELSE, но это не сработало, нужна помощь.

Часть кода, который я пытался писать для обработки ошибок (если экземпляр SQL вниз), как показано ниже, текст входной файл содержит следующие два значения для всех SQL-серверов -> SQLinstancename, имя приложения

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% 
)) 
+0

чем проблема - пожалуйста, дайте подробную информацию об ошибке –

+0

Проблема заключается в том, когда сервер или сервер SQL вниз код не в состоянии идентифицировать ErrorLevel и вместо того, чтобы идти в другое состояние, он по-прежнему регистрации ошибки «HResult 0xFFFFFFFF, уровень 16, Состояние 1 Сетевые интерфейсы SQL Server: ошибка определения местоположения сервера/экземпляра [xFFFFFFFF]. " в html-файле – contactng

ответ

0

Вы пропустили знак процента от переменной.

IF %ERRORLEVEL%==0 (

но в цикле вам было бы лучше использовать это, что не требует знаков процента или задержки расширения. Вы должны протестировать этот путь, потому что errorlevel 0 всегда истинно.

if not errorlevel 1 (
+0

Спасибо @foxidrive Я попытался использовать '% ERRORLEVEL% == 0', но это тоже не удалось дать результаты, в любом случае я попробую с другим параметром как' if not errorlevel 1 ('и дам вам знать – contactng

+0

' if not errorlevel 1 ('работал как charm :) – contactng

+0

вы можете предложить, как лучше эхо следовать дальше? Мне не нужно« », поскольку он разбивает html « ECHO » %% H ">>% HTMLFILE%' – contactng