Ich muss einen Datenbankbenutzer testen, um festzustellen, ob dieser Benutzer berechtigt ist, Tabellen in der Datenbank zu ändern. Ich brauche zwei Benutzer: einen, der die Datenbanktabellenstruktur ändern kann und einen, der die Rollen db_reader
und db_writer
hat. Ich fand diese Abfrage im Web alle Berechtigungen für den aktuellen Benutzer zeigt:Wie testen Sie auf Benutzerberechtigungen, die Tabellen auf SQL Server ändern können?
SELECT * FROM fn_my_permissions (NULL, 'DATABASE')
Hier sind die Ergebnisse für einen readonly
Benutzer mit Rollen db_datareader
und db_datawriter
:
entity_name subentity_name permission_name
----------- -------------- ---------------
database CONNECT
database SELECT
database INSERT
database UPDATE
database DELETE
Hier sind die Ergebnisse für sa
:
Returns:
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
Welche Abfrage würde ich verwenden, um festzustellen, dass der Benutzer schreibgeschützt ist und daher nicht weiter vorgehen kann?
Etwas stimmt hier nicht. Ein schreibgeschützter Benutzer sollte keine INSERT-, UPDATE- und DELETE-Berechtigungen haben. –
Ich stimme @RobertHarvey zu. Wenn der Benutzer schreibgeschützt ist, hat er nicht die Rolle db_writer. –
Können Sie die Abfrage auch posten? –