1-- 查找包含特定关键词的最近执行语句,用于排查 IDENTITY_INSERT 相关操作
2SELECT TOP 20
3 qt.text AS sql_text,
4 qs.execution_count,
5 qs.last_execution_time,
6 qs.total_elapsed_time,
7 qs.total_logical_reads
8FROM sys.dm_exec_query_stats qs
9CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
10WHERE qt.text LIKE '%zhangsan%'
11 OR qt.text LIKE '%IDENTITY_INSERT%'
12ORDER BY qs.last_execution_time DESC;
13
14-- 专门查找 ALTER 语句,用于确认是否有实际的表结构修改操作
15SELECT TOP 10
16 qt.text AS sql_text,
17 qs.last_execution_time
18FROM sys.dm_exec_query_stats qs
19CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
20WHERE qt.text LIKE '%ALTER%'
21 AND qt.text LIKE '%zhangsan%'
22ORDER BY qs.last_execution_time DESC;
23
24-- 查看用户所属的数据库角色,了解用户通过角色继承了哪些权限
25SELECT
26 p.name AS principal_name,
27 p.type_desc AS principal_type,
28 r.name AS role_name
29FROM sys.database_principals p
30LEFT JOIN sys.database_role_members rm ON p.principal_id = rm.member_principal_id
31LEFT JOIN sys.database_principals r ON rm.role_principal_id = r.principal_id
32WHERE p.name = 'LUCIFER';
33
34-- 查看用户直接被授予的对象级权限,显示用户对特定对象(表、视图等)的权限
35SELECT
36 p.permission_name,
37 p.state_desc,
38 s.name AS schema_name,
39 o.name AS object_name
40FROM sys.database_permissions p
41LEFT JOIN sys.objects o ON p.major_id = o.object_id
42LEFT JOIN sys.schemas s ON o.schema_id = s.schema_id
43WHERE p.grantee_principal_id = USER_ID('LUCIFER')
44ORDER BY s.name, o.name;
45
46-- 查看用户的所有有效权限(包括通过角色继承的),这是最全面的权限检查,包括直接权限和角色权限
47SELECT
48 p.permission_name,
49 p.state_desc,
50 p.class_desc,
51 ISNULL(s.name, '') AS schema_name,
52 ISNULL(o.name, '') AS object_name
53FROM sys.database_permissions p
54LEFT JOIN sys.objects o ON p.major_id = o.object_id
55LEFT JOIN sys.schemas s ON o.schema_id = s.schema_id
56WHERE p.grantee_principal_id = USER_ID('LUCIFER')
57 OR p.grantee_principal_id IN (
58 SELECT role_principal_id
59 FROM sys.database_role_members
60 WHERE member_principal_id = USER_ID('LUCIFER')
61 )
62ORDER BY p.permission_name, s.name, o.name;