SQL सर्वर में संग्रहीत कार्यविधि या फ़ंक्शन में अंतिम परिवर्तन की तारीख कैसे जांचें


182

मुझे यह देखने की ज़रूरत है कि पिछली बार कब फ़ंक्शन बदला गया था। मुझे पता है कि सृजन तिथि कैसे जाँचनी है (यह SQL सर्वर प्रबंधन स्टूडियो में फ़ंक्शन गुण विंडो में है)।
मैंने पाया कि SQL सर्वर 2000 में संशोधित तिथि (इस पोस्ट को देखें) की जाँच करना संभव नहीं था: क्या यह निर्धारित करना संभव है कि किसी संग्रहीत कार्यविधि को SQL Server 2000 में संशोधित किया गया था? )

क्या SQL Server 2008 में इसकी जाँच संभव है? क्या MS सिस्टम तालिकाओं में कुछ नई सुविधा जोड़ता है जो इसे जांचने की अनुमति देता है?

जवाबों:


386
SELECT name, create_date, modify_date 
FROM sys.objects
WHERE type = 'P'
ORDER BY modify_date DESC

typeएक समारोह के लिए है FNन कि Pप्रक्रिया के लिए। या आप नाम स्तंभ पर फ़िल्टर कर सकते हैं।


5
ऐसा लगता है कि कुछ अनुमतियाँ इस क्वेरी से परिणाम को छोड़ सकती हैं - भले ही कुछ परिणाम हैं जो वापस आते हैं। हमने उपयोगकर्ता प्राधिकरण के आधार पर अलग-अलग परिणाम देखे हैं - लेकिन मैंने इसे संकुचित नहीं किया है जिसमें अधिकारी शामिल हैं। छोटी कहानी: इस क्वेरी को SA के रूप में चलाएं यदि आप यह सुनिश्चित कर सकें कि आप सब कुछ देख रहे हैं।
रयान गुइल

1
आप वास्तव में सही हैं। msdn.microsoft.com/en-us/library/ms190324%28v=sql.105%29.aspx "में SQL सर्वर 2005 और बाद के संस्करणों, सूची दृश्य में मेटाडाटा की दृश्यता securables तक सीमित है कि एक उपयोगकर्ता या तो मालिक या जिस पर उपयोगकर्ता को कुछ अनुमति दी गई है। अधिक जानकारी के लिए, मेटाडेटा दृश्यता कॉन्फ़िगरेशन देखें। "
क्रिस डाइवर

2
खतरे के संकेत के लिए एक शब्द ही काफी है। अगर ओपी विशेष रूप से ALTER DDL स्टेटमेंट के माध्यम से किए गए मॉड्यूल में परिवर्तन का उल्लेख modify_dateकर रहा है , तो भ्रामक हो सकता है। उदाहरण के लिए, यदि sys.sp_refreshsqlmoduleमॉड्यूल पर अमल किया जाता है , तो modify_dateभी इसे बदल दिया जाएगा , जबकि तकनीकी रूप से मॉड्यूल का कोड नहीं बदला है।
गुरुग्रंथ

निर्दिष्ट डेटाबेस संग्रहीत कार्यविधियाँ कैसे प्राप्त कर सकते हैं ?!
इरफान

2
@im_one WHERE लाइन के बाद, वह संग्रहित नाम जोड़ें AND name = 'specified procedure'जहां आप खरीदना specified procedureचाहते हैं।
टायलरएच

41

संग्रहीत कार्यविधियों के लिए इसे आज़माएँ:

SELECT name, create_date, modify_date
FROM sys.objects
WHERE type = 'P'
AND name = 'myProc'

1
यह स्वीकृत उत्तर होना चाहिए क्योंकि यह सरल और सीधा है।
user3454439

13

यह एक समारोह खोजने के लिए सही समाधान है:

SELECT name, create_date, modify_date
FROM sys.objects
WHERE type = 'fn'
AND name = 'fn_NAME'

7

मैंने इसे नई तकनीक के रूप में सूचीबद्ध पाया

यह बहुत विस्तृत है

SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = N'PROCEDURE' and ROUTINE_SCHEMA = N'dbo' 
order by  LAST_ALTERED desc

SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = N'PROCEDURE' and ROUTINE_SCHEMA = N'dbo' 
order by  CREATED desc 


SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = N'FUNCTION' and ROUTINE_SCHEMA = N'dbo' 
order by  LAST_ALTERED desc

SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = N'FUNCTION' and ROUTINE_SCHEMA = N'dbo' 
order by  CREATED desc 

4

SQL 2000 के लिए मैं उपयोग करूंगा:

SELECT name, crdate, refdate 
FROM sysobjects
WHERE type = 'P' 
ORDER BY refdate desc

2008 के बारे में क्या ..? सवाल यह नहीं है कि ..?
NREZ

2008 में sysobjects पर @NREZ प्रश्नों का समर्थन किया जाता है, इसलिए यह काम करेगा
पॉल

पुनर्वित्त अंतिम संशोधित तिथि नहीं है। Sys.object और sysobjects के बीच दिनांक अंतर की जाँच करें।
access_granted

2

नवीनतम संस्करण (2012 या अधिक) में हम इस क्वेरी का उपयोग करके संशोधित संग्रहीत कार्यविधि विवरण प्राप्त कर सकते हैं

SELECT create_date, modify_date, name FROM sys.procedures 
ORDER BY modify_date DESC

0
SELECT *
FROM sys.objects
WHERE type IN ('FN', 'IF', 'TF') 
AND name = 'dgdsgds'

1
मैं आपसे अनुरोध कर सकता हूं कि कृपया अपने उत्तर के आसपास कुछ और संदर्भ जोड़ दें। कोड-केवल उत्तर समझना मुश्किल है। यह पूछने वाले और भविष्य के पाठकों दोनों की मदद करेगा यदि आप अपनी पोस्ट में अधिक जानकारी जोड़ सकते हैं।
आरबीटी

0

आप तारीख के अनुसार functionsऔर stored proceduresसाथ में चेक डेट संशोधित करने के लिए इसका उपयोग कर सकते हैं :

SELECT 'Stored procedure' as [Type] ,name, create_date, modify_date 
FROM sys.objects
WHERE type = 'P' 

UNION all

Select 'Function' as [Type],name, create_date, modify_date
FROM sys.objects
WHERE type = 'FN'
ORDER BY modify_date DESC

या:

SELECT type ,name, create_date, modify_date 
FROM sys.objects
WHERE type in('P','FN') 
ORDER BY modify_date DESC
-- this one shows type like : FN for function and P for stored procedure

परिणाम इस प्रकार होगा:

Type                 |  name      | create_date              |  modify_date
'Stored procedure'   | 'firstSp'  | 2018-08-04 07:36:40.890  |  2019-09-05 05:18:53.157
'Stored procedure'   | 'secondSp' | 2017-10-15 19:39:27.950  |  2019-09-05 05:15:14.963
'Function'           | 'firstFn'  | 2019-09-05 05:08:53.707  |  2019-09-05 05:08:53.707
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.