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連接服務器的實現?
?
本文的測試環境為:
操作系統: 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用戶].[表名]。更詳細具體的使用這里不再贅述。?
轉載于:https://www.cnblogs.com/yunhuasheng/archive/2008/09/16/1291768.html
總結
以上是生活随笔為你收集整理的SQL Server的链接服务器技术小结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Delphi绘制Alpha图像的函数
- 下一篇: uml符号含义