Sql-Server
我可以檢索特定使用者擁有的所有數據庫對象嗎?
我們有一個使用者要離開,我需要知道他擁有的每個數據庫對象。是否有可以提供此資訊的查詢?
這應該可以為您提供所需的內容:
;with objects_cte as ( select o.name, o.type_desc, case when o.principal_id is null then s.principal_id else o.principal_id end as principal_id from sys.objects o inner join sys.schemas s on o.schema_id = s.schema_id where o.is_ms_shipped = 0 and o.type in ('U', 'FN', 'FS', 'FT', 'IF', 'P', 'PC', 'TA', 'TF', 'TR', 'V') ) select cte.name, cte.type_desc, dp.name from objects_cte cte inner join sys.database_principals dp on cte.principal_id = dp.principal_id where dp.name = 'YourUser';
這將獲得您的特定使用者擁有的對象(
'YourUser'
當然可以替代)。此查詢提取的對像類型有:
- FN = SQL 標量函式
- FS = 彙編 (CLR) 標量函式
- FT = 彙編 (CLR) 表值函式
- IF = SQL 內聯表值函式
- P = SQL 儲存過程
- PC = 裝配 (CLR) 儲存過程
- TA = 裝配 (CLR) DML 觸發器
- TF = SQL 表值函式
- TR = SQL DML 觸發器
- U = 表(使用者定義)
- V = 查看