引自皱老大的--触发器如何调用存储过程
create trigger test on tb
for insert
as
exec 存储过程名
go--存储过程如何调用触发器 
create proc test
as
update tb set ...
insert tb select ...
delete tb ...

解决方案 »

  1.   

    没做过,可不可以建个链接服务器来做,
    在触发器中exec linkedserver.dbname...
      

  2.   

    先建立链接服务器linkdb2
    trig 要重新创建
    SET ANSI_NULLS ON
    SET ANSI_WARNINGS  ON CREATE TRIGGER [TRIGGER NAME] ON [dbo].[table] 
    FOR INSERT, UPDATE, DELETE 
    AS
    SET XACT_ABORT  ON 
    exec (linkdb2..存储过程)
    SET XACT_ABORT  OFF 
    GO
    SET ANSI_NULLS OFF
    SET ANSI_WARNINGS  OFF
      

  3.   

    --http://community.csdn.net/Expert/topic/2820/2820769.xml?temp=.2209589
    --访问DB2--创建链接服务器
    EXEC sp_addlinkedserver @SERVER='srv_lnk', --链接服务器名
       @srvproduct = '',
       @provider = 'MSDASQL',
       @provstr = 'Initial Catalog=PUBS;Data Source=DB2;HostCCSID=1252;Network Address=XYZ;Network Port=50000;Package Collection=admin;Default Schema=admin;'--这个允许调用链接服务器上的存储过程
    exec sp_serveroption 'srv_lnk','rpc out','true' --添加登陆用户
    exec sp_addlinkedsrvlogin @rmtsrvname = 'srv_lnk', @useself = 'false', @locallogin = 'sa', @rmtuser = 'DB2User', @rmtpassword = 'DB2Password'
    --进行查询(如果是调用存储过程,则将查询语句改为调用存储过程的语句)
    select * from OPENQUERY (srv_lnk,'SELECT * FROM DBName2.Table1Name')