Sql server 将insert添加到触发器内的链接服务器

Sql server 将insert添加到触发器内的链接服务器,sql-server,sql-insert,linked-server,Sql Server,Sql Insert,Linked Server,我正在尝试运行一个触发器,该触发器允许我将本地表上插入的数据插入到链接服务器的表中。这就是我所做的: use [medb] ALTER TRIGGER [dbo].[trigger1] ON [dbo].[tbl1] AFTER INSERT AS BEGIN INSERT into openquery(DEV, 'tbl_remotetbl') select * from inserted END 但它给出了这样一个错误: 无法处理对象“tbl\u remotet

我正在尝试运行一个触发器,该触发器允许我将本地表上插入的数据插入到链接服务器的表中。这就是我所做的:

use [medb]

ALTER TRIGGER [dbo].[trigger1] ON [dbo].[tbl1]
AFTER INSERT
AS
BEGIN

    INSERT into openquery(DEV, 'tbl_remotetbl') select * from inserted
        END
但它给出了这样一个错误:

无法处理对象“tbl\u remotetbl”。OLE DB提供程序 链接服务器“DEV”的“MSDASQL”表示该对象 没有列,或者当前用户没有该列的权限 反对

我有什么问题?
注意:我正在使用SQL Server 2008 R2

是否尝试在触发器外部运行该命令?它起作用了吗? 以下是我在openquery中使用的语法:

INSERT INTO OPENQUERY(LinkedServer_Name,
'select remote_field_1,remote_field_2 from remote_Schema.remote_table')
select local_column1,local_column2
FROM local_Table 

现在,说到这里,让这句话在触发器中起作用是我做不到的。当它自己执行上述语句时,效果非常好。但一旦将其放入触发器中,与该触发器相关的整个事务就会失败。我的意思是,即使触发触发器的insert语句也不会执行,主表也不会插入要插入其中的数据。

我遇到了同样的问题,花了很多时间试图弄清楚如何使openquery语句在update/insert/delete触发器中工作,但没有成功

所以,这里有一个替代解决方案,也许这可以解决您的问题,这是在一个场景中,我需要将数据从MSSQL传递到MySQL数据库

首先,创建一个保留表,这样您就可以存储插入表中的临时信息,该表只保存我需要传递给MySQL的数据

create table holding_table (ID int, value2 int)
触发器将把数据插入到保留表中,而不是直接发送到MySQL

ALTER TRIGGER [dbo].[temp_data_to_mysql] 
ON [dbo].[source_table] 
FOR insert
 AS
 BEGIN

    INSERT into holding_table (ID,Stock)select a, b from inserted

    END
  GO 
之后,您只需在SQLServer代理中创建一个任务,这样它就可以每N分钟执行一次存储过程

希望它能有所帮助,我知道这是一个解决办法,但经过一些调查和测试,我无法使openquery在触发器进程中工作