日期:2014-05-19  浏览次数:20493 次

求一个触发器或解决办法
有个sql   server表A如果有数据插入的话就向另一台Oracle数据库的表b中插入该条数据。
如果直接搞不行的话,我想先在A中触发让新添数据追加到C:aa.txt中,然后再由啊aa.txt存储到b中,参考代码(论坛中搜到的)如下:
1、向已经存在的文本文件中追加数据
insert       into      
    opendatasource( 'MICROSOFT.JET.OLEDB.4.0 ', 'Text;DATABASE=C:\ ')...[aa#txt]      
    select       *       from       a
2、把文本文件导入库中
EXEC   master..xp_cmdshell   'bcp   "dbname..tablename "   in   c:\DT.txt   -c   -Sservername   -Usa   -Ppassword '
各位高手给段正确的解决办法吧!!!!!

------解决方案--------------------
添加链接服务器
写触发器
插入时把内容插入的链接服务器中

------解决方案--------------------
oracle不熟
------解决方案--------------------
oracle不熟
幫頂吧
------解决方案--------------------
简单方法:
企业管理器-> 安全性-> 链接服务器-> 右键新建
------解决方案--------------------
添加链接服务器比较好,这样就相当对一个表操作了
EXEC sp_addlinkedserver
@server = 'ORacleDB ',
@srvproduct = 'Oracle ',
@provider = 'MSDAORA ',
@datasrc = 'MyServer '
GO

在触发器中写INSERT语句就好了
------解决方案--------------------
insert into OPENQUERY(链接服务器, 'select * from 表B ' )
select * from 表A
------解决方案--------------------
鏈服務器數據源選“Microsoft OLE DB Provider for Oracle”
數據源:你配置的Tnsnames.ora中的數據源
再補上過程登錄名稱和密碼就可用了
------解决方案--------------------
一般裝完Oracle客戶端後在C:\oracle\ora92\network\admin\Tnsnames.ora

格式如下(其中ERPSERVER就是數據源):

ERPSERVER=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.19.11.1)(PORT = 1521))
)
(CONNECT_DATA =
(SID = erp)
(SERVER = DEDICATED)
)
)
------解决方案--------------------
用 replication 吧, 这个保险一些

触发器不够稳定, 而且如果插入失败还影响产生些触发的业务
而 replication 坏掉只影响同步, 修复或者重建 replication 都可以解决问题
------解决方案--------------------
replication是用在存储过程中的么?
--------------------------------------

复制/订阅, 这个是用配置的, 不是用存储过程的(当然, 如果你喜欢调用存储过程去完成配置, 那也行, 只是太复杂了一点)
------解决方案--------------------
具体实现 2000 和 2005 有所不同, 建议先看看联机帮助, 了解一下相关的背景, 同时也了解一下配置
------解决方案--------------------
sql下建,
前提是oracle客戶端能連得通行(你用 SQL PLUS 看能不能連),鏈服務器才能建好!
------解决方案--------------------
以为楼主用的是 2005 呢
2000对oracle的复制/订阅似乎支持得并不怎么样