Sql 如何查找SP引用
我想知道是否在任何地方引用了一个SP。目前我正在使用SP_进行检查 是否有其他方法检查此…?尝试:Sql 如何查找SP引用,sql,sql-server,sql-server-2005,tsql,Sql,Sql Server,Sql Server 2005,Tsql,我想知道是否在任何地方引用了一个SP。目前我正在使用SP_进行检查 是否有其他方法检查此…?尝试: SELECT OBJECT_NAME(m.object_id), m.* FROM SYS.SQL_MODULES m WHERE m.definition LIKE N'%my_sp_name%' 请注意,SYSCOMMENTS和INFORMATION_SCHEMA.ROUTINES有NVARCH4000列。所以如果我的名字用在3998位置,就找不到了。SYSCOMMENTS确实有多行,
SELECT OBJECT_NAME(m.object_id), m.*
FROM SYS.SQL_MODULES m
WHERE m.definition LIKE N'%my_sp_name%'
请注意,SYSCOMMENTS和INFORMATION_SCHEMA.ROUTINES有NVARCH4000列。所以如果我的名字用在3998位置,就找不到了。SYSCOMMENTS确实有多行,但例程会截断
参考资料:试试:
SELECT OBJECT_NAME(m.object_id), m.*
FROM SYS.SQL_MODULES m
WHERE m.definition LIKE N'%my_sp_name%'
请注意,SYSCOMMENTS和INFORMATION_SCHEMA.ROUTINES有NVARCH4000列。所以如果我的名字用在3998位置,就找不到了。SYSCOMMENTS确实有多行,但例程会截断
参考:如果您的依赖关系被破坏,我现在想确定的唯一方法是导出一个包含所有存储过程定义的SQL文件,然后使用您最喜欢的源代码编辑器在.SQL文件中搜索依赖关系。如果您的依赖关系被破坏,我现在认为唯一有信心的方法是导出一个包含所有存储过程定义的SQL文件,然后使用您最喜欢的源代码编辑器在.SQL文件中搜索依赖项。我编写此查询是为了搜索代码对象,其中包括过程、函数、触发器、视图、,以及在sys.sql_模块中为所选字符串存放的任何其他内容,无论是表、列、注释还是存储过程名称。我可以合理地确定,这将解释字符串被分割到不同数据页的可能性 返回的列包括: 拥有模式 对象名 对象类型符合sys.objects中的类型描述 以字节为单位的代码长度有时有助于了解代码的大小 包含字符串的实际代码 这将仅列出存在字符串的对象。如果搜索,比如Declare,可能会得到数据库中的每个过程和函数。它也不会评估字符串的使用方式。如果您的过程名称仅出现在另一个过程的注释中,则将列出该过程 简言之,这是一个起点。它将列出您的字符串所在的位置;然后,您必须进入并审查每个案例,以确定如何使用它
DECLARE @SearchText varchar(100)
SET @SearchText = 'YourTextHere'
SELECT
schema_name(ob.schema_id) SchemaName
,ob.name
,ob.type_desc
,len(mo.definition) CodeLength
,mo.definition
from sys.sql_modules mo
inner join .sys.objects ob
on ob.object_id = mo.object_id
where mo.definition like '%' + @SearchText + '%'
order by
case schema_name(ob.schema_id)
when 'dbo' then 'A'
else 'B' + str(ob.schema_id, 10)
end
,ob.type_desc
,ob.name
我编写此查询是为了搜索代码对象,其中包括过程、函数、触发器、视图,以及在sys.sql_模块中为所选字符串(无论是表、列、注释还是存储过程名称)而驻留的任何其他对象。我可以合理地确定,这将解释字符串被分割到不同数据页的可能性 返回的列包括: 拥有模式 对象名 对象类型符合sys.objects中的类型描述 以字节为单位的代码长度有时有助于了解代码的大小 包含字符串的实际代码 这将仅列出存在字符串的对象。如果搜索,比如Declare,可能会得到数据库中的每个过程和函数。它也不会评估字符串的使用方式。如果您的过程名称仅出现在另一个过程的注释中,则将列出该过程 简言之,这是一个起点。它将列出您的字符串所在的位置;然后,您必须进入并审查每个案例,以确定如何使用它
DECLARE @SearchText varchar(100)
SET @SearchText = 'YourTextHere'
SELECT
schema_name(ob.schema_id) SchemaName
,ob.name
,ob.type_desc
,len(mo.definition) CodeLength
,mo.definition
from sys.sql_modules mo
inner join .sys.objects ob
on ob.object_id = mo.object_id
where mo.definition like '%' + @SearchText + '%'
order by
case schema_name(ob.schema_id)
when 'dbo' then 'A'
else 'B' + str(ob.schema_id, 10)
end
,ob.type_desc
,ob.name