如何在 SQL Server 中創建和配置鏈接服務器以連接到 MySQL
概述
本文將指導您完成在 SSMS 中成功創建鏈接服務器以連接到 MySQL 數據庫的所有必要步驟。
本文分為三個部分:
- 為 MySQL 安裝ODBC驅動程序。
- 配置 ODBC 驅動程序以連接到 MySQL 數據庫。
- 使用 ODBC 驅動程序創建和配置鏈接服務器。
什么是鏈接服務器?
MSSQL 中的鏈接服務器是連接到給定服務器的其他數據庫服務器,可以查詢和操作其他數據庫中的數據。例如,我們可以將一些 MySQL 數據庫鏈接到 MSSQL,并像使用 MSSQL 上的任何其他數據庫一樣使用它。
1、為 MySQL 安裝 ODBC 驅動程序
ODBC 代表開放式數據庫連接(連接器)。它是微軟在 1990 年代開發的。通常,即用于訪問數據庫系統的 API(應用程序編程接口)。對于非 Windows 操作系統,使用JDBC(Java 數據庫連接)。在 Windows 上安裝 MySQL 的 ODBC 驅動程序之前,請確保 Microsoft 數據訪問組件 (MDAC) 是最新的,并且您的系統上安裝 了Microsoft Visual C++ 2013 Redistributable Package 。你可以下載和安裝適用于 Windows 的 MySQL ODBC 驅動程序。可以安裝兩個版本的適用于 Windows 的 MySQL ODBC 驅動程序,具體取決于將與哪個應用程序一起使用:
- mysql-connector-odbc-8.0.17-win32.msi 用于 32 位應用程序。
- mysql-connector-odbc-8.0.17-winx64.msi 用于 64 位應用程序。
安裝適用于 Windows 的 MySQL ODBC 驅動程序非常簡單。雙擊下載的文件,將出現歡迎對話框:
按下一步按鈕后,將出現許可協議對話框。如果您同意許可協議,請按我接受許可協議中的條款單選按鈕,然后單擊下一步按鈕:
在“設置類型”對話框下,選擇“典型”單選按鈕并按“下一步”按鈕:
“準備安裝程序”對話框顯示將安裝的內容和位置。按安裝按鈕安裝 ODBC 驅動程序:
幾秒鐘后,MySQL ODBC 驅動程序的安裝完成:
要確認機器上安裝了 MySQL 的 ODBC 驅動程序,可以從控制面板檢查:
另一種檢查方法是通過ODBC 數據源管理器對話框:
在ODBC 數據源管理器對話框 的驅動程序選項卡下,檢查 MySQL ODBC 驅動程序是否存在:
2、配置 ODBC 驅動程序以連接到 MySQL 數據庫
要使用 ODBC 驅動程序連接到 MySQL 數據庫,請在“ ODBC 數據源管理器”對話框中的“系統 DSN ”選項卡下,按“添加”按鈕:
在Create New Data Source對話框中,選擇MySQL ODBC Driver并按Finish按鈕:
在MySQL 連接器/ODBC 數據源配置對話框中:
對于數據源名稱文本框,選擇輸入數據源名稱。在描述文本框中,根據需要輸入數據源的描述。通過選擇適當的單選按鈕,使用TCP/IP 服務器或命名管道連接方法連接到 MySQL。
在此示例中,選擇了TCP/IP Server單選按鈕。在文本框中,輸入 MySQL 服務器的主機名或 IP 地址。默認情況下,主機名是localhost,IP 地址是127.0.0.1。在端口框中,輸入列出 MySQL 服務器的 TCP/IP 端口。默認為3306端口。
在“用戶”框中,鍵入連接到 MySQL 數據庫所需的用戶名,并在“密碼”框中,鍵入用戶密碼。在Database組合框下,選擇要建立連接的數據庫:
要測試它是否連接到正確配置的 MySQL 數據庫,請按測試按鈕。如果連接建立成功,會出現以下信息:
此外,數據源名稱將出現在ODBC 數據源管理器對話框 的系統 DSN選項卡中:
3、使用 ODBC 驅動程序創建和配置鏈接服務器
現在當 MySQL 的 ODBC 驅動程序已經安裝并配置了連接 MySQL 數據庫的 ODBC 驅動程序后,就可以開始在 SSMS 中配置 Linked Server 以連接 MySQL。
轉到 SSMS,在對象資源管理器中,在Server Objects文件夾下,右鍵單擊Linked Servers文件夾,然后從菜單中選擇New Linked Server選項:
將出現新建鏈接服務器對話框。這里將輸入配置以連接到 MySQL 服務器:
在常規選項卡的鏈接服務器文本框中,輸入鏈接服務器的名稱(例如 MYSQL_SERVER)。
選擇其他數據源單選按鈕并從提供程序列表中選擇Microsoft OLE DB Provider for ODBC Drivers項:
在產品名稱框下,輸入任何適當的(有效)名稱。對于數據源,應輸入 ODBC 數據源的名稱:
在Security選項卡中,單擊Be made using this security context單選按鈕,然后在Remote login和With password框中,輸入 MySQL 服務器實例中存在的用戶名和密碼,該實例被選為數據源:
在Server Options 選項卡下,將RPC和RPC Out字段設置為True:
如果這兩個選項未設置為 true 并執行如下代碼:
EXEC ('SELECT * FROM test.table1') AT MYSQL_SERVER
The following error may appear:
Msg 7411, Level 16, State 1, Line 1 Server ‘MYSQL_SERVER’ is not configured for RPC.
設置“新建鏈接服務器”對話框 下的所有選項后,按“確定”按鈕。新創建的鏈接服務器應該出現在Linked Servers文件夾中:
在開始從 MySQL 數據庫查詢數據之前,轉到Linked Server文件夾下的Providers文件夾,右鍵單擊MSDASQL提供程序,然后從上下文菜單中選擇Properties命令:
在Provider Options對話框中,選中Nested queries、Level zero only、Allow in process、Support 'Like' operator復選框:
例如,如果未選中Allow in process復選框,則在執行如下代碼時:
SELECT *
FROM OPENQUERY(MYSQL_SERVER, 'SELECT * FROM test.table1')
可能會出現以下錯誤消息:
Msg 7399, Level 16, State 1, Line 1 The OLE DB provider “MSDASQL” for linked
server “MYSQL_SERVER” reported an error. Access denied. Msg 7350, Level 16,
State 2, Line 1 Cannot get the column information from OLE DB provider “MSDASQL”
for linked server “MYSQL_SERVER”.
小結
MSSQL企業中的使用還是很普遍的,尤其是在中小企業中,MSSQL數據庫配置鏈接服務器也是一個常見的應用,最近在生產環境中碰到這樣一個案例,所以作了一下筆記,以備不時之需。