जवाब कैसे डेटाबेस एक साथ डाल दिया गया है पर एक छोटे से निर्भर करेगा, लेकिन एक ऐसी ही समस्या के लिए मेरे दृष्टिकोण 3 गुना था:
चित्रा बाहर जो वस्तुओं कोई आंतरिक निर्भरता है। आप इस तरह के रूप में sysdepends के खिलाफ क्वेरी से बाहर यह काम कर सकते हैं:
select
id,
name
from
sys.sysdepends sd
inner join sys.sysobjects so
on so.id = sd.id
where
not exists (
select
1
from
sysdepends sd2
where
sd2.depid = so.id
)
आप वस्तु (sysobjects.xtype) के प्रकार के इकट्ठा करने के साथ इस गठबंधन करना चाहिए के रूप में आप केवल मेज, काम करता है, संग्रहीत procs अलग करने के लिए चाहता हूँ और देखा गया। "Sp_" शुरू करने वाली किसी भी प्रक्रिया को अनदेखा करें, जब तक कि लोग आपके आवेदन के लिए उन नामों के साथ प्रक्रियाएं नहीं बना रहे हों!
लौटाई गई कई प्रक्रियाएं आपके आवेदन के प्रवेश बिंदु हो सकती हैं। यह उन प्रक्रियाओं को कहना है जिन्हें आपकी एप्लिकेशन परत से या किसी अन्य दूरस्थ कॉल से कहा जाता है और उनके पास कोई ऑब्जेक्ट नहीं है जो डेटाबेस के भीतर उन पर निर्भर करता है।
मान लीजिए कि प्रक्रिया बहुत आक्रामक नहीं होगी (हालांकि यह कुछ अतिरिक्त भार नहीं बनाएगा, हालांकि बहुत अधिक नहीं है) अब आप एसपी की कुछ प्रोफाइलिंग चालू कर सकते हैं: प्रारंभ, एसक्यूएल: बैचस्टार्टिंग और/या एसपी: StmtStarting ईवेंट। जब तक आप फिट दिखाई देते हैं, तब तक इसे चलाएं, आदर्श क्रॉस रेफरेंसिंग के लिए आदर्श रूप से एक एसक्यूएल तालिका में लॉग इन करना। आपको कई प्रक्रियाओं को खत्म करने में सक्षम होना चाहिए जिन्हें सीधे आपके आवेदन से बुलाया जाता है।
इस लॉग से टेक्स्ट डेटा को संदर्भित करने और आपकी आश्रित वस्तु सूची को संदर्भित करके आप उम्मीद करेंगे कि अप्रयुक्त प्रक्रियाओं में से अधिकांश को अलग कर दिया जाएगा।
अंत में, आप इस प्रक्रिया के परिणामस्वरूप अपनी उम्मीदवार सूची लेना चाहेंगे और उनके खिलाफ अपने स्रोत कोड को grep कर सकते हैं। यह एक बोझिल काम है और सिर्फ इसलिए कि आपको अपने कोड में संदर्भ मिलते हैं इसका मतलब यह नहीं है कि आपको उनकी आवश्यकता है! यह बस हो सकता है कि कोड को हटाया नहीं गया है, हालांकि यह अब तर्कसंगत रूप से पहुंच योग्य नहीं है।
यह एक पूर्ण प्रक्रिया से बहुत दूर है। अपेक्षाकृत साफ विकल्प सभी गतिविधियों की निगरानी के लिए सर्वर पर प्रोफाइलिंग को और अधिक विस्तृत (और इसलिए आक्रामक) स्थापित करना है। इसमें लॉग सक्रिय होने के दौरान बुलाए गए प्रत्येक SQL कथन को शामिल किया जा सकता है। फिर आप इस टेक्स्ट डेटा से निर्भर टेबल या क्रॉस-डेटाबेस निर्भरताओं के माध्यम से वापस काम कर सकते हैं। मुझे लॉग विवरण की विश्वसनीयता मिली है (प्रति सेकंड कई पंक्तियां पार्स किए जाने का प्रयास कर रही हैं) और डेटा की निचली मात्रा में निपटने के लिए मुश्किल है। यदि आपके आवेदन से पीड़ित होने की संभावना कम है तो यह एक अच्छा दृष्टिकोण हो सकता है।
चेतावनी:
जहां तक मुझे पता है कर रहा हूँ, वहाँ इस के लिए एक आदर्श जवाब नहीं है क्योंकि, टेबल को दूर करने के लिए विशेष रूप से सावधान रहना। कुछ गलत होने पर प्रक्रियाओं, कार्यों और विचारों को आसानी से बदला जा सकता है (हालांकि सुनिश्चित करें कि आप उन्हें जलने से पहले स्रोत नियंत्रण में रखते हैं!)। यदि आप वास्तव में परेशान महसूस कर रहे हैं क्यों तालिका का नाम नहीं बदलते हैं और पुराने नाम के साथ एक दृश्य बनाते हैं, तो आपको एक आसान आउट मिल गया है।
sysdepends अविश्वसनीय – gbn