Permissions Poster SQL Server 2016 and SQLDB
Permissions Poster SQL Server 2016 and SQLDB
NOTES: • The CONTROL SERVER permission has all permissions on the instance of SQL Server or SQL Database.
• The CONTROL DATABASE permission has all permissions on the database.
• Permissions do not imply role memberships and role memberships do not grant permissions. (E.g. CONTROL SERVER does not imply
Permission Syntax membership in the sysadmin fixed server role. Membership in the db_owner role does not grant the CONTROL DATABASE permission.)
Most permission statements have the format :
However, it is sometimes possible to impersonate between roles and equivalent permissions.
AUTHORIZATION PERMISSION ON SECURABLE::NAME TO PRINCIPAL
• Most of the more granular permissions are included in more than one higher level scope permission. So permissions can be inherited
from more than one type of higher scope. CONTROL SERVER CONTROL DATABASE STATEMENTS: DROP DATABASE Connect and Authentication – Database Permissions Assembly Permissions
• Black, green, and purple arrows and boxes point to subordinate permissions that are included in the scope of higher a level permission.
CONTROL SERVER CONTROL ON DATABASE::<name> CONTROL ON USER::<name> CONTROL SERVER CONTROL ON DATABASE::<name> CONTROL ON ASSEMBLY::<name>
• Brown arrows and boxes indicate some of the statements that can use the permission.
CREATE ANY DATABASE CREATE DATABASE ** STATEMENTS: CREATE DATABASE, RESTORE DATABASE ** NOTE: CREATE DATABASE is a database level permission that can only be
• Permissions in black apply to both SQL Server 2016 and Azure SQL Database
ALTER ANY DATABASE ALTER ON DATABASE::<name> granted in the master database. For SQL Database use the dbmanager role.
• Permissions in red apply only to SQL Server 2016
• Permissions in blue apply only to Azure SQL Database
ALTER ANY APPLICATION ROLE – See Application Roles Permissions Chart
• The newest permissions are underlined VIEW DEFINITION ON DATABASE::<name> VIEW DEFINITION ON USER::<name> VIEW DEFINITION ON DATABASE::<name> VIEW DEFINITION ON ASSEMBLY::<name>
VIEW ANY DEFINITION VIEW ANY DEFINITION
ALTER ANY ASSEMBLY – See Assembly Permissions Chart
ALTER ANY ASYMMETRIC KEY – See Asymmetric Key Permissions Chart REFERENCES ON DATABASE::<name> REFERENCES ON ASSEMBLY::<name>
STATEMENTS:
Azure SQL Database Permissions ALTER ANY CERTIFICATE – See Certificate Permissions Chart
ALTER ANY COLUMN ENCRYPTION KEY
ALTER ANY DATABASE ALTER ON DATABASE::<name> IMPERSONATE ON USER::<name> EXECUTE AS ALTER ANY DATABASE ALTER ON DATABASE::<name> TAKE OWNERSHIP ON ASSEMBLY::<name>
Server Level Permissions for SQL Server ALTER ANY SYMMETRIC KEY – See Symmetric Key Permissions Chart
ALTER ON DATABASE::<name>
ALTER ANY USER – See Connect and Authentication – Database Permissions Chart
Top Level Server Permissions Database Role Permissions ALTER ANY EVENT NOTIFICATION ALTER ANY DATABASE EVENT NOTIFICATION Database scoped event notifications
CREATE AGGREGATE
sysadmin role
CREATE DEFAULT CONTROL SERVER CONTROL ON DATABASE::<name> CONTROL ON ROLE::<name>
STATEMENTS:
STATEMENTS:
CREATE FUNCTION CREATE DDL EVENT NOTIFICATION CREATE DATABASE DDL EVENT NOTIFICATION Database scoped DDL event notifications
CONTROL SERVER CREATE/ALTER/DROP server triggers
CREATE/ALTER/DROP server triggers
CREATE PROCEDURE
ADMINISTER BULK OPERATIONS bulkadmin role OPENROWSET(BULK…. CREATE QUEUE CREATE TRACE EVENT NOTIFICATION Event notifications on trace events
OPENROWSET(BULK …
ALTER ANY AVAILABILITY GROUP – See Availability Group Permissions CREATE RULE
VIEW ANY DEFINITION VIEW DEFINITION ON DATABASE::<name> VIEW DEFINITION ON ROLE::<name>
CREATE AVAILABILTY GROUP CREATE SYNONYM
ALTER ANY CONNECTION KILL CREATE TABLE
CREATE TYPE ALTER ON DATABASE::<name> TAKE OWNERSHIP ON ROLE::<name> Note: EVENT NOTIFICATION permissions also affect service
ALTER ANY CREDENTIAL CREATE/ALTER/DROP CREDENTIAL db_securityadmin role ALTER ANY DATABASE
processadmin role broker. See the service broker chart for more into.
ALTER ANY DATABASE – See Database Permission Charts dbcreator role CREATE VIEW
CREATE ANY DATABASE – See Top Level Database Permissions CREATE XML SCHEMA COLLECTION
ALTER ANY ROLE ALTER ON ROLE::<name>
ALTER ANY ENDPOINT – See Connect and Authentication
CREATE ENDPOINT – See Connect and Authentication STATEMENTS:
STATEMENTS:
ALTER ANY EVENT NOTIFICATION Server scoped event notifications ALTER DATABASE SCOPED CONFIGURATION
CREATE DDL EVENT NOTIFICATION
ALTER ANY DATABASE SCOPED CONFIGURATION ALTER ROLE <name> ADD MEMBER Service Broker Permissions (SQL Server only)
Server scoped DDL event notifications ALTER ANY MASK DROP ROLE
CREATE TRACE EVENT NOTIFICATION Event notifications on trace events AUTHENTICATE SERVER AUTHENTICATE Combined with TRUSTWORTHY allows delegation of authentication
CREATE ROLE CREATE ROLE
NOTES: Only members of the db_owner CONTROL SERVER CONTROL ON DATABASE::<name> CONTROL ON SERVICE::<name>
ALTER ANY EVENT SESSION Extended event sessions BACKUP DATABASE BACKUP DATABASE
fixed database role can add or remove
ALTER ANY LINKED SERVER setupadmin role sp_addlinkedserver BACKUP LOG db_backupoperator role BACKUP LOG
members from fixed database roles.
ALTER ANY LOGIN – See Connect and Authentication securityadmin role CHECKPOINT CHECKPOINT
ALTER ANY SERVER AUDIT CREATE/ALTER/DROP SERVER AUDIT CONNECT REPLICATION – See Connect and Authentication – Database Permissions Chart
and SERVER AUDIT SPECIFICATION VIEW ANY DEFINITION VIEW DEFINITION ON DATABASE::<name> VIEW DEFINITION ON SERVICE::<name>
ALTER ANY SERVER ROLE – See Server Role Permissions DELETE
CREATE SERVER ROLE – See Server Role Permissions SEND ON SERVICE::<name>
EXECUTE
ALTER RESOURCES (NA. Use diskadmin role instead.) STATEMENTS: TAKE OWNERSHIP ON SERVICE::<name>
public role
Object Permissions ALTER ANY DATABASE ALTER ON DATABASE::<name>
Server Permissions Database Permissions Schema Permissions Type Permissions
XML Schema Collection Permissions ALTER ANY REMOTE SERVICE BINDING ALTER ON REMOTE SERVICE BINDING::<name>
Connect and Authentication – Server Permissions db_ddladmin role
STATEMENTS:
CONTROL ON SERVER CONTROL ON DATABASE::<name> CONTROL ON SCHEMA ::<name> CONTROL ON OBJECT|TYPE|XML SCHEMA COLLECTION ::<name> Symmetric Key Permissions ALTER REMOTE SERVICE BINDING
CONTROL SERVER CONTROL ON LOGIN::<name>
DROP REMOTE SERVICE BINDING
CONTROL SERVER CONTROL ON DATABASE::<name> CONTROL ON SYMMETRIC KEY::<name>
db_datareader role CREATE REMOTE SERVICE BINDING CREATE REMOTE SERVICE BINDING
db_denydatareader role VIEW CHANGE TRACKING ON SCHEMA::<name> VIEW CHANGE TRACKING ON OBJECT::<name>
SELECT ON DATABASE::<name> SELECT ON SCHEMA::<name> SELECT ON OBJECT::<table |view name>
VIEW ANY DEFINITION VIEW DEFINITION ON LOGIN::<name> INSERT ON DATABASE::<name> INSERT ON SCHEMA::<name> INSERT ON OBJECT::< table |view name>
db_datawriter role
IMPERSONATE ON LOGIN::<name> STATEMENTS: UPDATE ON DATABASE::<name> UPDATE ON SCHEMA::<name> UPDATE ON OBJECT::< table |view name> VIEW DEFINITION ON DATABASE::<name> VIEW DEFINITION ON SYMMETRIC KEY::<name> CONTROL SERVER CONTROL ON DATABASE::<name> CONTROL ON CONTRACT::<name>
db_denydatawriter role VIEW ANY DEFINITION
ALTER ANY LOGIN ALTER ON LOGIN::<name> EXECUTE AS DELETE ON DATABASE::<name> DELETE ON SCHEMA::<name> DELETE ON OBJECT::< table |view name>
REFERENCES ON DATABASE::<name> REFERENCES ON SYMMETRIC KEY::<name>
EXECUTE ON DATABASE::<name> EXECUTE ON SCHEMA::<name> EXECUTE ON OBJECT|TYPE|XML SCHEMA COLLECTION::<name>
REFERENCES ON DATABASE::<name> REFERENCES ON SCHEMA::<name> REFERENCES ON OBJECT|TYPE|XML SCHEMA COLLECTION:<name> ALTER ANY DATABASE ALTER ON DATABASE::<name> TAKE OWNERSHIP ON SYMMETRIC KEY::<name>
securityadmin role STATEMENTS:
VIEW ANY DEFINITION VIEW DEFINITION ON DATABASE::<name> VIEW DEFINITION ON SCHEMA::<name> VIEW DEFINITION ON OBJECT|TYPE|XML SCHEMA COLLECTION::<name> VIEW ANY DEFINITION VIEW DEFINITION ON DATABASE::<name> VIEW DEFINITION ON CONTRACT::<name>
ALTER LOGIN, sp_addlinkedsrvlogin
TAKE OWNERSHIP ON DATABASE::<name> TAKE OWNERSHIP ON SCHEMA::<name> TAKE OWNERSHIP ON OBJECT|TYPE|XML SCHEMA COLLECTION::<name> REFERENCES ON DATABASE::<name> REFERENCES ON CONTRACT::<name>
DROP LOGIN ALTER ANY SYMMETRIC KEY ALTER ON SYMMETRIC KEY::<name>
VIEW ANY DATABASE RECEIVE ON OBJECT::<queue name> Note: OPEN SYMMETRIC KEY requires TAKE OWNERSHIP ON CONTRACT::<name>
CREATE LOGIN
SELECT ON OBJECT::<queue name> VIEW DEFINITION permission on the ALTER ANY DATABASE ALTER ON DATABASE::<name>
STATEMENTS:
ALTER ANY DATABASE ALTER ON DATABASE::<name> key (implied by any permission on the
ALTER SYMMETRIC KEY
CONNECT SQL ALTER ANY SCHEMA ALTER ON SCHEMA::<name> ALTER ON OBJECT|TYPE|XML SCHEMA COLLECTION::<name> key), and requires permission on the ALTER ANY CONTRACT ALTER ON CONTRACT::<name>
DROP SYMMETRIC KEY
CREATE SCHEMA CREATE SEQUENCE key encryption hierarchy. CREATE SYMMETRIC KEY STATEMENTS:
Notes: CREATE SYMMETRIC KEY
• The CREATE LOGIN statement creates a login and grants CONNECT SQL to that login. DROP CONTRACT
OBJECT permissions apply to the following database objects:
• Enabling a login (ALTER LOGIN <name> ENABLE) is not the same as granting CONNECT SQL permission. CREATE AGGREGATE CREATE CONTRACT CREATE CONTRACT
AGGREGATE
• To map a login to a credential, see ALTER ANY CREDENTIAL. CREATE DEFAULT
DEFAULT
• When contained databases are enabled, users can access SQL Server without a login. See database user CREATE FUNCTION
CONTROL SERVER CONTROL ON SERVER ROLE::<name> CONTROL SERVER CONTROL ON DATABASE::<name> CONTROL ON CERTIFICATE::<name> VIEW ANY DEFINITION VIEW DEFINITION ON DATABASE::<name> VIEW DEFINITION ON MESSAGE TYPE::<name>
CONTROL ON SEARCH PROPERTY LIST::<name>
CONTROL SERVER CONTROL ON DATABASE::<name> CONTROL ON FULLTEXT STOPLIST::<name> REFERENCES ON DATABASE::<name> REFERENCES ON MESSAGE TYPE::<name>
CONTROL ON FULLTEXT CATALOG::<name> TAKE OWNERSHIP ON MESSAGE TYPE::<name>
ALTER ANY DATABASE ALTER ON DATABASE::<name>
VIEW ANY DEFINITION VIEW DEFINITION ON SERVER ROLE::<name> VIEW ANY DEFINITION VIEW DEFINITION ON DATABASE::<name> VIEW DEFINITION ON CERTIFICATE::<name>
VIEW DEFINITION ON SEARCH PROPERTY LIST::<name> ALTER ANY MESSAGE TYPE ALTER ON MESSAGE TYPE::<name>
TAKE OWNERSHIP ON SERVER ROLE::<name> REFERENCES ON DATABASE::<name> REFERENCES ON CERTIFICATE::<name>
VIEW ANY DEFINITION VIEW DEFINITION ON DATABASE::<name> VIEW DEFINITION ON FULLTEXT STOPLIST::<name> STATEMENTS:
ALTER ANY SERVER ROLE ALTER ON SERVER ROLE::<name>
VIEW DEFINITION ON FULLTEXT CATALOG::<name> ALTER ANY DATABASE ALTER ON DATABASE::<name> TAKE OWNERSHIP ON CERTIFICATE::<name> ALTER MESSAGE TYPE
DROP MESSAGE TYPE
STATEMENTS: REFERENCES ON SEARCH PROPERTY LIST::<name> CREATE MESSAGE TYPE CREATE MESSAGE TYPE
ALTER SERVER ROLE <name> ADD MEMBER ALTER ANY CERTIFICATE ALTER ON CERTIFICATE::<name>
REFERENCES ON DATABASE::<name> REFERENCES ON FULLTEXT STOPLIST::<name> CREATE QUEUE
DROP SERVER ROLE REFERENCES ON FULLTEXT CATALOG::<name>
STATEMENTS:
CREATE SERVER ROLE CREATE SERVER ROLE
Note: ADD SIGNATURE requires ALTER CERTIFICATE
TAKE OWNERSHIP ON FULLTEXT CATALOG::<name> TAKE OWNERSHIP ON FULLTEXT STOPLIST::<name> TAKE OWNERSHIP ON SEARCH PROPERTY LIST::<name> CONTROL permission on the certificate, Notes:
NOTES: To add a member to a fixed server role, you must be a member of DROP CERTIFICATE
and requires ALTER permission on the • The user executing the CREATE CONTRACT statement must have REFERENCES permission on
that fixed server role, or be a member of the sysadmin fixed server role. object. CREATE CERTIFICATE CREATE CERTIFICATE all message types specified.
ALTER ANY DATABASE ALTER ON DATABASE::<name> • The user executing the CREATE SERVICE statement must have REFERENCES permission on
the queue and all contracts specified.
• To execute the CREATE or ALTER REMOTE SERVICE BINDING the user must have
ALTER ON SEARCH PROPERTY LIST::<name> impersonate permission for the principal specified in the statement.
Availability Group Permissions • When the CREATE or ALTER MESSAGE TYPE statement specifies a schema collection, the user
ALTER ANY FULLTEXT CATALOG ALTER ON FULLTEXT STOPLIST::<name> executing the statement must have REFERENCES permission on the schema collection
ALTER ON FULLTEXT CATALOG::<name> specified.
CONTROL SERVER CONTROL ON AVAILABILITY GROUP::<name> • See the ALTER ANY EVENT NOTIFICATION chart for more permissions related to Service