读书人

DTS 将数据从Oracle导入到SQL SERVER中

发布时间: 2012-02-19 19:43:37 作者: rapoo

DTS 将数据从Oracle导入到SQL SERVER中的使用参数的问题
Oracle库中有表A

SQL SERVER 2000 库中有表B,C

C表存放每次导入的数据的max(id)号

欲将表A导入到表B(A,B两表的结构相同),每次导入:
select * from a where id > c.id

我在包设计中
1\使用"动态属性任务"先把C.id值取到全局变量
2\在转换数据任务中的源中使用SQL查询 select * from a where id > ?
然后点击"参数.."按钮,接错
HResult of 0x80040e51 (-2147217839) returned
出现意外错误.返回了错误结果,但没有错误信息.


同样的情况,但是我改成从MSsql数据库导到MSsql数据库,都不报错,也能正常使用参数,

为什么从Oracle数据库导到Mssql数据库就不行了,是不支持这样,还是说我哪里写错了.

------------------------------------------------
也想过别的办法来导数据,比如用链接服务器
EXEC sp_addlinkedserver 'OracleServer', 'Oracle', 'MSDAORA', 'dali'
go
EXEC sp_addlinkedsrvlogin 'OracleServer', 'FALSE', NULL, 'system', 'manager1'
go

select * from OPENQUERY(oracleserver, 'SELECT * FROM 表A') a where id >(select max(id) from 表C)
但问题是我在Oracle数据库中表A相当大(几千万条记录),使用以上语句根本出来不结果.
Oracl数据库我只有访问权,没办法做什么配置及更改.
而OpenQuery 又不支持变量参数.我该 怎么办.

哪位高手来分析一下这两种操作的解决方法??在线等啦,比较急!谢谢>



[解决办法]
配置透明网关的步骤


前一段花了些时间配置 TRANSPARENT GATEWAY
现在把心得贴出来与大家共享

我的OS是WIN2000
ORACLE 9.0
SQLSERVER2000
HOSTNAME : SVR1
都使用 tcp/ip 默认端口


1: 安装 TRANSPARENT GATEWAY 选件(我安装的是FOR MSSQL)
安装完成了以后有这样一个目录 oracle_home\ora90\tg4msql

2: 配置 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=RECOVER

4: 重启 DATABASE AND LISTENER

5: 配置 tnsnames.ora
tg_sql =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SVR1)(PORT = 1521))
)
(CONNECT_DATA =
(SID = sql2000)
)
(HS=OK)
)

6: 建立 DATABASE LINK
CREATE PUBLIC DATABASE LINK DB_SQL
CONNECT TO SA IDENTIFIED BY PASSWORD
USING 'tg_sql'

7: 完成,测试
select * from t_test@db_sql

8: 请注意使用 DBLINK 时,INIT.ORA中 GLOBAL_NAME 的设置,
如果为 ture , 请使用DBLINK的全称,可在 all_db_links 中查到,
如果为 FALSE, 不必使用全称,当出现
“ORA-02019:为找到远程数据库的连接说明”
时,请使用全称,如:
select * from t_test@db_sql.US.ORACLE.COM

[解决办法]
学习
[解决办法]

探讨
学习

读书人网 >SQL Server

热点推荐