से 'निर्भरता ट्रैकर' सस्ता समाधान डेटा शब्दकोश तालिका sys.sql_dependencies जो है जहाँ से इस डेटा हो सकता है डेटा शब्दकोश से पूछताछ की। ओरेकल में डेटा कार्यक्षमता दृश्य है जिसमें समान कार्यक्षमता है जिसे DBA_DEPENDENCIES (प्लस समतुल्य USER_ और ALL_ दृश्य) कहा जाता है। अन्य डेटा डिक्शनरी टेबल (sys.tables/DBA_TABLES) आदि का उपयोग करके आप ऑब्जेक्ट निर्भरता रिपोर्ट जेनरेट कर सकते हैं।
आप विशेष रूप से उत्सुक आप एक पूरा वस्तु निर्भरता ग्राफ बनाने के लिए एक पुनरावर्ती पूछताछ (Oracle बंधन द्वारा या SQL सर्वर आम टेबल भाव) का उपयोग कर सकते महसूस कर रहे हैं।
sys.sql_dependencies पर एक पुनरावर्ती सीटीई का एक उदाहरण यहां दिया गया है। यह हर निर्भरता के लिए अपनी गहराई के साथ एक प्रविष्टि वापस कर देगा। प्रत्येक निर्भरता संबंध के लिए आइटम एक से अधिक बार संभवतः विभिन्न गहराई पर हो सकते हैं। मेरे पास DBA_DEPENDENCIES पर क्वेरी द्वारा कनेक्ट करने के लिए काम करने के लिए एक ओरेकल उदाहरण नहीं है, इसलिए संपादन विशेषाधिकार वाले किसी भी व्यक्ति और समय और विशेषज्ञता का जवाब इस उत्तर को एनोटेट या संपादित करने के लिए किया जाता है।
sys.sql_dependencies
के साथ भी नोट करें कि आप referenced_minor_id
से कॉलम संदर्भ प्राप्त कर सकते हैं। इसका उपयोग यह निर्धारित करने के लिए किया जा सकता है (उदाहरण के लिए) यह निर्धारित करने के लिए कि वास्तव में उपयोग किए जाने वाले कॉलम के साथ स्रोत से डीबी टेबल की प्रतियों के साथ एक स्टेजिंग क्षेत्र से ईटीएल स्पॉक्स में कौन से कॉलम वास्तव में उपयोग किए जाते थे।
with dep_cte as (
select o2.object_id as parent_id
,o2.name as parent_name
,o1.object_id as child_id
,o1.name as child_name
,d.referenced_minor_id
,1 as hierarchy_level
from sys.sql_dependencies d
join sys.objects o1
on o1.object_id = d.referenced_major_id
join sys.objects o2
on o2.object_id = d.object_id
where d.referenced_minor_id in (0,1)
and not exists
(select 1
from sys.sql_dependencies d2
where d2.referenced_major_id = d.object_id)
union all
select o2.object_id as parent_id
,o2.name as parent_name
,o1.object_id as child_id
,o1.name as child_name
,d.referenced_minor_id
,d2.hierarchy_level + 1 as hierarchy_level
from sys.sql_dependencies d
join sys.objects o1
on o1.object_id = d.referenced_major_id
join sys.objects o2
on o2.object_id = d.object_id
join dep_cte d2
on d.object_id = d2.child_id
where d.referenced_minor_id in (0,1)
)
select *
from dep_cte
order by hierarchy_level
मुझे यह समुदाय के लिए खोलने के लिए मिला है।क्या कोई चल रहा ओरेकल उदाहरण के लिए सुविधाजनक पहुंच वाले व्यक्ति को यहां रिकर्सिव क्वेरी द्वारा कनेक्ट किया जा सकता है? ध्यान दें कि यह SQL-server विशिष्ट है और प्रश्न मालिक ने तब से यह स्पष्ट कर दिया है कि वह ओरेकल का उपयोग कर रहा है। मेरे पास कुछ भी विकसित करने और परीक्षण करने के लिए हाथ में चलने वाले ओरेकल उदाहरण नहीं हैं।
इसके बारे में नहीं पता था। लेकिन मुझे लगता है कि यह बहुत उपयोगकर्ता के अनुकूल नहीं है। हालांकि मैं एक नज़र डालेगा। –
कनेक्ट इस कोड को निश्चित रूप से सरल बना देगा। –