Den givna lösningen täcker inte var behörigheten ges mot schemat eller själva databasen, som ger behörigheter mot tabellerna också. Detta kommer att ge dig de situationerna också. Du kan använda en WHERE-sats mot permission_name för att begränsa till bara DELETE.
SELECT
class_desc
, CASE WHEN class = 0 THEN DB_NAME()
WHEN class = 1 THEN OBJECT_NAME(major_id)
WHEN class = 3 THEN SCHEMA_NAME(major_id) END [Securable]
, USER_NAME(grantee_principal_id) [User]
, permission_name
, state_desc
FROM sys.database_permissions
Dessutom skulle db_datawriter behöva kontrolleras för medlemskap eftersom det ger implicita INSERT-, UPDATE- och DELETE-rättigheter, vilket innebär att du inte kommer att se det visas i behörighets-DMV:erna eller deras derivator.