SQL Server 2005中是否有任何查询返回特定数据库中存储过程列表以及数据库名称,其对象在存储中被使用过程
答案 0 :(得分:0)
在SQL Server 2005中可靠地执行此操作并不是一件简单的事情。您可能希望查看商业产品,例如ApexSQL Clean或SQL Dependency Tracker。
在SQL Server 2008中,您可以尝试使用sys.sql_expression_dependencies动态管理视图。例如,
select
quotename(s.name) + N'.' + quotename(o.name) as ProcedureName,
ed.referenced_server_name,
ed.referenced_database_name,
ed.referenced_schema_name,
ed.referenced_entity_name
from sys.sql_expression_dependencies ed
inner join sys.objects o on o.object_id = ed.referencing_id
inner join sys.schemas s on s.schema_id = o.schema_id
where
o.type = 'P'
希望这有帮助,
里斯
答案 1 :(得分:0)
这是获取所有程序名称的方法:
select *
from DatabaseName.information_schema.routines
where routine_type = 'PROCEDURE'
我现在要检查,是否有办法检查他们的代码是否有表名。
答案 2 :(得分:0)
您可以使用此查询
它将显示所有依赖关系甚至列
SELECT
--SP, View, or Function
ReferencingName = o.name,
ReferencingType = o.type_desc,
--Referenced Field
ref.referenced_database_name, --will be null if the DB is not explicitly called out
ref.referenced_schema_name, --will be null or blank if the DB is not explicitly called out
ref.referenced_entity_name,
ref.referenced_minor_name
FROM sys.objects AS o
cross apply sys.dm_sql_referenced_entities('dbo.' + o.name, 'Object') ref
where o.type = 'p'
-- for other database object types use below line
-- o.type in ('FN','IF','V','P','TF')
答案 3 :(得分:0)
适用于单个数据库
select *
from information_schema.routines
where routine_type = 'PROCEDURE'