SQL Server的鏈接服務(wù)器技術(shù)小結(jié)
一、使用 Microsoft OLE DB Provider For ODBC 鏈接MySQL安裝MySQL的ODBC驅(qū)動MyODBC1、為MySQL建立一個ODBC系統(tǒng)數(shù)據(jù)源,例如:選擇數(shù)據(jù)庫為test ,數(shù)據(jù)源名稱為
myDSN
2、建立鏈接數(shù)據(jù)庫EXEC sp_addlinkedserver; @server = 'MySQLTest', @srvproduct='MySQL',
@provider = 'MSDASQL', @datasrc = 'myDSN'GOEXEC sp_addlinkedsrvlogin;
@rmtsrvname='MySqlTest',@useself='false',@locallogin='sa',@rmtuser='mys
ql的用戶名',@rmtpassword='mysql的密碼'
3、查詢數(shù)據(jù)
SELECT * FROM OPENQUERY (MySQLTest ,'select * from 表' )
下面這個不行:SELECT * FROM OPENQUERY (MySQLTest ,'表' )
注意:不能直接用select * from 鏈接服務(wù)器名.數(shù)據(jù)庫名.用戶名.表(或視圖)
四部分名稱查詢數(shù)據(jù),可能是個Bug.
二、使用 Microsoft OLE DB Provider For ORACLE 鏈接ORACLE
1、建立鏈接數(shù)據(jù)庫sp_addlinkedserver '別名', 'Oracle', 'MSDAORA', '服務(wù)名'GOEXEC sp_addlinkedsrvlogin; @rmtsrvname='別名
',@useself='false',@locallogin='sa',@rmtuser='oracle用戶名
',@rmtpassword='密碼'
2、查詢數(shù)據(jù)
SELECT * FROM 別名..用戶名.表(視圖)
注意:四部分名稱全部用大寫
3、執(zhí)行存儲過程
使用OPENQUERY:SELECT *FROM OPENQUERY(別名, 'exec 用戶名.存儲過程名')
三、設(shè)置鏈接服務(wù)器以訪問格式化文本文件
用于 Jet 的 Microsoft OLE DB 提供程序可用于訪問并查詢文本文件。
若要直接創(chuàng)建訪問文本文件的鏈接服務(wù)器而不將文件鏈接為 Access .mdb 文件中
的表,請執(zhí)行 sp_addlinkedserver,如下例所示。 提供程序是 Microsoft.Jet.OLEDB.4.0,提供程序字符串為'Text'。數(shù)據(jù)源是包
含文本文件的目錄的完整路徑名稱。schema.ini 文件(描述文本文件的結(jié)構(gòu))必
須與此文本文件存在于相同的目錄中。有關(guān)創(chuàng)建 schema.ini 文件的更多信息,
請參見 Jet 數(shù)據(jù)庫引擎文檔。
--Create a linked server.EXEC sp_addlinkedserver txtsrv, 'Jet 4.0', 'Microsoft.Jet.OLEDB.4.0', 'c:datadistqry', NULL, 'Text'GO
--Set up login mappings.EXEC sp_addlinkedsrvlogin txtsrv, FALSE, NULL, Admin, NULLGO
--List the tables in the linked server.EXEC sp_tables_ex txtsrvGO
--Query one of the tables: file1#txt--using a 4-part name. SELECT * FROM txtsrv...[file1#txt]
四、鏈接SQL Server服務(wù)器:
1、使用 ODBC 的 Microsoft OLE DB 提供程序
EXEC sp_addlinkedserver '別名','','MSDASQL',NULL,NULL,'DRIVER={SQL
Server};SERVER=遠程名;UID=用戶;PWD=密碼;'如果加上參數(shù)@catalog,可以指定數(shù)據(jù)庫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='遠程服務(wù)器名'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 的實例上創(chuàng)建一臺名為 S1_instance1 的鏈接服務(wù)器,該服務(wù)器使用 SQL Server 的 Microsoft OLE DB 提供程序。
EXEC;sp_addlinkedserver;@server='S1_instance1', @srvproduct='', @provider='SQLOLEDB',
@datasrc='S1instance1'
例2、
--建立鏈接服務(wù)器EXEC sp_addlinkedserver 'xiaoming','','MSDASQL',NULL,NULL,'DRIVER={SQL
Server};SERVER=192.168.0.1;UID=sa;PWD=123;'--建立鏈接服務(wù)器登錄映射exec sp_addlinkedsrvlogin;
@rmtsrvname='xiaoming',@useself='false',@locallogin='sa',@rmtuser='sa',
@rmtpassword='123'go--查詢數(shù)據(jù)select * from xiaoming.schooladmin.dbo.agent;
--刪除鏈接服務(wù)器登錄映射和鏈接服務(wù)器:exec sp_droplinkedsrvlogin 'xiaoming' ,'sa'exec sp_dropserver; 'xiaoming'
注意事項:
SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }所以不能通過連接服務(wù)器設(shè)置此屬性into 也存在這樣的問題select; * intoxiaoming.northwind.dbo.tt from
xiaoming.northwind.dbo.tt
五、設(shè)置鏈接服務(wù)器以訪問Access數(shù)據(jù)庫
使用用于 Jet 的 Microsoft OLE DB 提供程序此示例創(chuàng)建一臺名為 test的鏈接服務(wù)器。
說明; 本示例假設(shè)已經(jīng)安裝 Microsoft Access 和示例 Northwind 數(shù)據(jù)庫,且
Northwind 數(shù)據(jù)庫駐留在 C:。
USE masterGO-- 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 masterGOEXEC sp_addlinkedserver 'test', 'OLE DB Provider for Jet', 'Microsoft.Jet.OLEDB.4.0', 'C:Northwind.mdb'GO使用select * from test...表名
六、連接SYBASE--首先,你要在SQL服務(wù)器上裝上訪問sybase的客戶端
--創(chuàng)建鏈接服務(wù)器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
方法二使用ODBCSQL Server到SYBASE連接服務(wù)器的實現(xiàn) 作者:; CCBZZP
本文的測試環(huán)境為:操作系統(tǒng):; WINDOWS2000 SERVER (繁體系統(tǒng))安裝數(shù)據(jù)庫: SQLSERVER2000(英文版)和SYBASE8.0客戶端(英文版)
具體實現(xiàn)步驟: 1.要求pc機上安裝SYBASE8.0客戶端軟件和sqlserver2000軟件。 2.配置windows的ODBC數(shù)據(jù)源: 開始菜單—》程式集—》系統(tǒng)管理工具—》資料數(shù)據(jù)源(ODBC)—》進入配置用
戶DSN或者系統(tǒng)DSN均可以:添加—》選擇ADAPTIVE SERVER ANYWHERE8.0—》自定
義數(shù)據(jù)源名稱(隨意如: SYBASETEST)—》數(shù)據(jù)庫名稱(必選!)—》OK完成。
3. 選擇剛才配置的數(shù)據(jù)源名稱, 再選擇 配置, 跳出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或確認(rèn))即可
進入CONNECT TO SYBASE; DATABASE畫面:
USER ID: 輸入SYBASE DATABASE的用戶
PASSWORD: 輸入SYBASE DATABASE的用戶的密碼
CONNECTION; MODE: 可以選擇默認(rèn)的SHARE模式
選擇OK(確認(rèn))即可!
配置和測試ODBC完成!
4.配置sqlserver2000中的連接服務(wù)器: 企業(yè)管理器—》安全性—》連接服務(wù)器—》右鍵新建連接服務(wù)器—》定義連接名
稱; 選其他數(shù)據(jù)源; 指定程序名稱為:SYBASE ADAPTIVE SERVER ANYWHERE
PROVIDER8.0; 產(chǎn)品名稱可不填; 數(shù)據(jù)源指定剛才ODBC中定義好的數(shù)據(jù)源名稱;
提供程序字符串按以下格式填寫:User ID=username;Password=userpasswd(或者
按如下格式:UID=username;PWD=userpasswd),這里的用戶名和密碼對應(yīng)所要連
接的SYBASE數(shù)據(jù)庫中的用戶名和密碼 —》 安全性標(biāo)簽頁里:設(shè)置用此安全上下
文進行,并錄入SYBASE的數(shù)據(jù)庫用戶名和密碼—》服務(wù)器選項標(biāo)簽頁可默認(rèn)—》
確定。 5.準(zhǔn)備工作全部完成!在sqlserver企業(yè)管理器—》安全性—》連接服務(wù)器打開剛
建好的連接服務(wù)器—》點擊表,即可在右邊窗口看到該SYBASE數(shù)據(jù)庫用戶擁有的
的所有表名,但在這里還并不能查看表的記錄,這個需要在sqserver的查詢分析
器中用具體sql實現(xiàn)!訪問表時,使用格式為: [連接服務(wù)器名]..[SYBASE用戶
].[表名]。更詳細具體的使用這里不再贅述。
