sql server 2008 r2 - Can you use a Try Catch in a stored procedure to "do" something? -
i have linked servers need updates.
begin try delete [sdny-pand\barcode].barcodes.dbo.barcodes plant_location <> 'jefferson, ga123' -- bla bla bla end try begin catch --print ' in error now' set @strbody = 'it appears server holds barcode data unavailable. please validate plugged in , turned on is' set @mailto = 'thatgroup@work' set @esubject = 'message barcode server update process' exec msdb.dbo.sp_send_dbmail @recipients =@mailto, @body = @strbody, @body_format ='text', @subject = @esubject, @profile_name ='colossusmain' end catch
will process or there better way?
you can better checking linked server status, way. there built-in procedure called sp_testlinkedserver. raise error if linked server unreachable, preventing trying deletes etc. , sending catch instead. if there further errors due delete, say, catch invoked, error_message() different...
begin try exec sp_testlinkedserver n'sdny-pand\barcode'; delete [sdny-pand\barcode].barcodes.dbo.barcodes 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
if server unreachable, error message like:
ole db provider "sqlncli11" linked server "sdny-pand\barcode" returned message "login timeout expired".
ole db provider "sqlncli11" linked server "sdny-pand\barcode" returned message "a network-related or instance-specific error has occurred while establishing connection sql server. server not found or not accessible. check if instance name correct , if sql server configured allow remote connections. more information see sql server books online.".
sql server network interfaces: error locating server/instance specified [xffffffff].
Comments
Post a Comment