1SQL Server 2005 连接 Oracle
1、先在客户端安装 Oracle 客户端并配置好,使其能够连接 Oracle 服务器,配置过程略。
2、以 SA 身份登录到 SqlServer 2005 中,依次打开:服务器对象 -> 链接服务器,右键 链接服务器 -> 新建链接服务器。
如下图:
常规选项卡:
链接服务器,可以自己随便定义。这里暂定为:ORACLE-TEST
访问接口选择:Microsoft OLE DB Provider for Oracle
产品名称:描述产品,这里暂且用:Oracle
数据源 Oracle 客户端连接 Oracle 的别名
点击安全性选项卡:
如下图:
选择 “使用此安全上下文建立连接”。
远程登录:这里为 Oracle 用户名
使用密码:这里为 Oracle 用户的密码
点击确定,完成配置。
在SQL查询分析器中,可以用以下语句访问 Oracle 数据库
SELECT * FROM ORACLE_TEST(链接服务器名)..USERNAME(ORACLE 用户名).TABLENAME(ORACLE 数据表)
注:该语句的‘FROM’后一定是大写才行。
另外还可以使用如下查询
SELECT * FROM OPENQUERY(ORACLE_TEST(链接服务器名),’SELECT * FROM TABLENAME(ORACLE数据表)’ );
注:链接服务器名要大写
这里就可以对Oracle数据库进行操作了。
示例:
下面两种方法都是查询ORCLE里的数据
(1) SELECT * FROM OPENQUERY (ORACLE_TEST,' SELECT * FROM PRPDUSER ');
(2) SELECT * FROM ORACLE_TEST..PAYTEST.PRPDUSER;
--下面两种方法都是把ORACLE数据往SQLSERVER里插入
(1) INSERT INTO PRPDUSER SELECT * FROM ORACLE_TEST..PAYTEST.PRPDUSER WHERE USERCODE='5001004138';
(2) INSERT INTO PRPDUSER SELECT * FROM OPENQUERY (ORACLE_TEST,' SELECT * FROM PRPDUSER') WHERE USERCODE ='5001004138';
2复制表
2.1同数据库
2.1.1复制表结构及其数据:
2.1.1.1Oracle
CREATE TABLE EMP2 AS SELECT * FROM EMP ;( EMP2和EMP为表名)
2.1.1.2SQLServer
SELECT * INTO t FROM t_score; (t 和t_score为表名)
2.1.2只复制表结构
2.1.2.1Oracle
CREATE TABLE emp2 AS SELECT * FROM EMP WHERE 1=0;
或CREATE TABLE emp2 LIKE EMP;
2.1.2.2SQLServer
SELECT * INTO t FROM t_score WHERE 1=0;
2.2跨数据库
2.2.1复制表结构及其数据
这里主要针对的是oracle复制到sqlserver来说明
SELECT * INTO SqlTableName(sqlserver表名且表不存) FROM ORACLE_TEST(链接服务器名)..USERNAME(ORACLE 用户名).TABLENAME(ORACLE 数据表)
2.2.2只复制表结构
SELECT * INTO SqlTableName(sqlserver表名且表不存) FROM ORACLE_TEST(链接服务器名)..USERNAME(ORACLE 用户名).TABLENAME(ORACLE 数据表) WHERE 1=0;
示例:SELECT * INTO PRPDUSER FROM ORACLE_TEST..PAYTEST.PRPDUSER WHERE 1=0
2.2.3问题
1.在往SQLSERVER 里复制ORACLE表结构时,必需要保证该表在SQLSERVER里不存在。
2.另有一种情况:就是将oracle中表的结构复制到sqlserver的时候对于类型为number类 型的不能进行复制。会出现错误:为列提供的元数据不一致。 原因是:number类型精确度可以达到小数点后38位小数,由于SQL Server中没有如此高精度的数据类型,所以在没有指定NUMBER精度和小数位的情况下SQL Server会将其转换为字符串类型以满足长度和精度的需要。(目前解决的方法是:手动建表)下载本文