2009-01-14 16 views
5

मैं अपने डेटाबेस में संग्रहीत प्रक्रियाओं की संख्या कैसे गिन सकता हूं और क्या यह बहुत अधिक संग्रहित प्रक्रियाओं के लिए एक बुरा अभ्यास है?डाटाबेस में संग्रहीत प्रक्रियाओं की गणना करें?

उत्तर

12
Select count(*) from sysobjects where xtype = 'P' 
+0

sysobjects का उपयोग करना " "सीधे फेंक दिया जाता है - आप या तो" sys "का उपयोग बंद कर रहे हैं। या INFORMATION_SCHEMA कैटलॉग दृश्य। –

+0

मुझे पता नहीं, 'INFORMATION_SCHEMA' या' sys' के लिए अतिरिक्त कीप्रेस मुझे फहराते हैं, और इसलिए इस पर फंसे हुए हैं। @marc_s के साथ इसका बड़ा सौदा क्या है? –

1

आपको जितनी आवश्यकता हो उतनी आवश्यकता है। छोटी और सरल प्रक्रियाओं को रखना एक अच्छी बात है।

यदि आप एसक्यूएल 2005 का उपयोग कर रहे हैं, तो आपकी प्रो काउंटर गिनती देखने का एक दृश्य तरीका एसएसएमएस में प्रोग्राम की योग्यता के तहत आपके संग्रहीत प्रक्रिया नोड में नेविगेट करना है। व्यू-ऑब्जेक्ट एक्सप्लोरर विवरण पर क्लिक करें और ऑब्जेक्ट्स की गिनती दाईं ओर प्रदर्शित की जाएगी।

1

चयन गिनती (*) sysobjects जहां xtype = 'पी'

सभी अपने डाटाबेस पहुँच सपा के माध्यम से किया जा करने के लिए अनिवार्य है, तो आकाश सीमा है।

6
Select count(1) from information_schema.routines 
where routine_type = 'PROCEDURE' 
2

आप अपनी गिनती से प्रणाली संग्रहित प्रक्रियाओं को बाहर करने के

एक तरह से कर सकते हैं कॉल करने के लिए होगा:

select count(*) from sysobjects 
    where xtype = 'P' 
    and category = 0 
    and left(name,2) <> 'sp' 

कि यह सोचते है कि आप एसपी

के साथ अपने प्रक्रियाओं उपसर्ग नहीं है
+0

सिस्टम संग्रहीत प्रक्रियाओं को आमतौर पर 'sp_' के साथ prefixed किया जाता है, हालांकि मैंने उत्पादन प्रणालियों को देखा है जहां 'sp_' उपयोगकर्ता द्वारा परिभाषित प्रोसेस के लिए उपसर्ग का उपयोग किया जाता है :-( –

0

यदि आप उनका उपयोग करते हैं, तो वास्तव में "बहुत अधिक" जैसी कोई चीज़ नहीं है।

मेरे पास एक डेवलपर था जो संबंधित संग्रहित प्रोसेस डेटाबेस में बहुत अधिक जगह का उपयोग कर रहा था, इसलिए मुझे वास्तव में सभी संग्रहित प्रोसेस के कुल SIZE की गणना करना पड़ा। Good answer for that here. अपशॉट यह था कि संग्रहीत प्रोसेस का आकार डेटाबेस के कुल आकार के .001% के लिए ज़िम्मेदार था।

+0

>> मेरे पास एक डेवलपर था जो उसकी संग्रहीत प्रोसेस का उपयोग कर रहा था डेटाबेस में बहुत अधिक जगह, इसलिए मुझे वास्तव में सभी संग्रहित प्रोसेस के कुल SIZE की गणना करना पड़ा। यह पागल है। उम्मीद है कि आप मूर्ख चुनौतियों का आनंद लें;) – Sam

+0

यही कारण है कि मुझे स्टैक ओवरफ्लो पसंद है! दरअसल, अनुरोध अधिक था "कृपया डेटाबेस [x] में स्पेस उपयोग का पूर्ण टूटना प्रदान करें, जिसमें टेबल, इंडेक्स और संग्रहीत प्रक्रियाएं शामिल हैं"। सारणी और अनुक्रमणिका आसान है। संग्रहीत प्रोसेस का वास्तविक आकार थोड़ा कठिन है। – BradC

1

यह जो कि कभी कभी जब आरेखण उपकरण का उपयोग कर बनाई गई हो बाहर निकाल देगा (वे dt_ के साथ शुरू होगा)

SELECT * FROM information_schema.routines 
WHERE OBJECTPROPERTY(OBJECT_ID(SPECIFIC_NAME),'IsMSShipped') =1 
AND routine_type = 'PROCEDURE' 
0

यहाँ एक सरल प्रश्न आप उपयोग कर सकते है:

SELECT COUNT(object_id) FROM sys.procedures 
संबंधित मुद्दे