我们想在SQL server里面查询一个对象的存储过程可以在sysobjects表里面查询。SQL Server中的表、视图、存储过程等数据库对象信息都记录在系统表“sysobjects”中。因此,可以通过查询“sysobjects”表,显示当前数据库中的视图,系统表,用户表以及存储过程。
select * from sysobject where type='V' and type ='S' and type ='U' and type ='P'
这里V,S,U,P代表什么可以拉到最下面看表结构里面的内容。
根据存储过程名字获取对应的存储过程内容:
SELECT distinct b.name
from sysobjects a, syscomments b
where a.id = b.id and
b.xtype = 'p'
and a.text like '%xxx%' --xxx为需要查询得内容
order by name;
或者用下面的系统视图查询:
SELECT TOP 10 ir.SPECIFIC_NAME, ir.CREATED, ir.LAST_ALTERED
FROM INFORMATION_SCHEMA.ROUTINES ir
ORDER BY ir.LAST_ALTERED DESC
【栗子】:
按这个查询查询出%BOTO%的结果是在OBJECT里面:
然后查询某一条存储过程具体内容:
sp_helptext [ @objname = ] 'name'
到这步我通常就会把这些东西都复制下来,放到notepad++里面,然后搜对应BOTO字段的具体过程。
下面是sysobjects,sys.syscomments两个表的结构:
sysobjects:
在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。只有在 tempdb 内,每个临时对象才在该表中占一行。
sys.syscomments:
包含数据库中每个视图、规则、默认值、触发器、CHECK 约束、DEFAULT 约束和存储过程的项。text 列包含原始的 SQL 定义语句。