全部產品
Search
文件中心

ApsaraDB RDS:通過Linked Server訪問雲下自建SQL Server

更新時間:Nov 28, 2025

RDS SQL Server提供的Linked Server能力可以在RDS執行個體之間建立Linked Server,並且在網路連通的前提下,也支援與雲下自建的SQL Server建立Linked Server,可用於跨地區資料訪問、資料合併與分析以及資料移轉與同步等情境。本文介紹如何通過VPN在RDS SQL Server上建立Linked Server,以串連到雲下自建的SQL Server。

前提條件

  • RDS SQL Server執行個體需滿足如下條件:

    • 執行個體系列:叢集系列、高可用系列(不支援基礎系列

    • 執行個體規格:通用型、獨享型(不支援共用型

    • 計費方式:訂用帳戶、隨用隨付(不支援Serverless執行個體

  • 在部署VPN網關前,您需要進行網路規劃:

    • 確保本地行動裝置和雲上Virtual Private Cloud內需要訪問的私網IP位址區段不能相同,否則無法通訊。

    • 確保用戶端能夠訪問網路。

費用說明

部署VPN網關將產生費用

1. 通過VPN打通RDS SQL Server所在VPC和雲下機器的網路連接通道

1.1. 建立VPN網關執行個體

建立 VPN 閘道

新購 VPN 閘道僅支援建立雙隧道模式的 IPsec-VPN 串連。針對已建立的支援單隧道模式的 VPN 閘道,建議升級IPsec-VPN串連為雙隧道模式

控制台

前往VPN 閘道 - 購買頁,配置以下參數:

  • 地區和可用性區域:選擇 VPC 所在的地區。

  • 網關類型:選擇普通型,建立 IPsec 串連後將使用國際標準商用密碼演算法(普通演算法)。

  • 網路類型:選擇公網,將分配公網 IP 以建立 IPsec 串連。如需建立私網 IPsec 串連,建議使用私網 IPsec 串連綁定轉寄路由器

  • 隧道:選擇雙隧道

    • 需選擇關聯的 VPC 和部署於不同可用性區域的 2 個交換器,確保跨可用性區域的高可用。開啟 IPsec-VPN 後,系統會在 2 個交換器下各建立 1 個彈性網卡ENI,作為使用 IPsec 串連與 VPC 流量互連的介面。每個 ENI 會佔用交換器下的 1 個 IP地址。

    • 對於僅支援單可用性區域的地區 ,無法實現可用性區域層級的容災。建議在該可用性區域下指定 2 個不同的交換器以實現 IPsec 串連的高可用。

      僅支援單可用性區域的地區

      華東5(南京-本地地區)、泰國(曼穀)、韓國(首爾)、菲律賓(馬尼拉)、阿聯酋(杜拜)、墨西哥。

    • 建立 VPN 閘道後,不支援修改關聯的交換器。

  • 頻寬規格:不同地區下,VPN 閘道支援的最大頻寬規格不同。選擇 5Mbps 或 10 Mbps 的頻寬規格,將限制從本機資料中心去往 VPN 閘道方向的頻寬峰值為 10 Mbps。

  • 開啟IPsec-VPN,關閉SSL-VPN

    如果建立的 VPN 閘道未開啟 IPsec-VPN,可在目標 VPN 閘道的功能配置列單擊IPsec串連後的去開啟

API

調用CreateVpnGateway建立 VPN 閘道。

1.2. 建立SSL服務端

  1. 登入VPN網關管理主控台

  2. 在左側導覽列,選擇網間互聯 > VPN > SSL服務端

  3. 在頂部功能表列,選擇SSL服務端的地區。

    SSL服務端的地區需和VPN網關執行個體所屬地區相同。

  4. SSL服務端頁面,單擊建立SSL服務端

  5. 建立SSL服務端面板,根據以下資訊配置SSL服務端,然後單擊確定

    配置

    說明

    名稱

    輸入SSL服務端的名稱。

    資源群組

    選擇VPN網關所屬的資源群組。

    SSL服務端所屬的資源群組與VPN網關所屬的資源群組保持一致。

    VPN網關

    選擇要關聯的VPN網關。

    確保該VPN網關已經開啟了SSL-VPN功能。

    本端網段

    本端網段是用戶端通過SSL-VPN串連要訪問的位址區段。

    本端網段可以是Virtual Private Cloud(Virtual Private Cloud)的網段、交換器的網段、通過物理專線和VPC互連的本機資料中心的網段、雲端服務(例如Object Storage Service、雲資料庫)等的網段。

    單擊+添加本端網段可添加多個本端網段,最多支援添加5個本端網段。 以下網段不支援指定為本端網段:

    • 127.0.0.0~127.255.255.255

    • 169.254.0.0~169.254.255.255

    • 224.0.0.0~239.255.255.255

    • 255.0.0.0~255.255.255.255

    說明

    本端網段的子網路遮罩位元在8至32位之間。

    客戶端網段

    用戶端網段是給用戶端虛擬網卡分配訪問地址的網段,不是指用戶端已有的內網網段。當用戶端通過SSL-VPN串連訪問本端時,VPN網關會從指定的用戶端網段中分配一個IP地址給用戶端使用,用戶端將使用分配的IP地址訪問雲上資源。

    在您指定用戶端網段時需保證用戶端網段所包含的IP地址個數是當前VPN網關SSL串連數的4倍及以上。

    • 單擊查看原因。

      例如您指定的用戶端網段為192.168.0.0/24,系統在為用戶端分配IP地址時,會先從192.168.0.0/24網段中劃分出一個子網路遮罩為30的子網段,例如192.168.0.4/30,然後從192.168.0.4/30中分配一個IP地址供用戶端使用,剩餘三個IP地址會被系統佔用以保證網路通訊,此時一個用戶端會耗費4個IP地址。因此,為保證您的用戶端均能分配到IP地址,請確保您指定的用戶端網段所包含的IP地址個數是VPN網關SSL串連數的4倍及以上。

    • 單擊查看不支援配置的網段。

      • 100.64.0.0~100.127.255.255

      • 127.0.0.0~127.255.255.255

      • 169.254.0.0~169.254.255.255

      • 224.0.0.0~239.255.255.255

      • 255.0.0.0~255.255.255.255

    • 單擊查看每個SSL串連數建議的用戶端網段。

      • 若SSL串連數為5,則用戶端網段的子網路遮罩位元建議小於或等於27。例如:10.0.0.0/27、10.0.0.0/26。

      • 若SSL串連數為10,則用戶端網段的子網路遮罩位元建議小於或等於26。例如:10.0.0.0/26、10.0.0.0/25。

      • 若SSL串連數為20,則用戶端網段的子網路遮罩位元建議小於或等於25。例如:10.0.0.0/25、10.0.0.0/24。

      • 若SSL串連數為50,則用戶端網段的子網路遮罩位元建議小於或等於24。例如:10.0.0.0/24、10.0.0.0/23。

      • 若SSL串連數為100,則用戶端網段的子網路遮罩位元建議小於或等於23。例如:10.0.0.0/23、10.0.0.0/22。

      • 若SSL串連數為200,則用戶端網段的子網路遮罩位元建議小於或等於22。例如:10.0.0.0/22、10.0.0.0/21。

      • 若SSL串連數為500,則用戶端網段的子網路遮罩位元建議小於或等於21。例如:10.0.0.0/21、10.0.0.0/20。

      • 若SSL串連數為1000,則用戶端網段的子網路遮罩位元建議小於或等於20。例如:10.0.0.0/20、10.0.0.0/19。

    重要
    • 用戶端網段的子網路遮罩位元在16至29位之間。

    • 請確保用戶端網段與本端網段、VPC網段以及與用戶端終端關聯的任何路由網段均沒有重疊。

    • 在指定用戶端網段時,建議您使用10.0.0.0/8、172.16.0.0/12和192.168.0.0/16網段及其子網網段。如果您的用戶端網段需要指定為公網網段,您需要將公網網段設定為VPC的使用者網段,以確保VPC可以訪問到該公網網段。關於使用者網段的更多資訊,請參見專用網路FAQ專用網路FAQ

    • 建立SSL服務端後,系統後台會自動將用戶端網段的路由添加在VPC執行個體的路由表中,請勿再手動將用戶端網段的路由添加到VPC執行個體的路由表,否則會導致SSL-VPN串連流量傳輸異常。

    高級配置

    協議

    SSL-VPN串連使用的協議。取值:

    • UDP

    • TCP(預設值)

    連接埠

    SSL服務端使用的連接埠。連接埠取值範圍:1~65535。預設連接埠:1194

    說明

    不支援使用以下連接埠:22、2222、22222、9000、9001、9002、7505、80、443、53、68、123、4510、4560、500、4500

    密碼編譯演算法

    SSL-VPN串連使用的密碼編譯演算法。

    • 如果用戶端使用Tunnelblick軟體或2.4.0及以上版本的OpenVPN軟體,則SSL服務端和用戶端之間動態協商密碼編譯演算法,會優先使用雙方均支援的最高安全層級的密碼編譯演算法。您為SSL服務端指定的密碼編譯演算法不生效。

    • 如果用戶端使用2.4.0之前版本的OpenVPN軟體,則SSL服務端和用戶端將使用您為SSL服務端指定的密碼編譯演算法。SSL服務端支援指定以下密碼編譯演算法:

      • AES-128-CBC(預設值)

      • AES-192-CBC

      • AES-256-CBC

      • none

        本參數表示不使用密碼編譯演算法。

    是否壓縮

    是否對傳輸資料進行壓縮處理。取值:

    • (預設值)

    雙因子認證

    選擇是否開啟雙因子認證功能。系統預設關閉雙因子認證功能。

    雙因子認證是指在建立SSL-VPN串連前對用戶端進行兩種不同類型的身份認證,即預設的SSL用戶端認證認證和IDaaS EIAM使用者名稱密碼認證,兩次認證均通過後才允許用戶端建立SSL-VPN串連。雙因子認證的雙重認證機制可以防止使用者身份盜用、未經授權的SSL-VPN串連等,有效提高了SSL-VPN串連的安全性,保護VPC內的敏感性資料免受外部威脅。相關教程,請參見SSL-VPN雙因子認證

    開啟雙因子認證功能後,您需要選擇用於身份認證的應用身份服務IDaaS EIAM執行個體和IDaaS應用ID。

    單擊瞭解雙因子認證流程

    1. 您在用戶端側發起SSL-VPN串連請求。

    2. VPN網關接收到請求後,對用戶端進行SSL用戶端認證認證;SSL用戶端認證認證通過後,要求用戶端側輸入使用者名稱和密碼。

    3. 您在用戶端側輸入使用者名稱和密碼後,VPN軟體將使用者名稱和密碼發送至VPN網關。

    4. VPN網關接收到使用者名稱和密碼後,將使用者名稱和密碼發送至IDaaS進行認證。

    5. IDaaS對接收到的使用者名稱和密碼進行認證,並向VPN網關返回認證結果。

    6. VPN網關根據IDaaS返回的結果,允許或拒絕用戶端建立SSL-VPN串連。

    說明
    • 如果您是首次使用雙因子認證功能,請先完成授權後再開啟雙因子認證功能。

    • 在阿聯酋(杜拜)地區建立SSL服務端時,推薦您綁定新加坡地區的IDaaS EIAM 2.0執行個體,以減少跨地區時延。

    • IDaaS EIAM 1.0執行個體不再支援新購。如果您的阿里雲帳號下存在IDaaS EIAM 1.0執行個體,開啟雙因子認證功能後,依舊支援綁定IDaaS EIAM 1.0執行個體。

      如果您的阿里雲帳號下不存在IDaaS EIAM 1.0執行個體,開啟雙因子認證功能後,僅支援綁定IDaaS EIAM 2.0執行個體。

    • 在您綁定IDaaS EIAM 2.0執行個體時,可能需要對VPN網關執行個體進行升級。更多資訊,請參見【變更公告】SSL-VPN雙因子認證支援IDaaS EIAM 2.0

1.3. 建立SSL用戶端認證

  1. 登入VPN網關管理主控台

  2. 在左側導覽列,選擇網間互聯 > VPN > SSL客戶端

  3. 在頂部功能表列,選擇SSL用戶端的地區。
  4. SSL客戶端頁面,單擊建立SSL客戶端

  5. 建立SSL客戶端面板,根據以下資訊配置SSL用戶端認證,然後單擊確定

    配置

    說明

    名稱

    輸入SSL用戶端認證的名稱。

    资源组

    選擇SSL服務端所屬的資源群組。

    SSL用戶端認證與SSL服務端所屬的資源群組保持一致。

    SSL服務端

    選擇要關聯的SSL服務端。

1.4. 下載SSL用戶端認證

  1. 登入VPN網關管理主控台

  2. 在左側導覽列,選擇網間互聯 > VPN > SSL客戶端

  3. 在頂部功能表列,選擇SSL用戶端的地區。
  4. SSL客戶端頁面,找到目標SSL用戶端認證,在操作列單擊下載認證

1.5. 配置用戶端

  1. 下載並安裝OpenVPN用戶端。

  2. 解壓下載的認證,並複製到OpenVPN安裝目錄的config檔案夾中。

  3. 單擊Connect發起串連。

1.6. 測試連接

  1. 在同一個VPC中建立一台ECS執行個體

  2. 在OpenVPN用戶端中通過ping命令測試該ECS執行個體的連通性。

    說明
    • 請確保該ECS執行個體的安全性群組規則允許用戶端遠端連線,授權對象為SSL服務端配置中指定的用戶端網段,並指定要訪問本地的資料庫服務連接埠號碼。更多資訊,請參見安全性群組配置案例

    • 若無法串連,可能是由於本地主機設定了防火牆,需要將防火牆設定為允許遠端串連。

2. 在RDS SQL Server上建立Linked Server

方式一:通過SSMS串連RDS後建立Linked Server

  1. 通過SQL Server Management Studio(SSMS)串連RDS SQL Server執行個體

  2. 在SSMS中執行如下SQL命令,建立Linked Server:

    DECLARE
        @linked_server_name sysname = N'yangzhao_slb', -- Linked Server的名稱。用於標識遠程伺服器。
        @data_source sysname = N'****.sqlserver.rds.aliyuncs.com,3888 ', -- 自建SQL Server資料庫的IP和連接埠號碼,格式為:<IP>,<連接埠>。例如:10.1.10.1,1433。
        @user_name sysname = N'ay15', -- 自建SQL Server資料庫的使用者名稱,用於串連遠端資料庫。
        @password nvarchar(128) = N'******', -- 自建SQL Server資料庫使用者名稱對應的密碼。
        -- 串連伺服器的其他可選項,以XML格式提供。
        @link_server_options xml = N'
            <rds_linked_server>
                <config option="data access">true</config>
                <config option="rpc">true</config>
                <config option="rpc out">true</config>
            </rds_linked_server>'
    ;
    
    -- 調用預存程序sp_rds_add_linked_server建立連結的伺服器。
    EXEC sp_rds_add_linked_server
        @linked_server_name,
        @data_source,
        @user_name,
        @password,
        @link_server_options;
  3. 執行如下SQL命令,查看已配置的Linked Server列表:

    SELECT * FROM [myTestLinkedServer].master.sys.servers;

    測試Linked Server

方式二:通過DMS串連RDS後建立Linked Server

  1. 通過DMS串連RDS SQL Server執行個體

  2. 在DMS中執行如下SQL命令,建立Linked Server:

    -- 調用預存程序sp_rds_add_linked_server建立連結的伺服器。
    EXEC sp_rds_add_linked_server
        @linked_server_name = N'yangzhao_slb', -- Linked Server的名稱。用於標識遠程伺服器。
        @data_source = N'rm-***.sqlserver.rds.aliyuncs.com,1433',   -- 自建SQL Server資料庫的IP和連接埠號碼,格式為:<IP>,<連接埠>。例如:10.1.10.1,1433。
        @user_name = N'ay15', -- 自建SQL Server資料庫的使用者名稱,用於串連遠端資料庫。
        @password = N'******', -- 自建SQL Server資料庫使用者名稱對應的密碼。
        -- 串連伺服器的其他可選項,以XML格式提供。
        @link_server_options = N'
            <rds_linked_server>
                <config option="data access">true</config>
                <config option="rpc">true</config>
                <config option="rpc out">true</config>
            </rds_linked_server>'
    ;
  3. 執行如下SQL命令,查看已配置的Linked Server列表:

    SELECT * FROM [myTestLinkedServer].master.sys.servers;

常見問題

開啟Linked Server後,通過多種方式測試查詢效率時,為什麼不同情境下的查詢效能有差異?

  • 情境描述:兩個RDS SQL Server執行個體(處於同一地區和VPC,但可用性區域不同)間開啟Linked Server後,執行相同查詢語句時,查詢時間變長。通過多種方式,例如同可用性區域的ECS查詢、DMS查詢、RDS執行個體通過Linked Server查詢另一RDS執行個體(不同可用性區域)測試,發現查詢效率存在差異。其中不同查詢方式的效能樣本如下:

    • SSMS串連RDS查詢:無跨執行個體網路傳輸,延遲最低,速度最快。

    • DMS查詢RDS:僅返回少量資料(返回上限為3000行),傳輸量小,因此較快。

    • ECS查詢RDS(同可用性區域):同可用性區域網路延遲較低,效能優於跨可用性區域查詢。

    • RDS與RDS間跨可用性區域查詢:涉及跨可用性區域網路傳輸,網路延遲高且資料量過大,因此效能較弱。

  • 分析原因:查詢效能受網路延遲和資料量影響,表現為自查速度 > 同可用性區域速度 > 跨可用性區域速度。其中:

    • 網路延遲:跨可用性區域查詢的網路延遲高於同可用性區域。

    • 資料量大小:傳輸資料量越大,網路延遲對效能的影響越明顯。

  • 效能最佳化建議

    • 盡量避免跨可用性區域查詢,優先將執行個體部署在同一可用性區域。如需調整RDS SQL Server的可用性區域,請參見遷移可用性區域

    • 減少傳輸資料量,最佳化查詢邏輯(如增加過濾條件、分頁查詢)等。

相關操作