蜗牛,在赛跑

--努力去改变吧
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

急!!!怎样在不同的sql server 2000数据库之间传递数据?

Posted on 2008-07-21 08:46  body  阅读(484)  评论(0)    收藏  举报
--1、用OpenDataSource  
   
  SELECT       *  
  FROM             OPENDATASOURCE(  
                    'SQLOLEDB',  
                    'Data   Source=ServerName;User   ID=MyUID;Password=MyPass'  
                    ).Northwind.dbo.Categories  
   
  --2、用链接服务器  
   
   
  SQL   Server的链接服务器技术小结  
  一、使用   Microsoft   OLE   DB   Provider   For   ODBC   链接MySQL  
  安装MySQL的ODBC驱动MyODBC  
  1、为MySQL建立一个ODBC系统数据源,例如:选择数据库为test   ,数据源名称为    
   
  myDSN  
   
  2、建立链接数据库  
  EXEC   sp_addlinkedserver     @server   =   'MySQLTest',   @srvproduct='MySQL',    
   
  @provider   =   'MSDASQL',   @datasrc   =   'myDSN'  
  GO  
  EXEC   sp_addlinkedsrvlogin      
   
  @rmtsrvname='MySqlTest',@useself='false',@locallogin='sa',@rmtuser='mys  
   
  ql的用户名',@rmtpassword='mysql的密码'  
   
  3、查询数据  
   
  SELECT   *   FROM   OPENQUERY   (MySQLTest   ,'select   *   from   表'   )    
   
  下面这个不行:  
  SELECT   *   FROM   OPENQUERY   (MySQLTest   ,'表'   )    
   
  注意:不能直接用select   *   from   链接服务器名.数据库名.用户名.表(或视图)    
   
  四部分名称查询数据,可能是个Bug.  
   
   
  二、使用   Microsoft   OLE   DB   Provider   For   ORACLE   链接ORACLE    
   
  1、建立链接数据库  
  sp_addlinkedserver   '别名',   'Oracle',   'MSDAORA',   '服务名'  
  GO  
  EXEC   sp_addlinkedsrvlogin     @rmtsrvname='别名  
   
  ',@useself='false',@locallogin='sa',@rmtuser='oracle用户名  
   
  ',@rmtpassword='密码'  
   
  2、查询数据  
   
  SELECT   *   FROM   别名..用户名.表(视图)  
   
  注意:四部分名称全部用大写  
   
  3、执行存储过程  
   
  使用OPENQUERY:  
  SELECT   *  
  FROM   OPENQUERY(别名,   'exec   用户名.存储过程名')    
   
   
  三、设置链接服务器以访问格式化文本文件  
   
  用于   Jet   的   Microsoft   OLE   DB   提供程序可用于访问并查询文本文件。    
   
  若要直接创建访问文本文件的链接服务器而不将文件链接为   Access   .mdb   文件中  
   
  的表,请执行   sp_addlinkedserver,如下例所示。    
  提供程序是   Microsoft.Jet.OLEDB.4.0,提供程序字符串为"Text"。数据源是包  
   
  含文本文件的目录的完整路径名称。schema.ini   文件(描述文本文件的结构)必  
   
  须与此文本文件存在于相同的目录中。有关创建   schema.ini   文件的更多信息,  
   
  请参见   Jet   数据库引擎文档。  
   
  --Create   a   linked   server.  
  EXEC   sp_addlinkedserver   txtsrv,   'Jet   4.0',    
          'Microsoft.Jet.OLEDB.4.0',  
          'c:\data\distqry',  
          NULL,  
          'Text'  
  GO  
   
  --Set   up   login   mappings.  
  EXEC   sp_addlinkedsrvlogin   txtsrv,   FALSE,   NULL,   Admin,   NULL  
  GO  
   
  --List   the   tables   in   the   linked   server.  
  EXEC   sp_tables_ex   txtsrv  
  GO  
   
  --Query   one   of   the   tables:   file1#txt  
  --using   a   4-part   name.    
  SELECT   *    
  FROM   txtsrv...[file1#txt]  
   
  四、链接SQL   Server服务器:  
   
  1、使用   ODBC   的   Microsoft   OLE   DB   提供程序  
   
  EXEC   sp_addlinkedserver   '别名','','MSDASQL',NULL,NULL,'DRIVER={SQL    
   
  Server};SERVER=远程名;UID=用户;PWD=密码;'  
  如果加上参数@catalog,可以指定数据库  
  exec   sp_addlinkedsrvlogin     @rmtsrvname='别名  
   
  ',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密码'  
   
   
  2、使用SQL   Server   的   Microsoft   OLE   DB   提供程序  
   
  exec   sp_addlinkedserver   @server='别名  
   
  ',@provider='sqloledb',@srvproduct='',@datasrc='远程服务器名'  
  exec   sp_addlinkedsrvlogin      
   
  @rmtsrvname='wzb',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtp  
   
  assword='密码'  
   
  然后你就可以如下:  
  select   *   from   别名.库名.dbo.表名  
  insert   库名.dbo.表名   select   *   from   别名.库名.dbo.表名  
  select   *   into   库名.dbo.新表名   from   别名.库名.dbo.表名  
  go  
   
  例1、  
   
  此示例在   SQL   Server   的实例上创建一台名为   S1_instance1   的链接服务器,  
  该服务器使用   SQL   Server   的   Microsoft   OLE   DB   提供程序。  
   
  EXEC         sp_addlinkedserver         @server='S1_instance1',   @srvproduct='',  
                                                                  @provider='SQLOLEDB',    
   
  @datasrc='S1\instance1'  
   
  例2、  
   
  --建立链接服务器  
  EXEC   sp_addlinkedserver   'xiaoming','','MSDASQL',NULL,NULL,'DRIVER={SQL    
   
  Server};SERVER=192.168.0.1;UID=sa;PWD=123;'  
  --建立链接服务器登录映射  
  exec   sp_addlinkedsrvlogin      
   
  @rmtsrvname='xiaoming',@useself='false',@locallogin='sa',@rmtuser='sa',  
   
  @rmtpassword='123'  
  go  
  --查询数据  
  select   *   from   xiaoming.schooladmin.dbo.agent      
   
  --删除链接服务器登录映射和链接服务器:  
  exec   sp_droplinkedsrvlogin   'xiaoming'   ,'sa'  
  exec   sp_dropserver     'xiaoming'    
   
   
  注意事项:  
   
  SET   IDENTITY_INSERT   [   database.[   owner.]   ]   {   table   }   {   ON   |   OFF   }  
  所以不能通过连接服务器设置此属性  
  into   也存在这样的问题  
  select     *   into       xiaoming.northwind.dbo.tt   from    
   
  xiaoming.northwind.dbo.tt  
   
  五、设置链接服务器以访问Access数据库  
   
  使用用于   Jet   的   Microsoft   OLE   DB   提供程序  
  此示例创建一台名为   test的链接服务器。  
   
  说明     本示例假设已经安装   Microsoft   Access   和示例   Northwind   数据库,且    
   
  Northwind   数据库驻留在   C:\。  
   
   
  USE   master  
  GO  
  --   To   use   named   parameters:  
  EXEC   sp_addlinkedserver    
        @server   =   'test',    
        @provider   =   'Microsoft.Jet.OLEDB.4.0',    
        @srvproduct   =   'OLE   DB   Provider   for   Jet',  
        @datasrc   =   'C:\Northwind.mdb'  
  GO  
  --   OR   to   use   no   named   parameters:  
  USE   master  
  GO  
  EXEC   sp_addlinkedserver    
        'test',    
        'OLE   DB   Provider   for   Jet',  
        'Microsoft.Jet.OLEDB.4.0',    
        'C:\Northwind.mdb'  
  GO  
  使用  
  select   *   from   test...表名  
   
  六、连接SYBASE  
  --首先,你要在SQL服务器上装上访问sybase的客户端  
   
  --创建链接服务器  
  exec   sp_addlinkedserver   'Sybase1',   '   ',   'MSDASQL',   NULL,   NULL  
    ,'Driver={Sybase   System    
   
  11};Database=hisdb;Srvr=10.211.135.12;UID=sa;PWD=1111;'  
  使用:  
  select   *   from   Sybase1.hisdb.dbo.table1  
   
  方法二  
  使用ODBC  
  SQL   Server到SYBASE连接服务器的实现    
     
  作者:     CCBZZP  
   
   
  本文的测试环境为:  
  操作系统:     WINDOWS2000   SERVER   (繁体系统)  
  安装数据库:   SQLSERVER2000(英文版)和SYBASE8.0客户端(英文版)  
       
   
  具体实现步骤:    
  1.要求pc机上安装SYBASE8.0客户端软件和sqlserver2000软件。    
  2.配置windows的ODBC数据源:    
  开始菜单—》程式集—》系统管理工具—》资料数据源(ODBC)—》进入配置用  
   
  户DSN或者系统DSN均可以:添加—》选择ADAPTIVE   SERVER   ANYWHERE8.0—》自定  
   
  义数据源名称(随意如:   SYBASETEST)—》数据库名称(必选!)—》OK完成。  
   
  3.   选择刚才配置的数据源名称,   再选择   配置,   跳出SYBASETEST   MESSAGES:  
   
  The   data   source   is   not   connected.     Connecting   to   the   data   source   will    
   
  provide   useful   information   during   configuration.     Would   you   like   to    
   
  connect   to   the   data   source?  
   
  选择YES(OK或确认)即可  
   
  进入CONNECT   TO   SYBASE     DATABASE画面:  
   
  USER   ID:   输入SYBASE   DATABASE的用户  
   
  PASSWORD:   输入SYBASE   DATABASE的用户的密码  
   
  CONNECTION     MODE:   可以选择默认的SHARE模式  
   
  选择OK(确认)即可!    
   
  配置和测试ODBC完成!  
   
   
  4.配置sqlserver2000中的连接服务器:    
  企业管理器—》安全性—》连接服务器—》右键新建连接服务器—》定义连接名  
   
  称;   选其他数据源;   指定程序名称为:SYBASE   ADAPTIVE   SERVER   ANYWHERE    
   
  PROVIDER8.0;   产品名称可不填;   数据源指定刚才ODBC中定义好的数据源名称;    
   
  提供程序字符串按以下格式填写:User   ID=username;Password=userpasswd(或者  
   
  按如下格式:UID=username;PWD=userpasswd),这里的用户名和密码对应所要连  
   
  接的SYBASE数据库中的用户名和密码   —》   安全性标签页里:设置用此安全上下  
   
  文进行,并录入SYBASE的数据库用户名和密码—》服务器选项标签页可默认—》  
   
  确定。    
  5.准备工作全部完成!在sqlserver企业管理器—》安全性—》连接服务器打开刚  
   
  建好的连接服务器—》点击表,即可在右边窗口看到该SYBASE数据库用户拥有的  
   
  的所有表名,但在这里还并不能查看表的记录,这个需要在sqserver的查询分析  
   
  器中用具体sql实现!访问表时,使用格式为:   [连接服务器名]..[SYBASE用户  
   
  ].[表名]。更详细具体的使用这里不再赘述。