当前位置: 代码迷 >> Oracle开发 >> 通过sqlserver的表 更新 Oracle的表 如何做?
  详细解决方案

通过sqlserver的表 更新 Oracle的表 如何做?

热度:352   发布时间:2016-04-24 07:26:20.0
通过sqlserver的表 更新 Oracle的表 怎么做??
sqlserver 2008 有 A表  
字段 Id name
  1 wang
  2 li
  3 chen
oracle 11g 有 B表 
有 字段Id name
  1 null
  2 null



在 sqlserver2008 上 写 语句 更新oracle 的表  
根据A表 的 name 更新 B表的 Name 条件 ID 相等 

而且 我直接 更新oracle 的值 可以 
UPDATE OPENQUERY(ora, 'SELECT * FROM B) SET name = 'wang' WHERE id = '1'

ora 位 链接Oracle服务器 别名

两个表连接 更新不会了 望 大虾 帮助???


注: selserver2008 上 已经建有 oracle 的 链接服务器 


------解决方案--------------------
标准SQL 更新语句不会写?

你不是做好链路了么,相对SQL就基本透明了啊
------解决方案--------------------
哪里执行不下去,有提示吗
------解决方案--------------------
1、安装oracle 的transparent gateway 透明网关。
安装ORACLE 选择自定义安装, 然后再选择 安装透明网关,再进去选择 安装FOR SQLSERVER 的组件。


2、修改 oraclehomeora92tgsmsqladmininittg4msql.orq 文件

HS_FDS_CONNECT_INFO="SERVER=YIRONG-NO1;DATABASE=jsoct"
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
说明 可以通过 ORACLE 工具中的migration WorkBench 进行配置。(过程中需要配置ODBC)

3、建立监听 修改oracle 的 oraclehomeora92networkadminlistener.ora 文件。


# LISTENER.ORA Network Configuration File: F:oracleora92networkadminlistener.ora
# Generated by Oracle configuration tools.

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = yirong-no1)(PORT = 1521))
)

)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = F:oracleora92)
(PROGRAM = extproc)
)

(SID_DESC =
(GLOBAL_DBNAME = ora9i2)
(ORACLE_HOME = F:oracleora92)
(SID_NAME = ora9i2)
)

#连接 sqlserver
(SID_DESC =
(GLOBAL_DBNAME = tg4msql)
(PROGRAM = tg4msql)
(SID_NAME = tg4msql)
(ORACLE_HOME = F:oracleora92)
)

)

4、修改TNS 

TG4MSQL =
 (DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
(CONNECT_DATA=(SID=tg4msql))
(HS=)
 ) 

5、创建DBLINK 说明建立的 用户名,密码要是 SQLSERVER 的用户名和密码
create PUBLIC DATABASE LINK oratoSql 
CONNECT TO sa IDENTIFIED BY "lanwei"
USING 'TG4MSQL' ;

6、测试数据的是否正常检索。
  相关解决方案