適用於: 適用於: SQL Server 2025 (17.x)
SQL Server 2025 引入了連結伺服器的管理身份支援,使 SQL Server 實例間能安全且無需憑證認證。 此功能適用於 Azure 虛擬機上的 SQL Server,以及由 Azure Arc 啟用的 SQL Server。透過管理身份驗證,您可以建立連結伺服器連線,無需管理密碼或儲存憑證,提升安全性並簡化憑證管理。
本文將教你如何利用管理身份驗證設定連結伺服器連線。 你會設定來源伺服器發起連線,目標伺服器則接受基於管理身份的認證。
先決條件
在開始之前,請確保您具備以下條件:
- SQL Server 2025 運行於以下任一平台:
- 安裝 SQL Server IaaS Agent 擴充套件的 Azure 虛擬機,或
- 本地或啟用 Azure Arc 的虛擬機
- Microsoft Entra 認證在來源與目的地伺服器上皆已設定
- 來源與目的伺服器間的網路連線,並有適當的防火牆規則
- 在兩個實例上建立登入帳號及設定連結伺服器的適當權限
- 針對 Azure 虛擬機:同時啟用 SqlIaasExtension 和 AADLogin 擴充
- 對於啟用 Azure Arc 的實例:Azure Arc agent 已安裝並設定
Azure 虛擬機需求
在 Azure 虛擬機上使用 SQL Server 時:
- 確認 SqlIaasExtension 和 AADLogin 擴充功能是否已安裝。 這些擴充功能在從 Azure Marketplace SQL Server 範本部署時預設包含。
- 請依照在 Azure VM 上為 SQL Server 啟用 Microsoft Entra 認證的指引,設定 Microsoft Entra 認證。
- 確保兩個虛擬機器都允許進出網路流量用於 SQL Server 通訊。
- 在每台虛擬機器上設定防火牆規則,允許 SQL Server 流量。
Azure Arc 啟用需求
使用由 Azure Arc 啟用了的 SQL Server:
- 請在 SQL Server 2025 實例上安裝並設定 Azure Arc,並遵循 Azure Arc 啟用的 SQL Server 前置條件。
- 請依照應用程式註冊指引設定 Microsoft Entra 認證。
- 驗證來源伺服器與目的伺服器之間的網路連線。
在目的地伺服器建立登入
目的地伺服器必須擁有與來源伺服器名稱相符的登入帳號。 當來源伺服器使用受管理身份連線時,會使用機器的受管理身份進行認證。 目的伺服器會透過將此身份與外部提供者建立的登入資料進行匹配來驗證。
將連接至目標 SQL Server 實例。
使用來源伺服器名稱建立登入資料:
USE [master]; GO CREATE LOGIN [AzureSQLVMSource] FROM EXTERNAL PROVIDER WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english]; GO授予登入帳號適當的伺服器層級權限。 例如,授予
sysadmin角色:ALTER SERVER ROLE [sysadmin] ADD MEMBER [AzureSQLVMSource]; GO小提示
應用最小權限原則,只授予你特定使用情境所需的權限,而非使用
sysadmin。
在來源伺服器上設定連結伺服器
在目標伺服器建立登入後,設定來源伺服器的連結連線。 此配置使用 MSOLEDBSQL 提供者,並使用管理識別身份進行身份驗證。
連接到來源的 SQL Server 實例。
建立連結的伺服器使用
sp_addlinkedserver:USE [master]; GO EXEC master.dbo.sp_addlinkedserver @server = N'AzureSQLVMDestination', @srvproduct = N'', @provider = N'MSOLEDBSQL', @datasrc = N'AzureSQLVMDestination', @provstr = N'Authentication=ActiveDirectoryMSI;'; GO該
@provstr參數指定ActiveDirectoryMSI了認證,指示連結伺服器使用受管理身份。設定連結伺服器登入映射:
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'AzureSQLVMDestination', @useself = N'False', @locallogin = NULL, @rmtuser = NULL, @rmtpassword = NULL; GO此配置讓連結伺服器能使用管理身份,無需明確的使用者憑證。
測試連結伺服器連線
設定完成後,請確認連結的伺服器連線是否正常運作。
使用以下
sp_testlinkedserver方法測試連線:EXECUTE master.dbo.sp_testlinkedserver AzureSQLVMDestination; GO如果測試成功,你可以查詢遠端伺服器。 例如:
SELECT * FROM [AzureSQLVMDestination].[master].[sys].[databases]; GO
若測試失敗,請確認:
- Microsoft Entra 認證在兩台伺服器上都已正確設定
- 目的地伺服器的登入資料與來源伺服器名稱完全一致
- 伺服器間存在網路連線
- 防火牆規則允許 SQL Server 流量
- Azure VM 已啟用所需的擴充功能(SqlIaasExtension 和 AADLogin)