SQL Server的連結的伺服器技術小結)

來源:互聯網
上載者:User

一、使用 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串連伺服器的實現
 
作者:  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使用者

].[表名]。更詳細具體的使用這裡不再贅述。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.