Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查询以获取SQL server 2005中存储过程使用的数据库的信息_Sql_Sql Server_Database_Sql Server 2005_Stored Procedures - Fatal编程技术网

查询以获取SQL server 2005中存储过程使用的数据库的信息

查询以获取SQL server 2005中存储过程使用的数据库的信息,sql,sql-server,database,sql-server-2005,stored-procedures,Sql,Sql Server,Database,Sql Server 2005,Stored Procedures,SQL server 2005中是否有任何查询返回特定数据库中存储过程的列表以及存储过程中使用其对象的数据库的名称。在SQL server 2005中可靠地执行此操作并非易事。您可能想看看商业产品,例如或 在SQLServer2008中,您可以尝试使用动态管理视图。比如说, select quotename(s.name) + N'.' + quotename(o.name) as ProcedureName, ed.referenced_server_name,

SQL server 2005中是否有任何查询返回特定数据库中存储过程的列表以及存储过程中使用其对象的数据库的名称。

在SQL server 2005中可靠地执行此操作并非易事。您可能想看看商业产品,例如或

在SQLServer2008中,您可以尝试使用动态管理视图。比如说,

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'
希望这有帮助


Rhys

这是获取所有过程名称的方法:

select * 
  from DatabaseName.information_schema.routines 
 where routine_type = 'PROCEDURE'
如果有任何方法可以检查表名的代码,我现在将进行检查。

您可以使用此查询

它将显示所有依赖项,甚至列

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')

适用于单个数据库

select * 
 from information_schema.routines 
 where routine_type = 'PROCEDURE'

感谢您的回答,但此查询会引发以下错误:“无效的对象名称'sys.sql\u expression\u dependencies'”@HimanshGautam-如果您执行
select serverproperty('ProductVersion')
您得到了什么?这是sql Server 2005,您用sql Server 2008标记了您的问题。sys.sql_expression_dependencies DMV(以及@RezaRahmati使用的sys.dm_sql_referenced_entities DMF)仅从sql Server 2008开始提供。对此我很抱歉,sql Server 2005中是否有任何解决方案?感谢您的回答,但此查询引发了以下错误:“无效对象名称'sys.dm_sql_referenced_entitified_'”您正在使用哪个版本的SQL server?我正在使用SQL server2005@HimanshGautam不幸的是,SQL 2005及更早版本中不存在此对象,请参阅本文的答案,以获取替代解决方案我正在查找SP列表使用的数据库名称