2012-09-28 7 views
32

मैं यह जानना चाहता हूं कि मैंने कौन सी संग्रहीत प्रक्रिया बनाई है और मैं यह भी जानना चाहता हूं कि मैंने अपने SQL सर्वर में 27 सितंबर 2012 (27/09/2012) जैसी किसी विशेष तिथि पर किस संग्रहीत प्रक्रिया को संशोधित किया है।किसी विशेष तारीख पर बनाए गए और/या संशोधित संग्रहीत प्रक्रियाओं की सूची प्राप्त करें?

क्या कोई प्रश्न है जो इन प्रक्रियाओं को सूचीबद्ध करेगा और इस तारीख को भी संशोधित किया जाएगा?

उत्तर

55

आप किसी भी SQL सर्वर डेटाबेस में इस क्वेरी की कोशिश कर सकते हैं:

SELECT 
    name, 
    create_date, 
    modify_date 
FROM sys.procedures 
WHERE create_date = '20120927' 

जो बाहर नाम, निर्माण और अंतिम संशोधन दिनांक को सूचीबद्ध करता है - दुर्भाग्य से, यह रिकॉर्ड नहीं करता जो बनाया है और/या प्रश्न में संग्रहित प्रक्रिया में संशोधन किया।

+0

धन्यवाद। क्या आप इस उत्तर को विस्तारित कर सकते हैं कि उपयोगकर्ता परिभाषित कार्यों के लिए इसे कैसे प्रबंधित किया जाए? – Lijo

+1

@ लिजो: [मेरा प्रश्न देखें "क्यों नहीं है 'sys.functions' कैटलॉग व्यू?"] (Http://stackoverflow.com/questions/468672/sql-server-where-is-sys-functions) - the स्वीकार्य उत्तर आपको दिखाता है कि 'sys.objects' –

3
SELECT name 
FROM sys.objects 
WHERE type = 'P' 
AND (DATEDIFF(D,modify_date, GETDATE()) < 7 
    OR DATEDIFF(D,create_date, GETDATE()) < 7) 
12

यहां "नया स्कूल" संस्करण है।

SELECT * FROM INFORMATION_SCHEMA.ROUTINES 
WHERE ROUTINE_TYPE = N'PROCEDURE' and ROUTINE_SCHEMA = N'dbo' 
and CREATED = '20120927' 
+0

से विभिन्न प्रकार के फ़ंक्शंस कैसे प्राप्त करें, क्या आप कोई स्रोत प्रदान कर सकते हैं जो बताता है कि 'INFORMATION_SCHEMA' का उपयोग वर्तमान में पसंदीदा तरीका (या" नया स्कूल ") होगा? – bvgheluwe

+2

मैंने "पसंदीदा" नहीं कहा था। "नया", जैसा कि, बाद में यह उपलब्ध हो गया। और एसक्यूएल सर्वर 2005 के साथ शुरू किया। Http://msdn.microsoft.com/en-us/library/ms186778%28v=sql.90%29.aspx एक मामूली लाभ होगा यदि आप कई आरडीबीएमएस सिस्टम से निपटते हैं, तो आप एक मानक सीखना, स्वामित्व विधि नहीं। http://en.wikipedia.org/wiki/Information_schema – granadaCoder

0

अधिक वस्तुओं के लिए पहली क्वेरी संशोधित: टेबल, विचार, यूडीएफ, एसपी और इसी तरह। आप अपना ऑब्जेक्ट प्रकार जोड़ सकते हैं।

DECLARE @OldSchema AS VARCHAR(255); 
DECLARE @NewSchema AS VARCHAR(255); 

SET @OldSchema = 'dbo'; 
SET @NewSchema = 'new_dbo'; 

DECLARE @sql AS VARCHAR(MAX); 
DECLARE @sqlTmp AS VARCHAR(MAX); 

SET @sql = 'CREATE SCHEMA [' + @NewSchema + ']' + CHAR(13) + CHAR(10); 

PRINT @sql; 

DECLARE @a INT = 1; 
WHILE (@a < 1000000) 
    BEGIN 

     SET @sqlTmp = ''; 

     SELECT @sqlTmp = 'ALTER SCHEMA [' + @NewSchema + '] TRANSFER [' 
       + s_name + '].[' + o_name + ']' 
     FROM (SELECT s.name s_name , 
          o.name o_name , 
          ROW_NUMBER() OVER (ORDER BY o.object_id) r 
        FROM  sys.objects o 
          JOIN sys.schemas s ON o.schema_id = s.schema_id 
        WHERE  s.name = @OldSchema 
          AND o.type IN ('P', 'U', 'V', 'IF', 'TF', 'FN') 
       ) a 
     WHERE r = @a; 

     IF (@@ROWCOUNT = 0) 
      SET @a = 100000000; 

     SET @a = @a + 1; 
     SET @sql = @sql + COALESCE(@sqlTmp, '') + CHAR(13) + CHAR(10); 

     PRINT @sqlTmp; 

    END; 
SET @sql = @sql + 'DROP SCHEMA [' + @OldSchema + ']'; 
PRINT 'DROP SCHEMA [' + @OldSchema + ']'; 
0
SELECT * FROM sys.objects WHERE type='p' ORDER BY modify_date DESC 

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

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

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

0

SQL सर्वर 2012 के लिए:

SELECT name, modify_date, create_date, type 
FROM sys.procedures 
WHERE name like '%XXX%' 
ORDER BY modify_date desc 
संबंधित मुद्दे

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