当前位置: 代码迷 >> Sql Server >> sqlserver 通过链接服务器访问oracle的有关问题
  详细解决方案

sqlserver 通过链接服务器访问oracle的有关问题

热度:16   发布时间:2016-04-27 12:08:58.0
sqlserver 通过链接服务器访问oracle的问题
通过sqlserver的链接服务器 建立到oralce10g的连接,用来读取数据和更新oracle表数据,更新几个表的操作放在了一个过程里面,昨天运行着还可以,今天就报错了,错误提示:
链接服务器"LINK_ORA"的 OLE DB 访问接口 "MSDAORA" 返回了消息 "ORA-01476: 除数为 0
"。
消息 7330,级别 16,状态 2,第 1 行
无法从链接服务器 "LINK_ORA" 的 OLE DB 访问接口"MSDAORA"提取行。
即使我单独执行一条删除操作也会出同样的错误(语句为DELETE FROM LINK_ORA..OLAP.B_DIM_SUB_COMPANY)
奇怪的是 这样的操作有5张表,基本上是一样的,只有一张提示错误,其他表都可以执行成功,不知道是哪里的问题
网上搜了一下资料 说是10.1.0.2的bug,当前oracle版本为10.2.0.1.0.

高手请指点!

------解决方案--------------------
SQL code
配置透明网关的步骤前一段花了些时间配置 TRANSPARENT GATEWAY现在把心得贴出来与大家共享我的OS是WIN2000  ORACLE 9.0SQLSERVER2000HOSTNAME : SVR1都使用 tcp/ip 默认端口1: 安装 TRANSPARENT GATEWAY 选件(我安装的是FOR MSSQL)   安装完成了以后有这样一个目录 oracle_home\ora90\tg4msql2: 配置 LISTENER.ORA    (SID_DESC =      (GLOBAL_DBNAME = tg4sql) # 可自己命名      (PROGRAM = tg4msql)      (SID_NAME = sql2000)  # SID 自己命名      (ORACLE_HOME = D:\oracle\ora90)    )3: 在 oracle_home\ora90\tg4msql\admin   建文件 init<SID>.ora 由于LISTENER里定义SID为 sql2000   因此文件名为:initsql2000.ora   其中内容为:   HS_FDS_CONNECT_INFO=svr1.master # svr1为SQL服务器名   HS_FDS_TRACE_LEVEL=OFF   HS_FDS_RECOVERY_ACCOUNT=RECOVER   HS_FDS_RECOVERY_PWD=RECOVER4: 重启 DATABASE AND LISTENER5: 配置 tnsnames.oratg_sql =   (DESCRIPTION =     (ADDRESS_LIST =       (ADDRESS = (PROTOCOL = TCP)(HOST = SVR1)(PORT = 1521))     )     (CONNECT_DATA =       (SID = sql2000)     )     (HS=OK)   ) 6: 建立 DATABASE LINKCREATE PUBLIC DATABASE LINK DB_SQLCONNECT TO SA IDENTIFIED BY PASSWORDUSING 'tg_sql'7: 完成,测试  select * from [email protected]_sql8: 请注意使用 DBLINK 时,INIT.ORA中 GLOBAL_NAME 的设置,  如果为 ture , 请使用DBLINK的全称,可在 all_db_links 中查到,  如果为 FALSE, 不必使用全称,当出现   “ORA-02019:为找到远程数据库的连接说明”  时,请使用全称,如:  select * from [email protected]_sql.US.ORACLE.COM
------解决方案--------------------
看上去不像删除时候的错误啊?

是不是ORACLE里面自己有什么触发器之类的东西?

导致 除数为 0
  相关解决方案