如何修改SQL Server查询以返回含指定字符串对象的类型?
如何在SQL Server中查找含指定文本的对象并返回对象类型
当然可行!你只需要将sys.sql_modules与sys.objects系统视图关联起来,因为sys.objects中存储了所有数据库对象的类型元数据。下面是修改后的查询语句:
Declare @SearchStr varchar(256) = 'MyStringToSearchFor' SELECT OBJECT_NAME(m.object_id) AS ObjectName, OBJECT_SCHEMA_NAME(m.object_id) AS SchemaName, o.type_desc AS ObjectType, -- 返回可读性强的对象类型描述 m.definition FROM sys.sql_modules m JOIN sys.objects o ON m.object_id = o.object_id WHERE m.definition LIKE '%'+@SearchStr+'%' -- 可选:如果需要过滤特定类型的对象,可添加以下条件 -- AND o.type IN ('P', 'V', 'FN', 'IF', 'TF', 'TR')
关键细节说明:
o.type_desc会返回直观的对象类型名称,比如SQL_STORED_PROCEDURE(存储过程)、VIEW(视图)、SQL_SCALAR_FUNCTION(标量函数)、SQL_TRIGGER(触发器)等。- 如果你偏好使用缩写类型标识,可以替换为
o.type,对应的缩写含义:P:存储过程V:视图FN:标量函数IF:内联表值函数TF:表值函数TR:触发器
- 可选的
AND o.type IN (...)条件可以帮你精准筛选目标对象类型,避免返回系统对象或其他无关对象。
这个查询会清晰返回包含指定文本的对象名称、所属架构、对象类型以及完整定义,完全满足你的需求。
内容的提问来源于stack exchange,提问作者Willy
相关产品推荐
相关产品推荐

