当登录名是 Azure 目录安全组时,如何执行 AS LOGIN

问题描述 投票:0回答:0

特别是在 Synapse Serverless 中,如果重要的话。

作为 SQL Server 登录的登录名执行工作正常

 EXECUTE AS USER = 'NameOfSQLServerLogin'

 SELECT *
 FROM [dbo].dimclient

 REVERT;

但是当登录是 Active Directory 安全组时,我不清楚如何执行上述操作。

假设安全组名称是[DataWarehouse - ReadOnlyAll]。

  • 有对应的同名登录名
  • 有一个对应的同名用户,映射到登录名
  • sys.database_princiapls 和 sys.server_principals 中都有 DataWarehouse - ReadOnlyAll 的条目,两者均列为“External_Group”

尝试过这些组合:

EXECUTE AS LOGIN = '[DataWarehouse - ReadOnlyAll]'
EXECUTE AS LOGIN = 'DataWarehouse - ReadOnlyAll'
EXECUTE AS USER = '[DataWarehouse - ReadOnlyAll]'
EXECUTE AS USER = 'DataWarehouse - ReadOnlyAll'

总是同样的错误:

“消息 15517,第 16 级,状态 1,第 57 行 无法作为数据库主体执行,因为主体“DataWarehouse - ReadOnlyAll”不存在,无法模拟此类主体,或者您没有权限。”

在前提下,我可以使用域名\用户名的格式

执行为登录 = 'OurDomain\First.Last'

这可以在本地运行。在 Synapse 中则不然。无论是在本地还是在 Synapse 中,直接引用安全组名称都不起作用。

我显然错过了一些基本的东西......

active-directory azure-synapse execute-as
© www.soinside.com 2019 - 2024. All rights reserved.