Подтвердить что ты не робот

Получить список хранимых процедур, созданных и/или измененных в определенную дату?

Я хочу найти, какую хранимую процедуру я создал, а также я хочу найти, какую хранимую процедуру я изменил в своем SQL Server в определенную дату, например 27 сентября 2012 года (27/09/2012).

Есть ли какой-либо запрос, который будет перечислять эти процедуры, которые были созданы и также изменены в эту дату?

4b9b3361

Ответ 1

Вы можете попробовать этот запрос в любой базе данных SQL Server:

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

в котором перечислены имя, дата создания и дата последней модификации - к сожалению, он не записывает who и не изменяет хранимую процедуру.

Ответ 2

Вот версия "более новой школы".

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

Ответ 3

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

Ответ 4

Изменен первый запрос для большего количества объектов: таблицы, представления, UDF, SP и т.д. Вы можете добавить свои собственные типы объектов.

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 + ']';

Ответ 5

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

Ответ 6

Для SQL Server 2012:

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