DENY 伺服器權限 (Transact-SQL)
拒絕伺服器的權限。
適用於:SQL Server (SQL Server 2008 至目前版本)。 |
語法
DENY permission [ ,...n ]
TO <grantee_principal> [ ,...n ]
[ CASCADE ]
[ AS <grantor_principal> ]
<grantee_principal> ::= SQL_Server_login
| SQL_Server_login_mapped_to_Windows_login
| SQL_Server_login_mapped_to_Windows_group
| SQL_Server_login_mapped_to_certificate
| SQL_Server_login_mapped_to_asymmetric_key
| server_role
<grantor_principal> ::= SQL_Server_login
| SQL_Server_login_mapped_to_Windows_login
| SQL_Server_login_mapped_to_Windows_group
| SQL_Server_login_mapped_to_certificate
| SQL_Server_login_mapped_to_asymmetric_key
| server_role
引數
permission
指定可以拒絕的伺服器權限。 如需權限清單,請參閱這個主題稍後的「備註」一節。CASCADE
指出目前受到拒絕的權限,也為這個主體曾授與此權限的其他主體所拒絕。TO <server_principal>
指定要拒絕其權限的主體。AS <grantor_principal>
指定主體,執行這項查詢的主體會從這個主體衍生權限來拒絕權限。SQL_Server_login
指定 SQL Server 登入。SQL_Server_login_mapped_to_Windows_login
指定對應至 Windows 登入的 SQL Server 登入。SQL_Server_login_mapped_to_Windows_group
指定對應至 Windows 群組的 SQL Server 登入。SQL_Server_login_mapped_to_certificate
指定對應至憑證的 SQL Server 登入。SQL_Server_login_mapped_to_asymmetric_key
指定對應至非對稱金鑰的 SQL Server 登入。server_role
指定伺服器角色。
備註
只有在目前資料庫是 master 的情況下,才能夠拒絕伺服器範圍的權限。
您可以在 sys.server_permissions 目錄檢視中檢視有關伺服器權限的資訊,在 sys.server_principals 目錄檢視中檢視有關伺服器主體的資訊。 您可以在 sys.server_role_members 目錄檢視中檢視有關伺服器角色成員資格的資訊。
伺服器是最高層級的權限階層。 下表所列的是可以拒絕之最特定且最有限的伺服器權限。
伺服器權限 |
伺服器權限所隱含 |
---|---|
ADMINISTER BULK OPERATIONS |
CONTROL SERVER |
ALTER ANY AVAILABILITY GROUP 適用於:SQL Server (SQL Server 2012 至目前版本)。 |
CONTROL SERVER |
ALTER ANY CONNECTION |
CONTROL SERVER |
ALTER ANY CREDENTIAL |
CONTROL SERVER |
ALTER ANY DATABASE |
CONTROL SERVER |
ALTER ANY ENDPOINT |
CONTROL SERVER |
ALTER ANY EVENT NOTIFICATION |
CONTROL SERVER |
ALTER ANY EVENT SESSION |
CONTROL SERVER |
ALTER ANY LINKED SERVER |
CONTROL SERVER |
ALTER ANY LOGIN |
CONTROL SERVER |
ALTER ANY SERVER AUDIT |
CONTROL SERVER |
ALTER ANY SERVER ROLE 適用於:SQL Server (SQL Server 2012 至目前版本)。 |
CONTROL SERVER |
ALTER RESOURCES |
CONTROL SERVER |
ALTER SERVER STATE |
CONTROL SERVER |
ALTER SETTINGS |
CONTROL SERVER |
ALTER TRACE |
CONTROL SERVER |
AUTHENTICATE SERVER |
CONTROL SERVER |
CONNECT ANY DATABASE 適用於:SQL Server (SQL Server 2014 至目前版本)。 |
CONTROL SERVER |
CONNECT SQL |
CONTROL SERVER |
CONTROL SERVER |
CONTROL SERVER |
CREATE ANY DATABASE |
ALTER ANY DATABASE |
CREATE AVAILABILITY GROUP 適用於:SQL Server (SQL Server 2012 至目前版本)。 |
ALTER ANY AVAILABILITY GROUP |
CREATE DDL EVENT NOTIFICATION |
ALTER ANY EVENT NOTIFICATION |
CREATE ENDPOINT |
ALTER ANY ENDPOINT |
CREATE SERVER ROLE 適用於:SQL Server (SQL Server 2012 至目前版本)。 |
ALTER ANY SERVER ROLE |
CREATE TRACE EVENT NOTIFICATION |
ALTER ANY EVENT NOTIFICATION |
EXTERNAL ACCESS ASSEMBLY |
CONTROL SERVER |
IMPERSONATE ANY LOGIN 適用於:SQL Server (SQL Server 2014 至目前版本)。 |
CONTROL SERVER |
SELECT ALL USER SECURABLES 適用於:SQL Server (SQL Server 2014 至目前版本)。 |
CONTROL SERVER |
SHUTDOWN |
CONTROL SERVER |
UNSAFE ASSEMBLY |
CONTROL SERVER |
VIEW ANY DATABASE |
VIEW ANY DEFINITION |
VIEW ANY DEFINITION |
CONTROL SERVER |
VIEW SERVER STATE |
ALTER SERVER STATE |
備註
SQL Server 2014 中已加入下列三個伺服器權限。
CONNECT ANY DATABASE 權限
將 CONNECT ANY DATABASE 授與必須連接到目前存在之所有資料庫與未來可能建立之新資料庫的登入。 不要在任何資料庫中授與超出連接的任何權限。 與 SELECT ALL USER SECURABLES 或 VIEW SERVER STATE 結合可讓稽核程序檢視 SQL Server 執行個體的所有資料或所有資料庫狀態。IMPERSONATE ANY LOGIN 權限
授與此權限時,可讓中間層程序在連接到資料庫時模擬連接的用戶端帳戶。 拒絕此權限時,高權限登入可能遭到封鎖,而無法模擬其他登入。 例如,具有 CONTROL SERVER 權限的登入可能遭到封鎖,而無法模擬其他登入。SELECT ALL USER SECURABLES 權限
授與此權限時,像是稽核者這類登入就可以檢視使用者可連接之所有資料庫中的資料。 拒絕此權限時,可防止存取不在 sys 結構描述中的物件。
權限
需要安全性實體的 CONTROL SERVER 權限或擁有權。 如果使用 AS 子句,指定的主體必須擁有要拒絕其權限的安全性實體。
範例
A.對 SQL Server 登入及已對其授與權限的主體,拒絕 CONNECT SQL 權限
下列範例會對 SQL Server 登入 Annika 及她已對其授與權限的主體,拒絕 CONNECT SQL 權限。
USE master;
DENY CONNECT SQL TO Annika CASCADE;
GO
B.使用 AS 選項,對 SQL Server 登入拒絕 CREATE ENDPOINT 權限
下列範例會對使用者 ArifS 拒絕 CREATE ENDPOINT 權限。 這個範例利用 AS 選項來指定 MandarP 作為負責執行的主體從其衍生權限,以執行這項指定作業的主體。
USE master;
DENY CREATE ENDPOINT TO ArifS AS MandarP;
GO
請參閱
參考
sys.fn_builtin_permissions (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)