SQL Server 2008 R2
查询某个表被那些存储过程用到:
select distinct object_name(id) from syscommentswhere id in (select object_id from sys.objects where type ='P')
and text like '%tablename%';
详解:
1,and text like '%update%'/ '%insert%'/ '%delete%'; -- 查找对应的更新,新增,删除表的过程;
2,SysComments(View):它记录了数据库中所有的对象,当然包括了存储过程,该表的text字段,记录了sql定义的脚本内容,如果是存储过程,则记录的存储过程脚本;
3,sys.objects :在数据库中创建的每个用户定义的架构范围内的对象在该表中均对应一行。
注意:sys.objects 不显示 DDL 触发器,因为它们不是架构范围内的对象。所有触发器(包括 DML 和 DDL)都位于sys.triggers 中。sys.triggers 支持用于各种触发器的混合作用域命名规则。
sys.objects使用例子,返回最近N天修改的对象
SELECT name AS object_name
,SCHEMA_NAME(schema_id) AS schema_name
,type_desc
,create_date
,modify_date
FROM sys.objects
WHERE modify_date > GETDATE() - <n_days>
ORDER BY modify_date;
4,对象类型。 可以是以下对象类型之一:
AF = 聚合函数 (CLR)
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = 日志
FN = 标量函数
FS = 程序集 (CLR) 标量函数
FT = 程序集 (CLR) 表值函数
IF = 内联表函数
IT = 内部表
P = 存储过程
PC = 程序集 (CLR) 存储过程
PK = PRIMARY KEY 约束(type 为 K)
RF = 复制筛选存储过程
S = 系统表
SN = 同义词
SQ = 服务队列
TA = 程序集 (CLR) DML 触发器
TF = 表函数
TR = SQL DML 触发器
TT = 表类型
U = 用户表
UQ = UNIQUE 约束(type 为 K)
V = 视图
X = 扩展存储过程
5
数据库中每个对像都有一个唯一的ID值,用Object_name(id)可以根据ID值得到对像的名称,object_id(name)可以根据对像名称得到对象的ID object_id()只能返回用户创建的对像的ID,像以sys开头的表都是系统表所以返回不了的