it-swarm.com.de

Abrufen der Liste der gespeicherten Prozeduren, die an einem bestimmten Datum erstellt und/oder geändert wurden?

Ich möchte herausfinden, welche gespeicherte Prozedur ich erstellt habe. Außerdem möchte ich herausfinden, welche gespeicherte Prozedur ich in meinem SQL Server an einem bestimmten Datum wie dem 27. September 2012 (27/09/2012) geändert habe.

Gibt es eine Abfrage, die diese Prozeduren auflistet, die an diesem Datum erstellt und auch geändert wurden?

36
AB Vyas

Sie können diese Abfrage in einer beliebigen SQL Server-Datenbank versuchen:

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

in dem ist der Name, die Erstellung und das letzte Änderungsdatum aufgeführt - leider wird nicht who erfasst und/oder die betreffende gespeicherte Prozedur geändert.

62
marc_s

Hier ist die "neuere Schule" Version.

SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = N'PROCEDURE' and ROUTINE_SCHEMA = N'dbo' 
and CREATED = '20120927'
12
granadaCoder
SELECT name
FROM sys.objects
WHERE type = 'P'
AND (DATEDIFF(D,modify_date, GETDATE()) < 7
     OR DATEDIFF(D,create_date, GETDATE()) < 7)
4
MANISHDAN LANGA
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
1

Die erste Abfrage wurde für weitere Objekte geändert: Tabellen, Ansichten, UDF, SP usw. Sie können eigene Objekttypen hinzufügen.

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

Für SQL Server 2012:

SELECT name, modify_date, create_date, type
FROM sys.procedures
WHERE name like '%XXX%' 
ORDER BY modify_date desc
0
ATX