CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  应用实例

sql server数据库如何建立数据链接到ORACLE数据库,并通过链接查询ORACLE中的表。

楼主liuzg_pual(射天狼)2005-06-02 13:38:33 在 MS-SQL Server / 应用实例 提问

sql   server数据库如何建立数据链接到ORACLE数据库,并通过链接查询ORACLE中的表。 问题点数:100、回复次数:8Top

1 楼fengfangfang()回复于 2005-06-02 13:45:41 得分 0

在安全\链接服务器  
  下面创建一下  
  Top

2 楼zjcxc(邹建)回复于 2005-06-02 13:56:36 得分 10

SQL   Server到Oracle连接服务器的实现    
     
     
  作者:中国论坛网收集   来源:http://www.51one.net   加入时间:2004-8-25      
     
  SQL   Server到Oracle连接服务器的实现    
       
    作者:Jennifer    
  本文以SQL   Server   2k为例说明SQL   Server到Oracle连接服务器的具体实现过程。  
   
  1.要求pc机上安装oralce客户端软件和sqlserver2000软件。  
   
  2.客户端的配置tnsnames.ora文件,配置所要连接的数据库服务器(windows,unix等平台均可以)  
  eg:tnsnames.ora  
  ......  
  TEST   =  
      (DESCRIPTION   =  
          (ADDRESS_LIST   =  
              (ADDRESS   =   (PROTOCOL   =   TCP)(HOST   =   10.1.11.90)(PORT   =   1521))  
          )  
          (CONNECT_DATA   =  
              (sid   =   blue)  
              (SERVER   =   DEDICATED)  
          )  
      )  
  ......  
   
  3.配置windows的ODBC数据源:  
      开始菜单—》设置—》管理工具—》数据源(ODBC)—》进入配置用户DSN或者系统DSN均可以:添加—》选择Microsoft   ODBC   for   oracle—  
   
  》自定义数据源名称(最好跟tns中连接串同名!)—》服务器名称(必填!填写tns文件中的连接串名称)—》完成。  
   
  4.配置sqlserver2000中的连接服务器:  
      企业管理器—》安全性—》连接服务器—》右键新建连接服务器—》定义连接名称;   选其他数据源;   指定程序名称为:Microsoft   OLE   DB    
   
  Provider   for   Oracle;     产品名称可不填;   数据源指定刚才ODBC中定义好的数据源名称;   提供程序字符串按以下格式填写:User    
   
  ID=username;Password=userpasswd(或者按如下格式:UID=username;PWD=userpasswd),这里的用户名和密码对应所要连接的oracle数据库中  
   
  的用户名和密码   —》   安全性标签页里:设置用此安全上下文进行,并录入oracle的数据库用户名和密码—》服务器选项标签页可默认—》确  
   
  定。  
   
  5.准备工作全部完成啦!在sqlserver企业管理器—》安全性—》连接服务器打开刚建好的连接服务器—》点击表,即可在右边窗口看到该orac  
   
  le数据库用户拥有的的所有表名,但在这里还并不能查看表的记录,这个需要在sqserver的查询分析器中用具体sql实现!访问表时,使用格式  
   
  为:     [连接服务器名]..[ORACLE用户].[表名]。更详细具体的使用这里不再赘述。  
   
   
  Top

3 楼duanduan1122(俺村俺帅!!!)回复于 2005-06-02 19:01:21 得分 60

创建链接服务器以访问   Oracle   数据库实例    
   
  确保运行   SQL   Server   的服务器上的   Oracle   客户端软件已达到提供程序所要求的级别。用于   Oracle   的   Microsoft   OLE   DB   提供程序要求   Oracle   客户端软件支持文件的版本为   7.3.3.4.0   或更高版本,并且   SQL*Net   的版本为   2.3.3.0.4。  
   
   
  在运行   SQL   Server   的服务器上创建指向   Oracle   数据库实例的   SQL*Net   别名。有关更多信息,请参见   Oracle   文档。  
   
   
  执行   sp_addlinkedserver   创建链接服务器,指定   MSDAORA   为   provider_name,指定用于   Oracle   数据库实例的   SQL*Net   别名为   data_   source。    
  以下示例假设已将一个   SQL*Net   别名定义为   OracleDB。  
   
  sp_addlinkedserver   'OrclDB',   'Oracle',   'MSDAORA',   'OracleDB'  
   
  使用   sp_addlinkedsrvlogin   创建从   SQL   Server   登录到   Oracle   登录的登录映射。    
  以下示例通过   Oracle   登录名   OrclUsr   和密码   OrclPwd   将   SQL   Server   登录   Joe   映射到步骤   3   中定义的链接服务器:  
   
  sp_addlinkedsrvlogin   'OrclDB',   false,   'Joe',   'OrclUsr',   'OrclPwd'  
   
  Top

4 楼duanduan1122(俺村俺帅!!!)回复于 2005-06-02 19:01:35 得分 0

每个   Oracle   数据库实例仅有一个名称为空的目录。Oracle   链接服务器中的表必须使用四部分名称格式   OracleLinkedServerName..OwnerUserName.TableName   进行引用。例如,以下   SELECT   语句引用   Oracle   用户   MARY   在   OrclDB   链接服务器映射的服务器上所拥有的表   SALES。  
   
  SELECT   *  
  FROM   OrclDB..MARY.SALES  
   
  在   Oracle   链接服务器中引用表时,请使用以下规则:    
   
  如果在   Oracle   中创建的表名和列名没有引用的标识符,请全部使用大写字母名称。  
   
   
  如果在   Oracle   中创建的表名和列名有引用的标识符,请全部使用与   Oracle   中创建名称时相同的字母大小写格式。  
   
   
  INSERT   语句应为表中的所有列提供值,即使表中的某些列为   NULL   或有默认值。Top

5 楼yjdn(人形机器)回复于 2005-06-02 19:19:22 得分 30

这个我的一个连接Oracle的语句  
  exec   sp_addlinkedserver     'srv_lnk','','MSDAORA','远程服务器名或ip地址'  
  go  
  exec   sp_addlinkedsrvlogin   'srv_lnk','false',null,'oarcle用户名','密码'  
  go  
  select   *     from   openquery(srv_lnk,'select   *   from   sys.tt')     --sys.tt为sys用户下的表tt  
  go  
   
  --不用时,删除链接服务器  
  exec   sp_dropserver   'srv_lnk','droplogins'Top

6 楼liuzg_pual(射天狼)回复于 2005-06-06 13:28:31 得分 0

按照各位大侠的指引,我测试了一下,发现取数据时报一下错误,各位大侠能否解答?  
   
  OLE   DB   提供程序   'MSDAORA'   报错。    
  [OLE/DB   provider   returned   message:   发生了一个   Oracle   错误,但无法从   Oracle   中检索错误信息。]  
  OLE   DB   错误跟踪[OLE/DB   Provider   'MSDAORA'   IDBInitialize::Initialize   returned   0x80004005:       ]。  
  Top

7 楼duanduan1122(俺村俺帅!!!)回复于 2005-06-07 13:17:06 得分 0

解决方案  
  若要解决此问题,则请在使用   LIKE   语句比较   Oracle   数据库中固定长度字段中的值时,每次都使用百分号   (%)   通配符。例如:   cmd.Parameters.Add("@p1",   OleDbType.Char,   3).Value   =   "a%"  
    返回页首    
   
  更多信息  
  再现现象的步骤  
  1.   在   Oracle   中,创建一个名为   TestTable   的表,如下所示:   Create   Table   TestTable   (c1   char(3));  
     
  2.   将值"a"插入表中,如下所示:   Insert   into   TestTable   c1   values('a');  
     
  3.   打开   Microsoft   Visual   Studio   .NET。    
  4.   在   Visual   Basic   .NET   中新建一个   Windows   应用程序项目。    
  5.   确保您的项目包含一个对   System.Data   名称空间的引用,如果未包含,请添加一个对此名称空间的引用。    
  6.   将一个   Command   按钮放在   Form1   上,将其   Name   属性更改为   btnTest。    
  7.   对   System   和   System.Data   名称空间使用   Imports   语句,这样,在后面的代码中就不需要在这些名称空间中限定声明了。   Imports   System  
  Imports   System.Data  
  Imports   System.Data.OleDb  
     
  8.   复制以下代码并将其粘贴到代码窗口中"Windows   窗体设计器生成的代码"区域之后的位置:   Private   Sub   btnTest_Click(ByVal   sender   As   System.Object,   _  
  ByVal   e   As   System.EventArgs)   Handles   btnTest.Click  
  Dim   sConnectionString   As   String   _  
  =   "Provider=MSDAORA.1;User   ID=scott;password=tiger;"_  
  "Data   Source=myOracleServer;Persist   Security   Info=False"  
  Dim   mySelectQuery   As   String   _  
  =   "SELECT   *   FROM   TestTable   where   c1   LIKE   ?"  
  Dim   myConnection   As   New   OleDbConnection(sConnectionString)  
  Dim   myCommand   As   New   OleDbCommand(mySelectQuery,   myConnection)  
   
  'To   resolve   this   problem,   change   the   parameter  
  'in   the   next   line   to   use   "%"   wildcard   character.  
  myCommand.Parameters.Add("@p1",   OleDbType.Char,   3).Value   =   "a"  
  myConnection.Open()  
  Dim   myReader   As   OleDbDataReader   =   myCommand.ExecuteReader()  
  Dim   RecordCount   as   Integer  
  Try  
  While   myReader.Read()  
  RecordCount   =   RecordCount   +   1  
  MessageBox.Show(myReader.GetString(0).ToString())  
  End   While  
  If   RecordCount   =   0   then  
  MessageBox.Show("No   data   returned")  
  Else  
  MessageBox.Show("Number   of   records   returned:"   &   RecordCount)  
  End   If  
  Catch   ex   As   Exception  
  MessageBox.Show(ex.ToString())  
  Finally  
  '   Always   call   Close   when   done   reading.  
  myReader.Close()  
  myConnection.Close()  
  End   Try  
  End   Sub  
     
  9.   保存项目。    
  10.   从调试菜单上,单击启动以运行您的项目。    
  11.   单击该按钮。注意此时未返回任何数据。    
  12.   更改参数以使用"%"通配符,如下所示:   myCommand.Parameters.Add("@p1",   OleDbType.Char,   3).Value   =   "a%"  
     
  13.   再次运行该项目。注意此时成功返回了数据。      
  Top

8 楼liuzg_pual(射天狼)回复于 2005-06-07 17:33:04 得分 0

我是在SQL   SERVER   查询分析器里执行的,并且没有加任何查询条件啊。  
  还有几点不明白的地方:  
  1   .确保运行   SQL   Server   的服务器上的   Oracle   客户端软件已达到提供程序所要求的级别。用于   Oracle   的   Microsoft   OLE   DB   提供程序要求   Oracle   客户端软件支持文件的版本为   7.3.3.4.0   或更高版本,并且   SQL*Net   的版本为   2.3.3.0.4。      
   
  如何知道是否满足以上要求  
   
  2.使用   sp_addlinkedsrvlogin   创建从   SQL   Server   登录到   Oracle   登录的登录映射。    
  以下示例通过   Oracle   登录名   OrclUsr   和密码   OrclPwd   将   SQL   Server   登录   Joe   映射到步骤   3   中定义的链接服务器:  
  sp_addlinkedsrvlogin   'OrclDB',   false,   'Joe',   'OrclUsr',   'OrclPwd'  
   
  SQL   Server   登录   Joe   ???  
   
  SELECT   *  
  FROM   OrclDB..MARY.SALES    
  如上在SQL   SERVER   查询分析器里执行,就报错。  
   
  请谢谢。  
  Top

相关问题

  • 谁能交我做对sql server的数据链接
  • 用vb.net中数据链接sql server出现用户‘sa’登录失败是怎么回事啊?
  • 关于oracle远程数据链路的问题
  • C#程序调用带数据链的ORACLE存储过程的问题!
  • 数据链接
  • sql server->oracle??
  • SQL Server 和 Oracle ...
  • SQL server到oracle
  • SQL Server 到 Oracle
  • 关于数据链路层!

关键词

  • .net
  • sqlserver2000
  • 服务器
  • 数据库
  • oracle
  • 连接
  • 映射
  • 语句
  • 数据
  • 分析器

得分解答快速导航

  • 帖主:liuzg_pual
  • zjcxc
  • duanduan1122
  • yjdn

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo