我写了一个触发器来更新链接服务器上的本地表和类似表。
CREATE TRIGGER myTtableUpdate ON myTable
AFTER UPDATE
AS
IF (COLUMNS_UPDATED() > 0)
BEGIN
DECLARE @retval int;
BEGIN TRY
EXEC @retval = sys.sp_testlinkedserver N'my_linked_server';
END TRY
BEGIN CATCH
SET @retval = sign(@@error);
END CATCH;
IF (@retval = 0)
BEGIN
UPDATE remoteTable SET remoteTable.datafield = i.datafield
FROM my_linked_server.remote_database.dbo.myTable remoteTable
INNER JOIN inserted i ON (remoteTable.id = i.id)
END
END -- end of trigger
不幸的是,当连接断开时,我收到错误消息
'Msg 3616,Level 16,State 1,Line
2''Transaction 在触发器中注定失败。Batch has been aborted'
并回滚本地制作的更新。
有没有办法维护这个错误并保持本地更新?
请注意,我在运行 Windows XP Pro 的两台 PC 上都使用 SQL Server 2005 Express Edition。
编辑 1:SQL 服务器是 Express 版 编辑 2
:两台 PC 都运行 Windows XP Pro,所以这些不是服务器