2015-01-21 55 views

回答

0

在SQL Server 2005中可靠地執行這不是一件簡單的事情。您可能需要查看商業產品,如ApexSQL CleanSQL 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' 

希望這有助於

里斯

+0

感謝您的回答,但此查詢引發此錯誤「無效的對象名'sys.sql_expression_dependencies'」 – 2015-01-21 11:05:32

+0

@HimanshGautam - 如果您執行'select serverproperty('ProductVersion')'你會得到什麼? – 2015-01-21 11:15:29

+0

我得到了「9.00.5266.00」 – 2015-01-21 11:49:26

0

,也就是如何讓所有的程序名稱:

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

我會立即檢查,如果有什麼辦法檢查他們的代碼表名稱。

+0

我正在尋找名單的數據庫正在使用的SP列表 – 2015-01-21 11:09:46

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

感謝您的答案,但此查詢拋出此錯誤「無效的對象名稱」sys.dm_sql_referenced_entities'「 – 2015-01-21 11:06:34

+0

您正在使用哪個版本的SQL服務器? – RezaRahmati 2015-01-21 11:19:17

+0

我正在使用SQL Server 2005 – 2015-01-21 11:57:14

0

作品單個數據庫

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