• 转:不在同一个服务器上的数据库之间的数据操作(oracle/sql server的对比)


    如何操做不在同一个数据库中的数据操作:

    一。对于SQL server来讲:
      1.采用创建链接服务器的方式: 
       (1).创建链接服务器
           exec sp_addlinkedserver   '要创建的链接服务器的本地名称', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' 
             sp_addlinkedserver :创建一个链接服务器(相当于oracle中的本地注册)  
           exec sp_addlinkedsrvlogin  '创建的链接服务器的本地名称 ', 'false ',null, '用户名 ', '密码' 
              sp_addlinkedsrvlogin :使用已创建的链接服务器进行登录。
       (2).查询示例:
           select * from [已创建的链接服务器名称].数据库名.dbo.表名
           
           select * from openquery(已创建的链接服务器名称,'select * from 表名')

       (3)。当数据库用完之后 关闭链接
          
            --以后不再使用时删除链接服务器 
            exec sp_dropserver  '创建的链接服务器的本地名称', 'droplogins '
     
          sp_dropserver '将被删除的服务器名称','droplogins| null' 如果指定了droplogins 那么相关的远程及链接服务器登录也被删除 
      
       2.采用odbc的方式来进行链接(openrowset)
         (1)使用openrowset进行链接
         例如: 
           select * from openrowset('SQLOLEDB','SQL服务器名';'用户名';'密码',数据库目录.dbo.表名称)

           select * from openrowset('MSDASQL','DRIVER={SQL Server};Server=远程服务器名称/IP地址;UID=用户名;PWD=密码',数据库目录.dbo.表名称);
            
     --链接Access数据库
       下面的示例从本地 SQL Server Northwind 数据库的 customers 表中,以及存储在相同计算机上 Access Northwind 数据库的 orders 表中选择所有数据
               说明  下面的示例假定已经安装了 Access。
        USE pubs
         GO
       SELECT c.*, o.*  
          FROM Northwind.dbo.Customers AS c INNER JOIN  OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:MSOfficeAccessSamples orthwind.mdb';'admin';'mypwd', Orders) AS o
                ON c.CustomerID = o.CustomerID 
              GO

        (2) 采用opendataResource来访问远程数据库
            
       SELECT   *  FROM   opendatasource( 'SQLOLEDB ',  'Data Source=远程服务器名称/IP地址;User ID=用户名;Password=密码 ' ).数据库目录.dbo.表名称

    二.oracle数据库中操作两个不同数据库中的两张表
       在这里oracle数据库服务器使用的dblink的方式, 其实dblink和数据库中的view差不多,建dblink的时候需要知道待读取数据库的ip地址,ssid以及数据库用户名和密码。
       1、已经配置本地服务
           其语法为:
              CREATE DATABASE LINK 数据库链接名 CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘本地配置的数据的实例名’;
     示例:
             create public database link test connect to userInformation  identified by ***** using 'orcl'
       2、未配置本地服务

         create database link test 
       connect to userInformation identified by *****  
         using '(DESCRIPTION = 
       (ADDRESS_LIST = 
       (ADDRESS = (PROTOCOL = TCP)(HOST = 10.142.202.12)(PORT = 1521)) 
       ) 
       (CONNECT_DATA = 
       (SERVICE_NAME = fjept) 
       ) 
       )';

      示例:
        
         select * from 表名@数据库链接名

      其实不难看出 第一种和第二种数据库链接没有多大的区别  第一种链接其实把配置信息放到了TNSNAMES.ORA中了

  • 相关阅读:
    怎样用c/c++编程连接mysql数据库?
    c#中转义符总结
    制作文件系统出错运行mkubimagemlc2
    面试中常考的C函数库中的字符串处理函数
    移动支付模式再添新军:指纹支付
    面试中常考的单链表处理
    选购冰箱勿被概念迷惑:并非功能越多越好
    地址转换
    JavaScriptGarden/
    配置非安装版的mysql 5.5
  • 原文地址:https://www.cnblogs.com/rosesmall/p/3140601.html
Copyright © 2020-2023  润新知