Мне нужно проверить пользователя базы данных, чтобы узнать, есть ли у этого пользователя права изменять таблицы в базе данных.Мне нужны два пользователя: один, который может изменить структуру таблицы базы данных, а другой, имеющий роли db_reader
и db_writer
.Я нашел этот запрос в Интернете, показывающий все разрешения для текущего пользователя:
SELECT * FROM fn_my_permissions (NULL, 'DATABASE')
Вот результаты для readonly
пользователя с ролями db_datareader
и db_datawriter
:
entity_name subentity_name permission_name
----------- -------------- ---------------
database CONNECT
database SELECT
database INSERT
database UPDATE
database DELETE
Вот результаты для sa
:
Возвраты:
entity_name subentity_name permission_name
----------- -------------- ---------------
database CREATE TABLE
database CREATE VIEW
database CREATE PROCEDURE
database CREATE FUNCTION
database CREATE RULE
database CREATE DEFAULT
database BACKUP DATABASE
database BACKUP LOG
database CREATE DATABASE
database CREATE TYPE
database CREATE ASSEMBLY
database CREATE XML SCHEMA COLLECTION
database CREATE SCHEMA
database CREATE SYNONYM
database CREATE AGGREGATE
database CREATE ROLE
database CREATE MESSAGE TYPE
database CREATE SERVICE
database CREATE CONTRACT
database CREATE REMOTE SERVICE BINDING
database CREATE ROUTE
database CREATE QUEUE
database CREATE SYMMETRIC KEY
database CREATE ASYMMETRIC KEY
database CREATE FULLTEXT CATALOG
database CREATE CERTIFICATE
database CREATE DATABASE DDL EVENT NOTIFICATION
database CONNECT
database CONNECT REPLICATION
database CHECKPOINT
database SUBSCRIBE QUERY NOTIFICATIONS
database AUTHENTICATE
database SHOWPLAN
database ALTER ANY USER
database ALTER ANY ROLE
database ALTER ANY APPLICATION ROLE
database ALTER ANY SCHEMA
database ALTER ANY ASSEMBLY
database ALTER ANY DATASPACE
database ALTER ANY MESSAGE TYPE
database ALTER ANY CONTRACT
database ALTER ANY SERVICE
database ALTER ANY REMOTE SERVICE BINDING
database ALTER ANY ROUTE
database ALTER ANY FULLTEXT CATALOG
database ALTER ANY SYMMETRIC KEY
database ALTER ANY ASYMMETRIC KEY
database ALTER ANY CERTIFICATE
database SELECT
database INSERT
database UPDATE
database DELETE
database REFERENCES
database EXECUTE
database ALTER ANY DATABASE DDL TRIGGER
database ALTER ANY DATABASE EVENT NOTIFICATION
database ALTER ANY DATABASE AUDIT
database VIEW DATABASE STATE
database VIEW DEFINITION
database TAKE OWNERSHIP
database ALTER
database CONTROL
Какой запрос я бы использовал, чтобы определить, что пользователь только для чтения и, следовательно, не может продолжать пересылку?