SQLServer链接服务器至Oracle
将SQLSERVER中的数据同步到ORACLE中

如何将SQLServer2005中的数据同步到Oracle中有时由于项目开发的需要,必须将SQLServer2005中的某些表同步到Oracle数据库中,由其他其他系统来读取这些数据。
不同数据库类型之间的数据同步我们可以使用链接服务器和SQLAgent来实现。
假设我们这边(SQLServer2005)有一个合同管理系统,其中有表contract 和contract_project是需要同步到一个MIS系统中的(Oracle9i)那么,我们可以按照以下几步实现数据库的同步。
1.在Oracle中建立对应的contract 和contract_project表,需要同步哪些字段我们就建那些字段到O racle表中。
这里需要注意的是Oracle的数据类型和SQLServer的数据类型是不一样的,那么他们之间是什么样的关系拉?我们可以在SQLServer下运行:SELECT*FROM msdb.dbo.MSdatatype_mappingsSELECT*FROM msdb.dbo.sysdatatypemappings来查看SQLServer和其他数据库系统的数据类型对应关系。
第一个SQL语句是看SQL转Oracle的类型对应,而第二个表则更详细得显示了各个数据库系统的类型对应。
根据第一个表和我们的SQLServer中的字段类型我们就可以建立好Oracle表了。
ORACLE bigint NUMBER1931ORACLE binary BLOB NULL01ORACLE binary RAW-141ORACLE bit NUMBER131ORACLE char CHAR-141ORACLE char CLOB NULL01ORACLE char VARCHAR2-141ORACLE datetime DATE NULL01ORACLE decimal NUMBER-131ORACLE double precision FLOAT NULL01ORACLE float FLOAT NULL01ORACLE image BLOB NULL01ORACLE int NUMBER1031ORACLE money NUMBER1931ORACLE nchar NCHAR-141ORACLE nchar NCLOB NULL01ORACLE ntext NCLOB NULL01ORACLE numeric NUMBER-131ORACLE nvarchar NCLOB NULL01ORACLE nvarchar NVARCHAR2 -141ORACLE nvarchar(max) NCLOB NULL01ORACLE real REAL NULL01ORACLE smalldatetime DATE NULL01ORACLE smallint NUMBER531ORACLE smallmoney NUMBER1031ORACLE sysname NVARCHAR2 12841ORACLE text CLOB NULL01ORACLE timestamp RAW841ORACLE tinyint NUMBER331ORACLE uniqueidentifier CHAR3841ORACLE varbinary BLOB NULL01ORACLE varbinary RAW-141ORACLE varbinary(max) BLOB NULL01ORACLE varchar CLOB NULL01ORACLE varchar VARCHAR2-141ORACLE varchar(max) CLOB NULL01ORACLE xml NCLOB NULL01ORACLE bigint NUMBER1931ORACLE binary BLOB NULL01ORACLE binary RAW-141ORACLE bit NUMBER131ORACLE char CHAR-141ORACLE char CLOB NULL01ORACLE char VARCHAR2-141ORACLE datetime DATE NULL01ORACLE decimal NUMBER-131ORACLE double precision FLOAT NULL01ORACLE float FLOAT NULL01ORACLE image BLOB NULL01ORACLE int NUMBER1031ORACLE money NUMBER1931ORACLE nchar CHAR-141ORACLE nchar CLOB NULL01ORACLE ntext CLOB NULL01ORACLE numeric NUMBER-131ORACLE nvarchar CLOB NULL01ORACLE nvarchar VARCHAR2-141ORACLE nvarchar(max) CLOB NULL01ORACLE real REAL NULL01ORACLE smalldatetime DATE NULL01ORACLE smallint NUMBER531ORACLE smallmoney NUMBER1031ORACLE sysname VARCHAR212841ORACLE text CLOB NULL01ORACLE timestamp RAW841ORACLE tinyint NUMBER331ORACLE uniqueidentifier CHAR3841ORACLE varbinary BLOB NULL01ORACLE varbinary RAW-141ORACLE varbinary(max) BLOB NULL01ORACLE varchar CLOB NULL01ORACLE varchar VARCHAR2-141ORACLE varchar(max) CLOB NULL01ORACLE xml CLOB NULL01ORACLE bigint NUMBER1931ORACLE binary BLOB NULL01ORACLE binary RAW-141ORACLE bit NUMBER131ORACLE char CHAR-141ORACLE char CLOB NULL01ORACLE char VARCHAR2-141ORACLE datetime DATE NULL01ORACLE decimal NUMBER-131ORACLE double precision FLOAT NULL01ORACLE float FLOAT NULL01ORACLE image BLOB NULL01ORACLE int NUMBER1031ORACLE money NUMBER1931ORACLE nchar NCHAR-141ORACLE nchar NCLOB NULL01ORACLE ntext NCLOB NULL01ORACLE numeric NUMBER-131ORACLE nvarchar NCLOB NULL01ORACLE nvarchar NVARCHAR2 -141ORACLE nvarchar(max) NCLOB NULL01ORACLE real REAL NULL01ORACLE smalldatetime DATE NULL01ORACLE smallint NUMBER531ORACLE smallmoney NUMBER1031ORACLE sysname NVARCHAR2 12841ORACLE text CLOB NULL01ORACLE timestamp RAW841ORACLE tinyint NUMBER331ORACLE uniqueidentifier CHAR3841ORACLE varbinary BLOB NULL01ORACLE varbinary RAW-141ORACLE varbinary(max) BLOB NULL01ORACLE varchar CLOB NULL01ORACLE varchar VARCHAR2-141ORACLE varchar(max) CLOB NULL01ORACLE xml NCLOB NULL012.建立链接服务器。
SQLServer链接服务器至Oracle

SQLServer链接服务器至Oracle1. 我方服务器必须安装msdtc服务,并进行相应配置。
2. 我方服务器必须安装oracle client,这个要对应中心站oracle版本的客户端。
3. 我方服务器必须安装Oracle Services For Microsoft Transaction Server [版本]Oracle Provider for OLE DB [版本]这2个可以在Oracle官方网站下载[/technology/software/tech/windows/odpnet/index.html]此文件为分布式事务必须的插件。
4. Oracle给我们分配一个Oracle的用户名和密码,具有写入/读取表的权限。
5. 在我方系统的SQLServer服务器上建立链接服务器,指向Oracle数据库,链接服务器访问接口必须为[Oracle Provider for OLE DB](否则无法启动分布式事务)。
1. 在写存储过程向oracle数据库中 insert、delete、update的时候,一定要加上SET XACT_ABORT ON此为开启镶嵌事务标志,否则分布式事务会失败。
2. 对于从oracle或sqlserver中select数据的时候没有必要加入事务范围内,会锁表浪费时间。
3. 查询语句格式为:SELECT * FROM openquery(ORA_DBENSIS, 'select ID from TEST_TRANS')或者SELECT * FROM ORA_DATABASE..TEST_USER.TEST_TRANS用户名TEST_USER、表名TEST_TRANS必须大写4. 插入语句格式为:INSERT openquery(ORAENSIS, 'select ID from TEST_TRANS where 1=0')values (1)在SQL SERVER中访问ORACLE表的方法在SQL SERVER中,能否访问ORACLE表,进行查询操作呢?答案无疑是可以的,下面就为你介绍在SQL SERVER中访问ORACLE表的实现方法,供您参考。
Oracle与SQLServer建立DBlink连接

Oracl e 与SQL Server建立DBlink连接设置步骤一、主旨:本操作说明主要用于指导实现Oracle 与SQL Server建立DBlink连接二、要求:(1)Oracle版本需在9i以上(2)SQL Server需在2000 SP3以上三、配置方法与步骤:1、通过ODBC建立连接(1)在Oracle服务器上打开“ODBC数据源管理器”。
路径:开始—>控制面板->管理工具-〉数据源(ODBC)。
(2)选中“系统DSN”选项卡,点击“添加"按钮,在弹出的对话框中选中SQL Server 驱动程序,点击“完成"。
(3)在弹出的对话框中输入数据源名称、描述以及需连接到的SQL Server所在服务器IP或服务器名称,点击“下一步”。
(4)选择SQL Server登陆认证模式,根据SQL Server端认证设置,若集成Window认证则选择“使用网络登陆ID的Windows NT验证”,若未SQL Server认证则选择“使用用户输入登陆ID和密码的SQL Server验证”,此处我们选择第二选项,然后输入登陆ID与密码,点击“下一步”.(5)选择需建立连接的SQL Server数据库,点击“下一步"。
(6)根据需求勾选相关选项,点击“完成”(7)点击测试数据源,若出现“连接失败”,根据《远程连接SQL Server失败错误原因排查说明文档》进行检查,若出现“测试成功",则连续点击两次“确定"完成配置。
(8)打开Oracle安装目录,进入hs文件目录%Oracle_Home%/hs/admin,复制inithsodbc。
ora文件,新命名为inithstest。
ora.命名规则init<SID>。
ora(9)编辑inithstest.ora文件内容如下(10)进入hs文件目录%Oracle_Home%/Network/Admin,修改Oracle listener。
Sql server建立Oracle的链接服务器, 跟Oracle的dblink差不多

一、安装配置oracle客户端要访问orcale数据,必须在访问的客户端机器上安装oracle客户端。
Orcale有两种形式的客户端:●完整的客户端包括访问服务器端数据库的基本Oracle 的Microsoft OLE DB 访问接口需要Oracle Client Software Support File以及SQL*Net 。
还包括用于配置客户端设置的工具、sqlplus、企业管理器等一系列的工具。
●立即客户端(instant client)这个客户端体积很小,但是只包括了访问orcale服务器的最基本的支撑驱动,没有设置管理工具,也找不到可用的图形界面。
对客户端的设置需要手工就行。
目前orcale比较新的是oracle 10g版本,以这个版本为例。
1、下载oracle 10 的客户端可以到orcale官方网站下载,需要先注册,然后下载。
下载适用于Microsoft Windows (32-bit)的Oracle Database 10g Client Release 2的客户端,下载地址:/otn/nt/oracle10g/10201/10201_client_win32.zip2、安装oracle 10 客户端下载好后,解压,安装。
安装时有四个选项:●Instantclient,相当于最小化安装。
●管理员,完整安装。
●运行时自定义为了管理方便,一般以管理员方式安装。
3、配置oracle 10 客户端在客户端主要需要配置两个设置,命名方法和服务器别名,还有一个监听程序是服务端需要用的,用来监听客户端的访问,客户端不必设置监听程序。
这些设置都能在net manager工具中进行,在oracle程序组中的“配置和移植工具”中的“net manage r”。
如图所示:概要文件就是用来设置命名方法和验证方式的的3.1.命名方法在窗口左面的上部下拉列表中选“命名”,左边窗口显示目前可用的方法,右边是已经选择的命名方法,几个主要的命名方法有:●TNSNAMES表示采用TNSNAMES.ORA文件来解析●ONAMES表示Oracle使用自己的名称服务器(Oracle Name Server)来解析,目前Oracle建议使用轻量目录访问协议LDAP来取代ONAMES●HOSTNAME表示使用host文件,DNS,NIS等来解析一般使用本地命名方式来解析服务器名,即使用TNSNAMES.ORA中设置的服务器名。
sql连接orcale

一、创建sqlserver链接服务(sqlserver链接oracle)首先sqlserver 链接oracle可以通过两个访问接口:“MSDAORA” 和“OraOLEDB.Oracle”1、“MSDAORA”访问接口是由Microsoft OLE DB Provider for Oracle提供的,这里建议不使用此接口进行链接。
通过该访问接口建立的链接服务器在进行查询oracle表(带数据类型CLOB、BLOB字段)时会报这个错误“链接服务器""的 OLE DB 访问接口 "MSDAORA" 返回了消息 "发生了一个Oracle 错误,但无法从 Oracle 中检索错误信息。
"。
链接服务器""的 OLE DB 访问接口 "MSDAORA" 返回了消息 "数据类型不被支持。
"。
消息 7321,级别 16,状态 2,第 1 行准备对链接服务器 "" 的 OLE DB 访问接口 "MSDAORA" 执行查询"select * from SYS_MESSAGE"时出错。
”链接服务器 "LINK2ORACLE" 的 OLE DB 访问接口 "MSDAORA" 为列提供的元数据不一致。
对象 ""CMCC"."OS2_GIS_CELL"" 的列 "ISOPENED" (编译时序号为20)在编译时有 130 的 "DBTYPE",但在运行时有错。
2、“OraOLEDB.Oracle” 访问接口是由oracle 的Oracle Probider forOLE DB 驱动提供的。
它解决了两个数据库类型不一致的的问题。
sql服务器添加oracle的链接服务器步骤

SQL SERVER 2005 通过链接服务器访问 ORACLE 的快速设定方法1)在SQL_SERVER 2005服务器上安装Oracle 10g的客户端。
假设安装到D:\oracle\ 目录。
如果D:是N TFS分区,需要将ORACLE安装后的目录设为所使用的用户有权可运行、可添加、可删除。
2)配置D:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora 文件(手动配置)ORCL_192.168.0.163=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.0.163)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME =orl)//此处的orl是HIS给的database))(NetManage工具自动生成的配置)ORCL_192.168.0.163 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.163)(PORT = 1521)))(CONNECT_DATA =(SID = orl)//此处的orl是HIS给的database(SERVER = DEDICATED)))3)在DOS模式下运行以下命令以便确认ORA CLE客户端安装无误。
sqlplus user/password@ ORCL_192.168.0.1634)打开开始-控制面板-服务,确认Distributed Transaction Coordinator服务已启动。
5)打开SQL SERVER Management Studio,实例名称(ORCL_192.168.0.163)-服务器对象(右键)-新建连接服务器。
a)链接服务器:写上链接服务器的名字,如:OraTestb) 服务器类型,选择其他数据源c) 访问接口:选择 Microsoft OLE DB Provider for Oracled) 产品名称:写上 Oraclee) 数据源:写上tnsnames.ora 文件中配置的服务名,如:ORCL_192.168.0.163f)访问接口字符串:user id=user;password= passwordg)在选择安全性选项页,使用此安装上下文建立连接:1:远程登录:user2:使用密码:passwordh) 确定6)SQL的写法有两种a) 使用T-SQL语法:SELECT * FROM OraTest.ERP.BAS_ITEM_CLASS注意在,SQL查询分析器中输入SQL语句时注意中文的全角半角切换方式!b) 使用PLSQL语法:SELECT * FROM openquery(OraTest,'SELECT * FROM OraTest.ERP.BAS_ITEM_CLASS ')c)第二种访问方式比第一种约快50%;第二种访问方式跟直连ORACLE的速度相当;第一种访问方式可能会导致一些意外错误,如:该表不存在,或者当前用户没有访问该表的权限等等一些信息。
SQL Server链接服务器访问Oracle
SQLServer链接服务器访问Oracle一、测试环境说明操作系统:Windows Server 2008 R2 64位数据库版本:SQLServer 2008 R2 64位和Oracle Database 11g 第 2 版(11.2.0.1.0)及相应的客户端版本:Oracle 11g client 64位。
其中Oracle Database 11g 安装在一台电脑,另一台安装SQL Server 2008 R2 64位和Oracle 11g client 64位。
二、创建SQL Server链接服务首先SQL Server链接Oracle可以通过两个访问接口:“MSDAORA”和“OraOLEDB.Oracle”。
默认状态下,SQL Server 2008 R2 64位安装后在服务器对象->链接服务器->访问接口下并没有“MSDAORA”和“OraOLEDB.Oracle”接口。
安装“MSDAORA”访问接口需要下载Oracle Data Access Components(ODAC)for Windows 的相应64位版本。
安装后重新启动服务器即可以看到“MSDAORA”接口。
因为此接口不支持分布式事务,因此不做过多的描述。
安装“OraOLEDB.Oracle”访问接口需要下载Oracle 11g client 64位。
具体安装过程如下:1)下载后解压zip文件到文件夹,点击setup.exe,弹出如下界面:直接点[是]。
2)弹出如下界面:选择[定制]选项。
点击下一步,弹出如下界面:直接点击下一步,弹出如下界面:选择软件安装的位置后点击下一步,弹出如下界面:在可用产品组件窗口点击[全选]后直接点击下一步,弹出如下窗口:在调度程序代理主机名中输入本机的主机名。
点击下一步,弹出如下界面:在Oracle Services for MTS 中配置端口,这里直接使用默认端口,点击下一步:Oracle Services for Microsoft Transaction ServerOracle Services for MTS 允许客户在MTS 协调事务中使用Oracle 数据库作为资源管理器,从而提供了Oracle 解决方案和MTS 之间的强大集成。
sqlserver获取oracle数据库方法
sqlserver获取oracle数据库方法要连接和获取oracle数据库中的数据,可以使用SQL Server的Linked Server功能。
Linked Server允许SQL Server与其他数据库之间建立连接来交互数据。
以下是连接Oracle数据库的步骤:1. 在SQL Server管理工具中,打开“服务器对象”下的“链接服务器”文件夹。
2.右键单击“链接服务器”文件夹,选择“新建链接服务器”。
3.在“常规”选项卡中,输入连接服务器的名称。
可以使用任意合适的名称。
4. 在“服务器类型”下拉菜单中选择“Oracle”。
5. 在“安全性”选项卡中,选择“Be made using this security context”选项,并输入Oracle数据库的用户名和密码。
6.在“服务器选项”选项卡中,为连接服务器设置适当的选项,如超时设置等。
7. 在“测试连接”选项卡中,可以测试连接是否成功。
如果连接失败,请检查Oracle数据库的配置和网络设置。
8.单击“确定”按钮来创建连接服务器。
现在,可以在SQL Server上使用连接服务器来访问Oracle数据库中的数据了。
示例代码:```-- 查询Oracle数据库中的数据SELECT*FROM[LinkedServerName].[OracleDatabaseName].[SchemaName].[TableName] -- 插入数据到Oracle数据库INSERT INTO[LinkedServerName].[OracleDatabaseName].[SchemaName].[TableName] (column1, column2, column3)VALUES (value1, value2, value3)-- 更新Oracle数据库中的数据UPDATE[LinkedServerName].[OracleDatabaseName].[SchemaName].[TableName] SET column1 = value1WHERE condition-- 删除Oracle数据库中的数据DELETE FROM[LinkedServerName].[OracleDatabaseName].[SchemaName].[TableName] WHERE condition```需要注意的是,连接Oracle数据库需要确保SQL Server环境中已安装Oracle客户端软件,并且配置正确。
sqlserver同步数据到oracle
如何将SQLServer2005中的数据同步到Oracle中有时由于项目开发的需要,必须将SQLServer2005中的某些表同步到Oracle数据库中,由其他其他系统来读取这些数据。
不同数据库类型之间的数据同步我们可以使用链接服务器和SQLAgent来实现。
假设我们这边(SQLServer2005)有一个合同管理系统,其中有表contract 和contract_project是需要同步到一个MIS系统中的(Oracle9i)那么,我们可以按照以下几步实现数据库的同步。
1.在Oracle中建立对应的contract 和 contract_project表,需要同步哪些字段我们就建那些字段到Oracle表中。
这里需要注意的是Oracle的数据类型和SQLServer的数据类型是不一样的,那么他们之间是什么样的关系拉?我们可以在SQLServer下运行:SELECT*FROM m sdb.dbo.MSdatatype_m appingsSELECT*FROM m sdb.dbo.sysdatatypem appings来查看SQLServer和其他数据库系统的数据类型对应关系。
第一个SQL语句是看SQL转Oracle的类型对应,而第二个表则更详细得显示了各个数据库系统的类型对应。
根据第一个表和我们的SQLServer中的字段类型我们就可以建立好Oracle表了。
2.建立链接服务器。
我们将Oracle系统作为SQLServer的链接服务器加入到SQLServer中。
具体做法参见我以前的文章/studyzy/archive/2006/12/08/690307.html3.使用SQL语句通过链接服务器将SQLServer数据写入Oracle中。
比如我们建立了链接服务器MIS,而Oracle中在MIS用户下面建立了表contract_project,那么我们的SQL语句就是:DELETE FROM MIS..MIS.CONTRACT_PROJECT--清空Oracle表中的数据INSERT into MIS..MIS.CONTRACT_PROJECT--将SQLServer中的数据写到Oracle中SELECT contract_id,project_code,actual_moneyFROM contract_project如果报告成功,那么我们的数据就已经写入到Oracle中了。
sql server连接Oracle方法(最全)
sql server连接Oracle方法(一)在SQL Server所在服务器中安装Oracle客户端程序,并设定好TNS(二)在SQL Server中添加Link Server,设置方法如下:以上设置也可以透过执行sql server的存储过程实现。
sp_addlinkedserver & sp_addlinkedsrvlogin(三)连接建立完成后,就可以执行查询语句了,查询的示例如下:/*查询*/select * from openquery(TESTORA, 'SELECT t01,t02 FROM tex_file')/*插入数据*/INSERT OPENQUERY(TESTORA, 'select t01 from tex_file')select 'testabc'/*更新数据*/update OPENQUERY(TESTORA, 'select t01 from tex_file') set t01='hellowo'where t01='testabc'/*删除数据*/delete from OPENQUERY(TESTORA, 'select t01 from tex_file')where t01='hellowo'(四)到此基本上无什么问题了,但是把这些语句放在sql server的触发器中的时候,问题产生了。
放入触发器中之后,一开始提示:“服务器'XXXXX' 上的MSDTC 不可用”,于是打开MSDTC服务(方法:切换到cmd窗口,运行net start msdtc,或者到控制台的服务里面启动DTC服务),不再提示这个错误,而是提示“MSDTC不能启动分布式事务”。
Oh my God,还是不行,于是再次去问谷歌,发现是因为微软提供的驱动不支持分布式事务,于是参照网上的方法(点此查看原始解决方案),修改注册表。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQLServer链接服务器至Oracle
1. 我方服务器必须安装msdtc服务,并进行相应配置。
2. 我方服务器必须安装oracle client,这个要对应中心站oracle版本的客户端。
3. 我方服务器必须安装Oracle Services For Microsoft Transaction Server [版本]
Oracle Provider for OLE DB [版本]
这2个可以在Oracle官方网站下载
[/technology/software/tech/windows/odpnet/index.html]
此文件为分布式事务必须的插件。
4. Oracle给我们分配一个Oracle的用户名和密码,具有写入/读取表的权限。
5. 在我方系统的SQLServer服务器上建立链接服务器,指向Oracle数据库,链接服务器访问接口必须为[Oracle Provider for OLE DB](否则无法启动分布式事务)。
1. 在写存储过程向oracle数据库中 insert、delete、update的时候,一定要加上
SET XACT_ABORT ON
此为开启镶嵌事务标志,否则分布式事务会失败。
2. 对于从oracle或sqlserver中select数据的时候没有必要加入事务范围内,会锁表浪费时间。
3. 查询语句格式为:
SELECT * FROM openquery(ORA_DBENSIS, 'select ID from TEST_TRANS')
或者
SELECT * FROM ORA_DATABASE..TEST_USER.TEST_TRANS
用户名TEST_USER、表名TEST_TRANS必须大写
4. 插入语句格式为:
INSERT openquery(ORAENSIS, 'select ID from TEST_TRANS where 1=0')
values (1)
在SQL SERVER中访问ORACLE表的方法
在SQL SERVER中,能否访问ORACLE表,进行查询操作呢?答案无疑是可以的,下面就为你介绍在SQL SERVER中访问ORACLE表的实现方法,供您参考。
一、配置
方法一:通过oracle的sql*net客户端与Oracle数据库直接相连
1、在SQL SERVER所在服务器上安装Oracle客户端,并配置好客户端,能用sqlplus
工具连通Oracle数据库
2、打开ENTERPRISE MANAGER,安全性>链接服务器,右键选择“新建链接服务器”
3、“链接服务器”->ORCL (为链接服务器取名字)
选择“其它数据源”,在“提供程序名称” 栏中选择“Microsoft OLE DB Provider
for Oracle”
4、在“产品名称”->“Oracle”“数据源”->“ora9i”(此处填tnsnames.ora中的服务名)
在“提供程序字符串”->“MADAORA”
5、切换到“安全性”一页中,在”本地登录“中加入oracle数据库的用户名,选择“用此安全
上下文进行”,填入oracle数据库登录的用户和密码
6、切换到“服务器选项”一页中,将所有选项都选上
7、最后点击“确定”完成设置
8、在查询分析器中使用创建好的链接服务器ORCL
SELECT * FROM ORCL..SMS.EMP
其中ORCL是链接服务器名,SMS是Oracle数据库的用户名,EMP是表名
方法二:通过ODBC与Oracle数据库相连
1、在SQL SERVER所在服务器上安装Oracle客户端,并配置好客户端,能用sqlplus
工具连通Oracle数据库
管理工具>数据源中创建一个系统DSN
2、打开ENTERPRISE MANAGER,安全性>链接服务器,右键选择“新建链接服务器”
3、“链接服务器”->ORCL (为链接服务器取名字)
选择“其它数据源”,在“提供程序名称” 栏中选择“Microsoft OLE DB Provider
for ODBC”
4、在“产品名称”->“Oracle”“数据源”->“ora9i”(此处填创建的系统DSN名) 在“提供程序字符串”->“MADAORA”
5、切换到“安全性”一页中,在”本地登录“中加入oracle数据库的用户名,选择“用此安全
上下文进行”,填入oracle数据库登录的用户和密码
6、切换到“服务器选项”一页中,将所有选项都选上
7、最后点击“确定”完成设置
8、在查询分析器中使用创建好的链接服务器ORCL
SELECT * FROM ORCL..SMS.EMP
其中ORCL是链接服务器名,SMS是Oracle数据库的用户名,EMP是表名
二、关于查询中不能使用到索引的问题
在SQLSERVER中查询一个oracles上的表:
SELECT * FROM ORCL..SMS.EMP WHERE NAME = 'TOM'
EMP有几百万数据,并且在NAME上建了索引,发现查询非常慢,通过查询oracle上的
视图v$sqlarea,发现WHERE条件根本没有传到oracle服务器上,后来通过几次测试
后总算解决了该问题,总结如下:
当使用链接服务器访问ORACLE表,查询oracle的表时,where子句中字段如果是number 类型,则该
where条件不会传到oracle服务器;
如果是char类型,则可以传到oracle服务器上,但是必须在创建链接服务器时一定要
把选项"与排序规则兼容"选上,否则也不会传到oracle服务器上的;。