2009-09-18 8 views
6

क्या टी-एसक्यूएल स्क्रिप्ट है जो एसक्यूएल सर्वर में संग्रहीत प्रोड्यूशंस, विचार, फ़ंक्शंस इत्यादि द्वारा उपयोग नहीं किया जा रहा है, मेरे पास एक डेटाबेस है जिसमें 100 से अधिक टेबल हैं, यदि अधिक नहीं है और इससे पहले कि मैं गिर रहा हूं टेबल, मैं जानना चाहता था कि क्या एक स्क्रिप्ट थी जो डेटाबेस में प्रत्येक ऑब्जेक्ट के माध्यम से जा सकती है और मुझे बता सकती है कि कोई टेबल उपयोग में है या नहीं।tsql स्क्रिप्ट संग्रहित प्रक्रियाओं, विचारों, कार्यों, आदि द्वारा उपयोग नहीं किए जा रहे तालिकाओं को खोजने के लिए?

+0

वह तालिका क्या है जिसका उपयोग नहीं किया जा रहा है? तुम्हारा मतलब खाली टेबल है? –

+0

नहीं, मेरा मतलब सारणी है जो संग्रहीत प्रक्रियाओं, विचारों, कार्यों आदि में उपयोग नहीं की जाती है मान लीजिए कि मैंने कुछ समय पहले डेटाबेस बनाया था और इसमें 100 टेबल हैं और कुछ अप्रचलित हो गए हैं, लेकिन मुझे यकीन नहीं है, इसलिए इससे पहले टेबल छोड़ना शुरू करें, मैं यह जानना चाहता हूं कि वे उपयोग में हैं या नहीं। मुझे समझ में नहीं आता कि यह प्रश्न क्यों कम किया गया था, एक बहुत ही वैध और समझदार प्रश्न की तरह लगता है। – Xaisoft

+0

शायद "टी-एसक्यूएल स्क्रिप्ट" को उन तालिकाओं को ढूंढने के लिए शीर्षक बदलें जिन्हें संग्रहीत प्रक्रियाओं, विचारों और कार्यों द्वारा संदर्भित नहीं किया गया है। " – shufler

उत्तर

8

यदि आप एक स्क्रिप्ट का उपयोग करना चाहते हैं, तो here (Listing SQL Server Object Dependencies) स्क्रिप्ट निर्भरताओं के लिए एक बहुत अच्छा लेख है। इसका उपयोग करके, आप संदर्भित तालिकाओं की एक सूची बना सकते हैं। आपके पास आपके डेटाबेस में मौजूद टेबल की सूची है, इसलिए आप जानते हैं कि उनमें से कौन सा उपयोग नहीं किया जा रहा है।

लेख में वे

sp_depends
संग्रहीत प्रक्रिया का उपयोग करते हैं। हालांकि इसमें एक विफलता है। उदाहरण के लिए, यदि आपके पास एक संग्रहित प्रक्रिया है जो "MyTable" तालिका का उपयोग करती है और आप "MyTable" तालिका बनाने से पहले प्रक्रिया बनाते हैं तो आप इसे निर्भरताओं की सूची में नहीं देख पाएंगे। यही कारण है कि आप निर्भरताओं को खोजने के लिए तालिका
syscomments
खोजना चाहिए। लेकिन यह भी सटीक नहीं है, क्योंकि यदि आपके पास टिप्पणी में तालिका का नाम है, तो आप इसे निर्भरता के रूप में मानेंगे।

4

यदि आप प्रबंधन स्टूडियो का उपयोग कर रहे हैं, तो आप तालिका पर राइट-क्लिक कर सकते हैं और 'निर्भरता देखें।'

और यहाँ कैसे TSQL, जो मेरा अनुमान है कि में ऐसा करने पर एक लेख के लिए एक लिंक है आप जो खोज रहे हैं:

https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/datacenter/?p=277

तुम हमेशा एक अस्थायी तालिका का निर्माण कर सकता है/var उन सभी तालिकाओं के साथ जो निर्भरता रखते हैं, और यह देखने के लिए सभी तालिकाओं के साथ इसकी तुलना करें कि कोई निर्भरता नहीं है।

8

जहां तक ​​मुझे पता है कि आप वास्तव में SQL सर्वर के निर्भरता प्रबंधन पर भरोसा नहीं कर सकते हैं। लुकाज़ ने कई मुद्दों में से एक को बताया।

2005 में, पुराने सिस्कोमेंट टेबल के बराबर sys.sql_modules है।

सभी तालिका नाम जो TSQL कोड (दृश्य, एस.पी., कार्यों) में नहीं होती है खोजने के लिए, इस बयान का उपयोग करें: आप लाइन बाहर टिप्पणी अगर शून्य शर्त है साथ

select t.name, sys.objects.name foundin, sys.objects.type_desc 
from sys.objects t 
left outer join 
    sys.sql_modules 
    inner join sys.objects on sys.objects.object_id = sys.sql_modules.object_id 
on sys.sql_modules.definition like '%' + t.name + '%' 
where t.type = 'U' 
and sys.objects.name is null 
order by t.name, type_desc, foundin 

, आप सभी को खोजने टीएसक्यूएल कोड में सभी टेबल नामों की घटनाएं। (कोई फर्क नहीं पड़ता कि तालिका का नाम वास्तव में उस तालिका को संदर्भित करता है)

+0

बीमार इसे आज़माएं और आपको बताएं कि यह कैसे काम करता है। – Xaisoft

+0

+1 मैं दृश्य/प्रक्रियाओं के भीतर तालिका संदर्भों को ढूंढने का एक तरीका ढूंढ रहा था और मामूली संशोधन के साथ यह इसके लिए पूरी तरह से अच्छा काम करता है। –

+0

यह संग्रहित प्रक्रियाओं के लिए बहुत अच्छी तरह से काम करता है लेकिन आपको t.type = 'U' बाधा को t.type IN ('U', 'P') में आराम करने की आवश्यकता है। – Roman

संबंधित मुद्दे