क्या कोई ऐसा तरीका है जिसे मैं SQL सर्वर प्रबंधन स्टूडियो में नाम या भाग के नाम से संग्रहीत प्रक्रिया में पा सकता हूं? (सक्रिय डेटाबेस संदर्भ पर)
मदद के लिए शुक्रिया
जवाबों:
आप उपयोग कर सकते हैं:
select *
from
sys.procedures
where
name like '%name_of_proc%'
यदि आपको कोड की आवश्यकता है तो आप syscomments तालिका में देख सकते हैं
select text
from
syscomments c
inner join sys.procedures p on p.object_id = c.object_id
where
p.name like '%name_of_proc%'
अपडेट संपादित करें:
तुम भी एएनएसआई मानक संस्करण का उपयोग कर सकते हैं
SELECT *
FROM
INFORMATION_SCHEMA.ROUTINES
WHERE
ROUTINE_NAME LIKE '%name_of_proc%'
inner join sys.procedures p on p.object_id = c.id
इसके बजाय करना था
object_definition(object_id(r.ROUTINE_NAME)),
इसे एक विकल्प के रूप में उपयोग कर सकते हैं जो एक मुद्दा है।
मान लें कि आप ऑब्जेक्ट एक्सप्लोरर विवरण ( F7) में संग्रहीत कार्यविधियों की सूची दिखा रहे हैं, फ़िल्टर बटन पर क्लिक करें और नाम (या आंशिक नाम) दर्ज करें।
यह तालिकाओं और विचारों (अन्य चीजों के अलावा) के लिए काम करेगा, न कि केवल स्पार्क्स:
SELECT
'[' + s.name + '].[' + o.Name + ']',
o.type_desc
FROM
sys.objects o
JOIN sys.schemas s ON s.schema_id = o.schema_id
WHERE
o.name = 'CreateAllTheThings' -- if you are certain of the exact name
OR o.name LIKE '%CreateAllThe%' -- if you are not so certain
यह आपको स्कीमा नाम भी देता है जो किसी भी गैर-तुच्छ डेटाबेस में उपयोगी होगा (जैसे कि जहां आपको नाम से संग्रहीत प्रक्रिया खोजने के लिए क्वेरी की आवश्यकता है)।
आप इस क्वेरी का उपयोग कर सकते हैं:
SELECT
ROUTINE_CATALOG AS DatabaseName ,
ROUTINE_SCHEMA AS SchemaName,
SPECIFIC_NAME AS SPName ,
ROUTINE_DEFINITION AS SPBody ,
CREATED AS CreatedDate,
LAST_ALTERED AS LastModificationDate
FROM INFORMATION_SCHEMA.ROUTINES
WHERE
(ROUTINE_DEFINITION LIKE '%%')
AND
(ROUTINE_TYPE='PROCEDURE')
AND
(SPECIFIC_NAME LIKE '%AssessmentToolDegreeDel')
जैसा कि आप देख सकते हैं, आप संग्रहीत प्रक्रिया के शरीर के अंदर भी खोज कर सकते हैं।
बहुत साफ-सुथरी चाल मैं कुछ एसक्यूएल इंजेक्शन की कोशिश में ठोकर खाता हूं, खोज बॉक्स में ऑब्जेक्ट एक्सप्लोरर में सिर्फ आपके प्रतिशत पात्रों का उपयोग करें, और यह संग्रहीत प्रक्रियाओं, कार्यों, विचारों, तालिकाओं, स्कीमा, अनुक्रमित की खोज करेगा ... मैं और अधिक के बारे में सोचकर थक गया :)
जब मेरे पास एक स्टोर प्रक्रिया का नाम है, और यह नहीं जानता कि यह किस डेटाबेस से संबंधित है, तो मैं निम्नलिखित का उपयोग करता हूं -
Use [master]
GO
DECLARE @dbname VARCHAR(50)
DECLARE @statement NVARCHAR(max)
DECLARE db_cursor CURSOR
LOCAL FAST_FORWARD
FOR
--Status 48 (mirrored db)
SELECT name FROM MASTER.dbo.sysdatabases WHERE STATUS NOT LIKE 48 AND name NOT IN ('master','model','msdb','tempdb','distribution')
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @dbname
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @statement = 'SELECT * FROM ['+@dbname+'].INFORMATION_SCHEMA.ROUTINES WHERE [ROUTINE_NAME] LIKE ''%name_of_proc%'''+';'
print @statement
EXEC sp_executesql @statement
FETCH NEXT FROM db_cursor INTO @dbname
END
CLOSE db_cursor
DEALLOCATE db_cursor
SQL सर्वर संस्करण 9.0 (2005) के लिए, आप नीचे दिए गए कोड का उपयोग कर सकते हैं:
select *
from
syscomments c
inner join sys.procedures p on p.object_id = c.id
where
p.name like '%usp_ConnectionsCount%';
विकल्प 1: SSMS में View > Object Explorer Details
F7 पर जाएं या दबाएँ। Search
बॉक्स का उपयोग करें । अंत में प्रदर्शित सूची में राइट क्लिक करें और ट्री Synchronize
में ऑब्जेक्ट को खोजने के लिए चुनें Object Explorer
।
विकल्प 2: जैसे ऐड-ऑन स्थापित करें dbForge Search
। प्रदर्शित सूची पर राइट क्लिक करें और चुनें Find in Object Explorer
।