यह आलेख SQL सर्वर डेटाबेस में संग्रहीत कार्यविधियों की सूची वापस करने के दो तरीके प्रस्तुत करता है।
विकल्प 1 - रूटीन सूचना स्कीमा दृश्य
आप ROUTINES
का उपयोग कर सकते हैं डेटाबेस में सभी उपयोगकर्ता-परिभाषित संग्रहीत कार्यविधियों की सूची प्राप्त करने के लिए सूचना स्कीमा दृश्य।
USE Music; SELECT ROUTINE_SCHEMA, ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE';
परिणाम:
+------------------+----------------------+ | ROUTINE_SCHEMA | ROUTINE_NAME | |------------------+----------------------| | dbo | spAlbumsFromArtist | | dbo | uspGetAlbumsByArtist | +------------------+----------------------+
प्रक्रिया की परिभाषा लौटाएं
INFORMATION_SCHEMA.ROUTINES
दृश्य में एक ROUTINE_DEFINITION
भी है कॉलम, ताकि यदि आवश्यक हो तो आप आसानी से प्रत्येक संग्रहीत कार्यविधि की परिभाषा वापस कर सकते हैं।
SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE';
विकल्प 2 - sys.objects सिस्टम कैटलॉग व्यू
संग्रहीत कार्यविधियों की सूची वापस करने का दूसरा तरीका sys.objects
. को क्वेरी करना है सिस्टम कैटलॉग व्यू।
SELECT SCHEMA_NAME(schema_id) AS [Schema], name FROM sys.objects WHERE type = 'P';
परिणाम:
+----------+----------------------+ | Schema | name | |----------+----------------------| | dbo | spAlbumsFromArtist | | dbo | uspGetAlbumsByArtist | +----------+----------------------+
टाइप P
"प्रक्रिया" के लिए अनुमानित है।
ऐसा करने का दूसरा तरीका type_desc
. द्वारा फ़िल्टर करना है कॉलम:
SELECT SCHEMA_NAME(schema_id) AS [Schema], name FROM sys.objects WHERE type_desc = 'SQL_STORED_PROCEDURE';
प्रक्रिया की परिभाषा लौटाएं
sys.objects
दृश्य में ऑब्जेक्ट की परिभाषा के लिए एक कॉलम शामिल नहीं है। यदि आप प्रत्येक संग्रहीत कार्यविधि की परिभाषा वापस करना चाहते हैं, तो आप इसे sys.sql_modules
के साथ जोड़ सकते हैं सिस्टम दृश्य।
उदाहरण:
SELECT definition FROM sys.objects o INNER JOIN sys.sql_modules m ON o.object_id = m.object_id WHERE type = 'P';
विकल्प 3 - sys.procedures कैटलॉग व्यू
sys.procedures
कैटलॉग संग्रहीत कार्यविधि में प्रत्येक ऑब्जेक्ट के लिए एक पंक्ति होती है जो किसी प्रकार की प्रक्रिया है, sys.objects.type के साथ =पी, एक्स, आरएफ, और पीसी।
निम्नलिखित कोड को निष्पादित करने से वे सभी संग्रहीत कार्यविधियाँ वापस आ जाएँगी जिनका उपयोगकर्ता या तो स्वामी है या जिस पर उपयोगकर्ता को कुछ अनुमति दी गई है।
SELECT SCHEMA_NAME(schema_id) AS [Schema], Name FROM sys.procedures;
परिणाम:
+----------+----------------------+ | Schema | Name | |----------+----------------------| | dbo | spAlbumsFromArtist | | dbo | uspGetAlbumsByArtist | +----------+----------------------+
यह दृश्य type
इनहेरिट करता है sys.objects
. से कॉलम इसलिए यदि आप चाहें तो परिणामों को प्रक्रिया प्रकार से फ़िल्टर कर सकते हैं।
SELECT SCHEMA_NAME(schema_id), name FROM sys.procedures WHERE type = 'P';सेलेक्ट करें
मेरे मामले में, मुझे एक ही परिणाम मिलता है क्योंकि मेरी दोनों प्रक्रियाएं "पी" प्रकार की हैं।
यदि आप सोच रहे हैं, तो यहां प्रत्येक प्रकार का क्या अर्थ है।
- P
- एसक्यूएल संग्रहित प्रक्रिया
- X
- विस्तारित संग्रहीत कार्यविधि
- आरएफ
- प्रतिकृति-फ़िल्टर-प्रक्रिया
- पीसी
- विधानसभा (CLR) संग्रहीत-प्रक्रिया
प्रक्रिया की परिभाषा लौटाएं
sys.procedures
दृश्य में ऑब्जेक्ट की परिभाषा के लिए एक कॉलम शामिल नहीं है। पिछली विधि की तरह, यदि आप प्रत्येक संग्रहीत कार्यविधि की परिभाषा वापस करना चाहते हैं, तो आप इसे sys.sql_modules
के साथ जोड़ सकते हैं सिस्टम दृश्य।
उदाहरण:
SELECT definition FROM sys.procedures p INNER JOIN sys.sql_modules m ON p.object_id = m.object_id;