我有一個數據庫,其中有表,過程,視圖和觸發器列表。 但我想要一個查詢來獲得包括引用父表的子表的所有依賴關係。如何在sql server中查找表的所有依賴關係
回答
以下是方法可以檢查depedencies
方法1:使用sp_depends可
sp_depends 'dbo.First'
GO
方法2:使用INFORMATION_SCHEMA.ROUTINES
SELECT *
FROM information_schema.routines ISR
WHERE CHARINDEX('dbo.First', ISR.ROUTINE_DEFINITION) > 0
GO
方法3:使用DMV sys.dm_sql_referencing_entities
SELECT referencing_schema_name, referencing_entity_name,
referencing_id, referencing_class_desc, is_caller_dependent
FROM sys.dm_sql_referencing_entities ('dbo.First', 'OBJECT');
GO
查詢sysdepends表。
Select
distinct
schema_name(dependentObject.uid) as schema,
dependentObject.*
from
sysdepends d
inner join sysobjects o on d.id = o.id
inner join sysobjects dependentObject on d.depid = dependentObject.id
where o.name = 'TableName'
看只是景色/功能/觸發器/按名稱引用對象(或任何文本)程序的方法是:
select
distinct schema_name(so.uid) + '.' + so.name
from
syscomments sc
inner join sysobjects so on sc.id = so.id
where sc.text like '%Name%'
在SQL Server 2008中有兩個新動態管理功能引入了跟蹤對象依賴性:sys.dm_sql_referenced_entities和sys.dm_sql_referencing_entities:
1 /返回引用給定實體實體:
SELECT
referencing_schema_name, referencing_entity_name,
referencing_class_desc, is_caller_dependent
FROM sys.dm_sql_referencing_entities ('<TableName>', 'OBJECT')
2 /返回由一個對象引用的實體:
SELECT
referenced_schema_name, referenced_entity_name, referenced_minor_name,
referenced_class_desc, is_caller_dependent, is_ambiguous
FROM sys.dm_sql_referenced_entities ('<StoredProcedureName>', 'OBJECT');
或者,你可以使用sp_depends將:
EXEC sp_depends '<TableName>'
另一種選擇是使用一個非常有用的來自Red Gate的工具叫做SQL Dependency Tracker。
這是正確的答案。 'sp_depends'在其文檔中被標記爲已棄用。 –
感謝引用和引用的依賴關係變體。 – Jaans
方法1:使用sp_depends將
sp_depends 'dbo.First'
GO
方法2:使用sys.procedures存儲過程的
select Name from sys.procedures where OBJECT_DEFINITION(OBJECT_ID) like '%Any Keyword Name%'
'%其中一個關鍵字名稱%' 是你正在尋找
搜索關鍵字方法3:使用sys.views查看視圖
select Name from sys.views where OBJECT_DEFINITION(OBJECT_ID) like '%Any Keyword Name%'
「%的任何關鍵字名稱%」是你正在尋找
'sp_depends'在其文檔中標記爲已棄用。 @Maihai Bejenariu的答案是更好的面向未來的答案。 –
sp_depends也會產生非常不準確的結果.. – Jack0fshad0ws
SELECT referencing_schema_name, referencing_entity_name,
case when is_caller_dependent=0 then 'NO' ELSE 'Yes'
END AS is_caller_dependent FROM sys.dm_sql_referencing_entities ('Tablename', 'OBJECT');
您可以使用名爲高級的SQL Server依賴免費的工具 http://advancedsqlserverdependencies.codeplex.com/
它支持所有的數據庫對象(表,視圖等搜索關鍵字。)並且可以在多個數據庫中找到依賴關係(在同義詞的情況下)。
我編寫了下面的代碼,列出了找到給定關鍵字的所有對象。從形式上講,它不是一個真正的「依賴」搜索,但它有助於定位在存儲過程,視圖,觸發器和函數中使用關鍵字的位置。如果您使用動態SQL,這很有用。
select name, type_desc,create_date,modify_date from sys.all_objects o inner join sys.all_sql_modules m on m.object_id = o.object_id where definition like '%tableName %'
找到所有外鍵
SELECT src.name, srcCol.name, dst.name, dstCol.name
FROM sys.foreign_key_columns fk
INNER JOIN sys.columns srcCol ON fk.parent_column_id = srcCol.[column_id]
AND fk.parent_object_id = srcCol.[object_id]
INNER JOIN sys.tables src ON src.[object_id] = fk.parent_object_id
INNER JOIN sys.tables dst ON dst.[object_id] = fk.[referenced_object_id]
INNER JOIN sys.columns dstCol ON fk.referenced_column_id = dstCol.[column_id]
AND fk.[referenced_object_id] = dstCol.[object_id]
非常感謝你,它的作用像一個魅力 –
這個問題是舊的,但想到我會在這裏加..關於不同的利弊選擇https://www.simple-talk.com/sql/t-sql-programming/dependencies-and-references-in-sql-server/會談,並提供存儲過程(It_Depends)產生樹類似於SSMS的依賴關係的結果
除了其他答案(sp_depends系統存儲過程,SQL Server動態管理函數)中介紹的方法之外,還可以查看SSMS之間的SQL Server對象之間的依賴關係。
您可以使用SSMS的View Dependencies option。從對象資源管理器窗格中,右鍵單擊該對象並從上下文菜單中選擇視圖相依選項
我自己更喜歡被稱爲ApexSQL Search第三方依賴瀏覽器。它是一個免費的插件,集成到SSMS和Visual Studio中,用於SQL對象和數據文本搜索,擴展屬性管理,安全對象重命名和關係可視化。
- 1. 查找所有函數依賴關係
- 2. 如何查找數據庫表的所有依賴關係?
- 3. 在SQL Server中查找特定表所依賴的表格
- 4. 如何查找SQL Server 2012中數據庫表之間的依賴關係
- 5. SQL Server - 查看所有外鍵依賴關係
- 6. SQL Server依賴關係
- 7. 查找SQL Server 2005中的依賴關係
- 8. 如何查找應用程序的所有依賴關係?
- 9. 查找存儲過程列表的所有依賴關係
- 10. 在sql數據庫中查找表之間的依賴關係
- 11. SQL SERVER中的外部依賴關係
- 12. 查找DISTINCT缺少SQL依賴關係
- 13. 查找dll依賴關係
- 14. 查找AAR依賴關係
- 15. 查找列依賴關係
- 16. 查找SQL Server服務器數據類型的依賴關係
- 17. 查找YouTube依賴關係
- 18. SQL查詢獲取所需的DLL的所有依賴關係
- 19. 查找Java類中的所有依賴關係
- 20. 查找verilog中的所有依賴關係編譯
- 21. 我該如何檢查sql server的'views'依賴關係
- 22. 查找SQL Server 2008計算列依賴關係
- 23. 如何找出SQL中表的依賴關係
- 24. 在JAR中查找依賴關係
- 25. 如何在mysql中查找表依賴關係
- 26. 查找系統的依賴關係
- 27. 如何在sql server 2000和asp.net 2.0中的表上創建sql依賴關係?
- 28. 查找單個類的所有依賴關係
- 29. SQL中的依賴關係
- 30. SQL Server列約束和依賴關係
請指定這篇文章的來源,馬拉先生:http://blog.sqlauthority.com/2010/02/04/sql-server-get-the-list-of-object-dependencies-sp_depends-and-information_schema -routines-and-sys-dm_sql_referencing_entities/ – user3104183
選項3是更好的選擇,因爲'sp_depends'在它的文檔中被標記爲不建議使用。 –
重新創建對象時,sp_depends返回錯誤結果 – Juozas