使用存儲過程中的信息是否有在SQL Server 2005中,與名稱的數據庫,其對象是沿着返回的特定數據庫的存儲過程的列表中的任何查詢在存儲過程中使用。查詢來獲取數據庫的SQL Server 2005中
回答
在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'
希望這有助於
里斯
,也就是如何讓所有的程序名稱:
select *
from DatabaseName.information_schema.routines
where routine_type = 'PROCEDURE'
我會立即檢查,如果有什麼辦法檢查他們的代碼表名稱。
我正在尋找名單的數據庫正在使用的SP列表 – 2015-01-21 11:09:46
您可以使用此查詢
,它會顯示所有的依賴甚至到了列
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')
感謝您的答案,但此查詢拋出此錯誤「無效的對象名稱」sys.dm_sql_referenced_entities'「 – 2015-01-21 11:06:34
您正在使用哪個版本的SQL服務器? – RezaRahmati 2015-01-21 11:19:17
我正在使用SQL Server 2005 – 2015-01-21 11:57:14
作品單個數據庫
select *
from information_schema.routines
where routine_type = 'PROCEDURE'
感謝您的回答,但此查詢引發此錯誤「無效的對象名'sys.sql_expression_dependencies'」 – 2015-01-21 11:05:32
@HimanshGautam - 如果您執行'select serverproperty('ProductVersion')'你會得到什麼? – 2015-01-21 11:15:29
我得到了「9.00.5266.00」 – 2015-01-21 11:49:26