鏈接服務器使用方法


使用sql語句:

exec sp_addlinkedserver @server='serverontest',@provider='sqloledb',@srvproduct='',@datasrc='101.123.10.112'

添加一個鏈接服務器

 

使用sql語句:

EXEC sp_addlinkedsrvlogin @rmtsrvname = 'serverontest', @useself = 'false', @locallogin = 'sa', @rmtuser = 'sa', @rmtpassword = 'passwordofsa'

 

添加登錄方式

 

以上兩個語句中,@server為服務器的別名,@datasrc為要鏈接的目標數據庫的連接串,@rmtsrvname為別名,@locallogin為本地登錄的用戶名,@rmtuser和@rmtpassword為要鏈接的目標數據庫的登錄用戶名和密碼

 

添加完鏈接服務器之后,可以通過select * from sys.linked_logins 和 select * from sys.servers來查看已經添加的鏈接服務器和登錄角色

 

添加完鏈接服務器后,使用select * from 別名.庫名.dbo.表名 來對其中的數據進行查詢

 

刪除鏈接服務器登錄映射和鏈接服務器的方法: 

 exec sp_droplinkedsrvlogin ’serverontest’ ,’sa’  
 exec sp_dropserver ’serverontest’

 

上文僅僅是添加到sqlserver的鏈接服務器的方法,關於添加到其它數據庫的鏈接服務器的方法,參見:

 一、使用 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=’mysql的用戶名’,@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’,@rmtpassword=’密碼’   
--然后你就可以如下:   
  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連接服務器的實現  
  本文的測試環境為:  
  操作系統: 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用戶].[表名]。   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM