如何在SQL Server托管实例中创建Windows认证的链接服务器同步本地数据?
在SQL Server托管实例中创建Windows认证的链接服务器
必备前提
- 确保托管实例能访问本地SQL Server的TCP端口(默认1433):可通过公网防火墙放行、VPN连接或ExpressRoute打通Azure虚拟网络与本地网络实现。
- 本地Windows账号已获本地SQL Server的访问权限(至少能读取需要同步的数据)。
操作步骤
创建链接服务器
在托管实例的查询编辑器中执行以下T-SQL:EXEC sp_addlinkedserver @server = N'LocalSQLInstance', -- 自定义链接服务器名称 @srvproduct=N'SQL Server';配置登录映射
根据你的域环境选择对应方式:- 无域信任/独立本地账号:直接在链接服务器中存储本地Windows账号凭据
EXEC sp_addlinkedsrvlogin @rmtsrvname = N'LocalSQLInstance', @useself = N'False', @locallogin = NULL, -- 允许所有托管实例登录使用此映射,也可指定特定账号 @rmtuser = N'YourLocalDomain\LocalUser', -- 本地Windows账号(域名+用户名) @rmtpassword = N'LocalUserPassword'; -- 本地账号密码 - 已建立域信任(本地域与Azure AD同步):使用Kerberos认证,无需存储密码
EXEC sp_addlinkedsrvlogin @rmtsrvname = N'LocalSQLInstance', @useself = N'True', @locallogin = N'AzureAD\ManagedInstanceUser', -- 托管实例的Azure AD Windows账号 @rmtuser = NULL, @rmtpassword = NULL;
- 无域信任/独立本地账号:直接在链接服务器中存储本地Windows账号凭据
验证连通性
执行测试查询确认链接有效:SELECT TOP 10 * FROM [LocalSQLInstance].[YourLocalDB].[dbo].[YourTable];
启用托管实例Windows认证后能否连接本地SQL Server?
可行,但需满足以下条件:
- 域互通:通过Azure AD Connect将本地Windows域与Azure AD建立信任,或把本地Windows账号同步到Azure AD,确保托管实例的Windows登录账号能被本地SQL Server识别。
- 网络连通:同上述前提,托管实例必须能访问本地SQL Server的端口。
- 权限配置:本地SQL Server需允许该同步后的账号登录,并授予对应的数据访问权限。
如果没有域信任或账号同步,仅启用托管实例的Windows认证无法直接访问本地SQL的Windows登录体系,此时需通过上述的凭据映射方式(存储本地账号密码)实现访问。
内容的提问来源于stack exchange,提问作者Narendra
相关产品推荐
相关产品推荐

