我已关联需要更新的服务器。
BEGIN TRY
delete [SDNY-PAND\BarCode].Barcodes.dbo.barcodes
where Plant_Location <> 'Jefferson, GA123'
-- bla bla bla
END TRY
BEGIN CATCH
--print ' in error now'
set @strBody = 'It appears that the server that holds the barcode data
is currently unavailable. Please validate that it is plugged in
and turned on for IS'
set @MailTo = 'ThatGroup@work'
set @ESubject = 'Message from Barcode Server Update Process'
EXEC msdb.dbo.sp_send_dbmail
@recipients =@MailTo,
@body = @strBody,
@body_format ='TEXT',
@subject = @ESubject,
@profile_name ='ColossusMain'
END CATCH
这个过程会有更好的方法吗?
答案 0 :(得分:0)
顺便说一句,您可以做得比检查链接服务器状态更好。有一个名为sp_testlinkedserver的内置程序。如果链接服务器无法访问,这将引发错误,阻止您尝试任何删除等,并将您发送到CATCH。如果由于删除而导致进一步的错误,比如说,也会调用CATCH,但ERROR_MESSAGE()会有所不同......
BEGIN TRY
EXEC sp_testlinkedserver N'SDNY-PAND\BarCode';
DELETE [SDNY-PAND\BarCode].Barcodes.dbo.barcodes
WHERE Plant_Location <> 'Jefferson, GA123';
-- bla bla bla
END TRY
BEGIN CATCH
SET @strBody = N'It appears...'
+ CHAR(13) + CHAR(10) + ERROR_MESSAGE();
-- ...
EXEC msdb.dbo.sp_send_dbmail ...;
END CATCH
如果服务器无法访问,则错误消息将类似于:
链接服务器“SDNY-PAND \ BarCode”的OLE DB提供程序“SQLNCLI11” 返回消息“登录超时已过期”。
OLE DB提供程序 链接服务器“SDNY-PAND \ BarCode”的“SQLNCLI11”返回消息 “发生了与网络相关或特定于实例的错误 建立与SQL Server的连接。找不到服务器 无障碍。检查实例名称是否正确以及SQL Server是否正确 配置为允许远程连接。有关更多信息,请参阅SQL Server Books Online。“。”SQL Server网络接口:错误 找到指定的服务器/实例[xFFFFFFFF]。