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在触发器进程中工作