Sql-Server
無法作為伺服器主體執行…使用 Windows (Active Directory) 組登錄
我正在執行 SQL Server 2012(我知道,古老的……)並試圖找出使用者無權執行某些程序的原因。
我以 身份登錄
sa
,以防我自己的 id 沒有足夠的權限來冒充。當我嘗試:
EXECUTE AS LOGIN = 'MBA\SAHFOS_GRP'
我收到消息:
Cannot execute as the server principal because the principal "MBA\SAHFOS_GRP" does not exist, this type of principal cannot be impersonated, or you do not have permission.
據我所知,它符合要求:
select * from sys.server_principals where name = 'MBA\SAHFOS_GRP' name principal_id sid type type_desc is_disabled create_date modify_date default_database_name default_language_name credential_id owning_principal_id is_fixed_role MBA\SAHFOS_GRP 413 0x0105000000000005150000007CEB240DCD7C4166235F636BC8040000 G WINDOWS_GROUP 0 2017-12-01 10:00:45.050 2017-12-01 10:00:45.057 cpr_prod us_english NULL NULL 0
我是
sa
,所以我肯定有許可。它存在。這只留下“不能被模仿”。為什麼不能被模仿?
這不受設計支持。
參考:EXECUTE AS 子句 (Transact-SQL)
指定模組內的語句在 user_name 中指定的使用者的上下文中執行。模組內任何對象的權限都根據 user_name 進行驗證。不能為具有伺服器作用域或登錄觸發器的 DDL 觸發器指定 user_name。請改用 login_name。
user_name 必須存在於目前數據庫中,並且必須是單例帳戶。user_name 不能是組、角色、證書、密鑰或內置帳戶,例如 NT AUTHORITY\LocalService、NT AUTHORITY\NetworkService 或 NT AUTHORITY\LocalSystem。
您可以使用一些解決方法。