背景
- 我已在 Azure 托管实例上创建了链接服务器,并仅将其保护到特定登录。
- 我有一个 SQL 代理作业想要使用链接服务器。
问题
如何授予 Azure MI SQL 代理执行帐户使用链接服务器的权限?
结果
在本地 SQL Server 中,我将使用 proc sp_addlinkedsrvlogin 添加分配给 SQL 代理的服务帐户作为链接服务器登录名。但是,我的 SQL 代理服务帐户似乎是 [User Manager\ContainerAdministrator] (REF 1)。如果我尝试使用上述过程添加该登录名,我会收到错误“User Manager\ContainerAdministrator”不是有效登录名或您没有权限。”。
当我的 SQL 代理作业尝试使用链接服务器时,我按预期收到此错误:以用户身份执行:User Manager\ContainerAdministrator。由于不存在登录映射,对远程服务器的访问被拒绝。
解决方法
- 删除链接服务器上的安全性并让每次登录都使用它。从安全角度来看,这是不可接受的。
- 将我的 SQL 代理作业从托管实例移至 SQL Server 的常规安装上,我可以在其中授予 SQL 代理执行帐户使用链接服务器的权限。重构作业以使用第二个链接服务器将结果写回托管实例。这是我认为我需要做的,但令人失望的是,我们对 Azure 托管实例的研究表明支持 SQL 代理和链接服务器,但显然不是同时支持。
参考 1:https://johnmccormack.it/2020/09/how-do-i-find-the-agent-service-account-for-azure-sql-database-management-instance/