如何从本地Microsoft SQL Server创建到Azure SQL托管实例的链接服务器?
本地SQL Server连接Azure SQL托管实例的链接服务器创建步骤
前置准备
- 搞定网络连通:本地SQL Server需能访问Azure SQL托管实例,可通过VPN、ExpressRoute或专用终结点实现,同时要在托管实例的防火墙规则中添加本地SQL Server的IP地址
- 本地SQL Server账号需具备
ALTER ANY LINKED SERVER权限 - 安装最新版SQL Server ODBC驱动(比如ODBC Driver 17 for SQL Server)
方式一:用SSMS图形界面创建
- 打开SQL Server Management Studio,连接到本地SQL Server实例
- 展开左侧服务器对象,找到链接服务器,右键选择新建链接服务器
- 切换到常规选项卡:
- 自定义链接服务器名称(比如
Azure_MI_Link) - 服务器类型选SQL Server;或者选其他数据源,数据源填Azure托管实例的完全限定域名(格式:
你的实例名.database.windows.net),提供程序选SQL Server Native Client 11.0或ODBC Driver 17 for SQL Server
- 自定义链接服务器名称(比如
- 切换到安全性选项卡:
- 选择使用此安全上下文建立连接,输入Azure托管实例的合法登录名和密码(该账号需具备目标实例访问权限)
- 若使用Kerberos身份验证,可选择使用登录名的当前安全上下文,但需提前完成Kerberos配置
- 切换到服务器选项卡,按需开启
RPC和RPC Out(如需调用远程存储过程) - 点击确定完成创建,右键刚创建的链接服务器选择测试连接验证有效性
方式二:用T-SQL命令创建
执行以下脚本,替换占位符为实际信息:
-- 创建链接服务器 EXEC sp_addlinkedserver @server = N'Azure_MI_Link', -- 自定义链接服务器名称 @srvproduct=N'', @provider=N'SQLNCLI11', -- 也可使用'MSOLEDBSQL'或'ODBC Driver 17 for SQL Server' @datasrc=N'你的托管实例名.database.windows.net'; -- 托管实例的完全限定域名 -- 设置身份验证 EXEC sp_addlinkedsrvlogin @rmtsrvname=N'Azure_MI_Link', @useself=N'False', @locallogin=NULL, @rmtuser=N'托管实例登录名', -- 替换为实际登录名 @rmtpassword=N'托管实例登录密码'; -- 替换为实际密码 -- 可选:启用RPC和远程过程调用 EXEC sp_serveroption @server=N'Azure_MI_Link', @optname=N'rpc', @optvalue=N'true'; EXEC sp_serveroption @server=N'Azure_MI_Link', @optname=N'rpc out', @optvalue=N'true';
测试连接可执行查询:
SELECT * FROM [Azure_MI_Link].[目标数据库名].[架构名].[表名];
注意事项
- 若使用Azure AD身份验证,需先配置本地SQL Server与Azure AD的集成,或使用包含Azure AD凭据的ODBC数据源
- 尽量保持本地SQL Server与Azure托管实例时区一致,避免时间相关数据问题
- 遇到连接超时,优先检查网络防火墙规则、托管实例入站访问设置及本地SQL Server出站权限
内容的提问来源于stack exchange,提问作者mahesh raju
相关产品推荐
相关产品推荐

