使用環境:
操作系統:window7
數據庫:SQL Server2005、MySQL5.0
1、在安裝了SQL Server的服務器上安裝MySQL的ODBC驅動:
下載鏈接:http://dev.mysql.com/downloads/mirror.php?id=376346
點過去之後會鏈接到以下的頁面,不用登陸,直接點擊下面的“No thanks,just start my download”就會彈出下載框。
上面的鏈接只是window7的ODBC驅動,下面這個鏈接比較全,可以根據需要下載相應的驅動:http://dev.mysql.com/downloads/connector/odbc/5.1.html
MySQL的ODBC驅動的安裝過程就是一路next,一路默認就行,直到install,finish。
2、創建ODBC數據源:
點擊“控制面板”—>>“管理工具”—>>"數據源(ODBC)",系統會彈出“ODBC數據源管理器”,選擇“系統DSN”選項卡,可以看到已有的系統數據源信息。
點擊“添加”按鈕,在彈出的“創建新數據源”框中選擇相應的驅動程序。我這裡連接的是MySql,所以選MySQL的ODBC程序。MySQL的ODBC提供了ANSI和Unicode兩個版本,它們之間到底有什麼區別我是不知道啦,但從字面上來看,Unicode應該能夠支持更多的字符集,而ANSI只針對有限的字符集的范圍。我這只是用來測試,就隨便選個ANSI的driver吧。
點擊“完成”按鈕時,系統會彈出MySQL ODBD數據源配置框,如圖:
Data Source Name:數據源名稱,不能為空,可以隨便填,但是要記住了,後面有用到
Description:數據源描述,可以為空,也可以隨便填
TCP/IP Server:安裝了MySQL的機器的Ip地址
Port:端口號,MySQL默認端口號3306
User:登陸MySQL的用戶名
PassWord:登陸MySQL的密碼
Database:數據源,也就是要用的數據庫
填寫完之後,可以點擊下“Test”測試一下,要是連接正確會彈出框
連接不成功則彈出:
測試成功,點擊“OK”按鈕,此時“ODBC”數據源管理器中就多出了剛剛添加的數據源。要是想修改剛剛填寫的配置信息,可以點“配置”按鈕。
最後“確定”。
3、建立鏈接服務器
在SQL Server2005中找到“鏈接服務器”節點,右擊選擇“新建鏈接服務器”。
鏈接服務器:一定要填,可以隨便填,它會自動將填寫的信息轉成大寫
服務器類型選擇“其他數據源”
訪問接口:選擇“Microsoft OLE DB Provider for ODBC Drivers”(默認的是“Microsoft OLE DB Provider for SQL Server”,兩個挺像的,別弄混了)
產品名稱:官方解釋是要作為鏈接服務器添加的OLE DB數據源,也不懂什麼意思,貌似可以隨便填
數據源:就是上面建立的ODBC數據源,我這裡是testMySQL
然後選“安全性”選項卡,最下面的鏈接方式選擇最後一種“使用此安全上下文建立連接”,輸入用戶名和密碼之後點擊“確定”。
此時“鏈接服務器”節點下就會多出剛剛建立的鏈接服務器。
4、簡單測試
執行SQL語句:
select * from OPENQUERY(TESTMySQL, 'select * from cdr_ex')
其中“TESTMySQL”為剛剛建立的鏈接服務器,cdr_ex是建數據源時選定數據庫中的一張表。
後來在網上查到也可以用SQL語句直接建“鏈接服務器”,免了前面的一大堆東西,這裡用SQL新建一個名為“testMySQL2”的鏈接服務器,拷貝並修改之後的SQL如下:
IF EXISTS (SELECT srv.name FROM sys.servers srv WHERE srv.server_id != 0 AND srv.name = N'testMySQL2')
exec sp_dropserver 'testMySQL2','droplogins'
exec sp_addlinkedserver
@server='testMySQL2', --這是ODBC裡面data source name
@srvproduct='testMySQL2', --這個你自己隨便吧
@provider='MSDASQL', --這是固定的,不能瞎填,否則死定了
@datasrc=NULL,
@location=NULL,
@provstr='DRIVER={MySQL ODBC 5.2 ANSI Driver};SERVER=192.168.0.119;DATABASE=asteriskcdrdb;UID=root;pwd=root;PORT=3306;',
--注意驅動名稱要與odbc相同
@catalog = NULL
exec sp_addlinkedsrvlogin
@rmtsrvname='testMySQL2',
@useself='false',
@rmtuser='root',
@rmtpassWord='root';