在多種資料庫環境下,經常會遇見在不同資料庫之間轉換資料和互相進行操作的情況。以下簡要介紹下用SQL Server操作MySQL的步驟和方法。
1 操作前的準備1.1 安裝MySQL驅動
想要在SQL Server中操作MySQL,首先要在SQL Server所在的伺服器上安裝MySQL的驅動。MySQL的驅動安裝包在MySQL的官網上可以下載到,我下載到的安裝包名為:mysql-connector-odbc-5.1.8-winx64,適用於64位的Windows伺服器。雙擊安裝包,直接[next]即可安裝成功。安裝成功後,在運行中輸入[odbcad32.exe]開啟[ODBC資料來源管理器],點擊[驅動程式]選項,可看到[MySQL ODBC 5.1 Driver]已安裝成功。
1.2 建立ODBC資料來源
安裝好MySQL的驅動後就可以在SQL Server所在的伺服器上建立指向MySQL伺服器的ODBC資料來源。
在[ODBC資料來源管理器]中選擇[系統 DSN]選項卡,點擊[添加]按鈕。
選擇[MySQL ODBC 5.1 Driver],點擊[完成]。
在彈出的配置框中填寫資料來源名、MySQL伺服器IP、連接埠、使用者名稱和密碼,點擊[ok],ODBC資料來源建立成功。
1.3 建立連結的伺服器
建立連結的伺服器有兩種方式,可以通過SQL Server Management Studio中的嚮導建立,也可以直接使用SQL語句建立。
1.3.1 使用嚮導建立連結的伺服器
在SQL Server Management Studio中串連上SQL Server,然後在[伺服器對象]->[連結的伺服器]上點擊右鍵,選擇[建立串連伺服器(N)…]。
在[連結的伺服器]框中填寫自訂的連結的伺服器名稱,[伺服器類型]選擇[其他資料來源],[提供者]選擇”Microsoft OLE DB Provider for ODBC Drivers”,[產品名稱]跟連結的伺服器名稱填寫成一樣的,[資料來源]填寫剛才建立的ODBC資料來源,點擊[確定],連結的伺服器建立成功。
其實,也可以不建立ODBC資料來源,直接建立連結的伺服器的,只要把[資料來源]留空,而在[提供者字串]中填寫連結字串
“Driver={MySQL ODBC 5.1 Driver};Server=192.168.0.21;Database=test; User=root;Password=rootPassword;Option=3;”即可。如:
1.3.2 使用SQL語句建立連結的伺服器
可以使用以下SQL語句建立連結的伺服器,其中使用了ODBC資料來源:
EXEC master.dbo.sp_addlinkedserver
@server = N'TestMySQL', --連結的伺服器名
@srvproduct = N'TestMySQL', --產品名稱
@provider = N'MSDASQL', --提供者
@datasrc = N'TestServer' --資料來源名稱
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'TestMySQL',@useself=N'False',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL
GO
也可以使用以下SQL語句建立連結的伺服器,其中沒有使用ODBC資料來源,使用的是提供者字串:
EXEC master.dbo.sp_addlinkedserver
@server = N'TestMySQL', --連結的伺服器名
@srvproduct = N'TestMySQL', --產品名稱
@provider = N'MSDASQL', --提供者
@provstr = N'Driver={MySQL ODBC 5.1 Driver};Server=192.168.0.21;Database=test; User=root;Password=rootPassword;Option=3;' --提供者字串
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'TestMySQL',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL
GO
2 通過SQL Server操作MySQL
MySQL資料庫test 中的資料表TestTable的結構如下:
操作該表的方法如下:
2.1 查詢MySQL中的資料
select * from openquery(TestMySQL,'select * from test.TestTable');
2.2 向MySQL表中插入資料
insert into openquery(TestMySQL,'select * from test.TestTable')
select 1,'TestName';
2.3 刪除MySQL表中的資料
delete from openquery(TestMySQL,'select * from test.TestTable');
2.4 修改MySQL表中的資料
update openquery(TestMySQL,'select * from test.TestTable')
set TestName='ABCDE' where TestID=1;
摘自 http://blog.csdn.net/yongsheng0550/article/details/6598252