2012-09-28 19 views

cevap

55

:

isim, oluşturma ve son değişiklik tarihini listeler
SELECT 
    name, 
    create_date, 
    modify_date 
FROM sys.procedures 
WHERE create_date = '20120927' 

- ne yazık ki, kaydetmez kim oluşturulan ve/veya söz konusu saklı yordamı değiştirdim.

+0

teşekkürler. Bu cevabı, kullanıcı tanımlı işlevler için de nasıl ekleyeceğinizi de dahil ederek genişletebilir misiniz? – Lijo

+1

@Lijo: [sorusuna bakın "Neden" sys.functions' katalogu görünümü yok? "] (Http://stackoverflow.com/questions/468672/sql-server-where-is-sys-functions) - kabul edilen cevap, '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

İşte "yeni okul" sürümü.

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

'dan çeşitli işlev türlerini nasıl elde edeceğinizi gösterir 'INFORMATION_SCHEMA' kullanılmasının şu anda tercih edilen yol (veya" daha yeni okul ") olacağını belirten herhangi bir kaynak verebilir misiniz? – bvgheluwe

+2

"Tercih" demedim. "Daha yeni", olduğu gibi, daha sonra zamanında kullanılabilir hale geldi. Ve Sql Server 2005 ile başladı. Http://msdn.microsoft.com/en-us/library/ms186778%28v=sql.90%29.aspx Birden fazla RDBMS sistemi ile uğraşırsanız hafif bir avantaj olurdu. Bir standart değil, özel bir yöntem öğreniyor. http://en.wikipedia.org/wiki/Information_schema – granadaCoder

0

Daha fazla nesne için ilk sorguyu değiştirdiniz: tablolar, görünümler, UDF, SP vb. Kendi nesne türlerini ekleyebilirsiniz. SQL Server 2012 için

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

Merhaba Abhik kashyap singh ve Stack Overflow'a hoş geldiniz. Cevabınız hakkında bir yorumum var: kodunuz doğru olabilir, ancak bazı bağlamlarda daha iyi bir cevap verebilir; Örneğin, önerilen bu değişikliğin nasıl ve neden bu sorunun nedenini çözebileceğini açıklayabilirdiniz, belki de ilgili belgelere bir bağlantı da dahildir. Bu, onları daha yararlı kılacak ve benzer sorunlara çözüm arayan diğer site okuyucuları için daha faydalı olacaktır. –

0

:

SELECT name, modify_date, create_date, type 
FROM sys.procedures 
WHERE name like '%XXX%' 
ORDER BY modify_date desc 
İlgili konular