Sql-Server-2012
在工作組內連接時,sys.login_token 的查詢不包括特定的 windows 組
我有兩個對應於兩個 Windows 組的 SQL Server 登錄名:
MachineName\MyAppAmdin MachineName\MyAppUser
我用
select principal_id, name, [type], usage from sys.login_token where principal_id > 0
檢查目前使用者是否是這些 Windows 組中的任何一個的成員。
當機器在域下時,它將列出
+--------------+---------------------------------+---------------+---------------+ | principal_id | name | type | usage | +--------------+---------------------------------+---------------+---------------+ | 2 | public | SERVER ROLE | GRANT OR DENY | | 3 | sysadmin | SERVER ROLE | GRANT OR DENY | | 260 | MachineName\SQL Server Services | WINDOWS GROUP | GRANT OR DENY | | 309 | MachineName\MyAppUser | WINDOWS GROUP | GRANT OR DENY | | 325 | MachineName\MyAppAmdin | WINDOWS GROUP | GRANT OR DENY | +--------------+---------------------------------+---------------+---------------+
正如預期的那樣。
但是,當我嘗試另一台工作組下的機器時,它只列出
+--------------+---------------------------------+---------------+---------------+ | principal_id | name | type | usage | +--------------+---------------------------------+---------------+---------------+ | 2 | public | SERVER ROLE | GRANT OR DENY | | 3 | sysadmin | SERVER ROLE | GRANT OR DENY | | 260 | MachineName\SQL Server Services | WINDOWS GROUP | GRANT OR DENY | +--------------+---------------------------------+---------------+---------------+
甚至該帳戶實際上也是
MyAppUser
or的成員MyAppAdmin
。好吧,也許還有其他我沒有註意到的因素,但到目前為止,工作組與域是我所知道的唯一區別。
它應該以這種方式工作還是我出錯了?
在我刪除 SQL Server 中的登錄名和關聯使用者然後將它們重新添加回來後,問題就解決了。不知道出了什麼問題,但可能會遇到同樣問題的人的記錄。