Я пытаюсь создать триггер, который будет вставлять некоторые данные в таблицу на linkedserver в Ms Sql 2012. Я хочу иметь возможность проверить, является ли соединение с сервером активным, и если это не значит, что я хочу зарегистрировать сообщение else, но не прервать всю транзакцию и откат. Я хочу, чтобы запрос, который запустил триггер, продолжился.Ms Sql Проверка связи соединения соединения с триггером
Я попробовал метод, описанный здесь How to test linkedserver's connectivity in TSQL Это делает вид работы, но ошибка все еще брошенный и моя транзакция откатывается с сообщением.
Ошибка была вызвана во время запуска триггера. Партия была прервана, и транзакция пользователя, если она есть, была отброшена назад.
Ошибка связана с чем-либо, связанным с сбитым связующим сервером, который вызывает откат, несмотря ни на что, и CATCH, похоже, не останавливает его.
Пример запуска:
CREATE TRIGGER [dbo].[TEST1_TRG]
ON [dbo].[Test1]
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
SET NOCOUNT ON;
declare @srvr nvarchar(128), @retval int;
set @srvr = 'loopback';
begin try
exec @retval = sys.sp_testlinkedserver @srvr;
end try
begin catch
set @retval = sign(@@error);
end catch;
print @retval
END
У меня нет контроля над вызывающими запросами, они могут поступать из любого места. Поэтому я действительно могу работать только в контексте моего триггера. – GimpArm