如何在 SQL Server 中建立和配置連結伺服器以連線到 MySQL
概述
本文分為三個部分:
-
為 MySQL 安裝ODBC驅動程式
-
配置 ODBC 驅動程式以連線到 MySQL 資料庫
-
使用 ODBC 驅動程式建立和配置連結伺服器
什麼是連結伺服器?
MSSQL 中的連結伺服器是連線到給定伺服器的其他資料庫伺服器,可以查詢和操作其他資料庫中的資料。例如,我們可以將一些 MySQL 資料庫連結到 MSSQL,並像使用 MSSQL 上的任何其他資料庫一樣使用它。
01. 為 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 驅動程式是否存在:
02. 配置 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選項卡中:
03. 使用 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')
可能會出現以下錯誤訊息:
The following error message may appear:
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”.