Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Кто последний изменил хранимую процедуру  [new]
Егоров Алексей
Member

Откуда:
Сообщений: 24
Может кто подскажет, как посмотреть кто последний правил хранимую процедуру???
1 июн 09, 09:46    [7249970]     Ответить | Цитировать Сообщить модератору
 Re: Кто последний изменил хранимую процедуру  [new]
Crimean
Member

Откуда:
Сообщений: 13148
сервер какой?
1 июн 09, 10:41    [7250184]     Ответить | Цитировать Сообщить модератору
 Re: Кто последний изменил хранимую процедуру  [new]
beaver06
Member

Откуда:
Сообщений: 681
Crimean
сервер какой?


Например MS SQL 2005
1 июн 09, 13:58    [7251313]     Ответить | Цитировать Сообщить модератору
 Re: Кто последний изменил хранимую процедуру  [new]
Crimean
Member

Откуда:
Сообщений: 13148
beaver06
Crimean
сервер какой?


Например MS SQL 2005


например DLL триггера
1 июн 09, 15:01    [7251680]     Ответить | Цитировать Сообщить модератору
 Re: Кто последний изменил хранимую процедуру  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
Crimean
beaver06
Crimean
сервер какой?


Например MS SQL 2005


например DLL триггера

Именно.. А можно еще и через Event Notifocation (через Service Broker).
С уважением, Алексей
1 июн 09, 16:44    [7252451]     Ответить | Цитировать Сообщить модератору
 Re: Кто последний изменил хранимую процедуру  [new]
Егоров Алексей
Member

Откуда:
Сообщений: 24
Так всетаки как на 2005 SQL Servere посмотреть, кто изменил хранимку???
2 июн 09, 08:43    [7254133]     Ответить | Цитировать Сообщить модератору
 Re: Кто последний изменил хранимую процедуру  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
Код выдран из стандартных отчетов...
так пойдет?
use db_name;

declare @enable int; 
select top 1 @enable = convert(int,value_in_use) from sys.configurations where name = 'default trace enabled'  
if @enable = 1 
begin 
        declare @d1 datetime; 
        declare @diff int; 
        declare @curr_tracefilename varchar(500);  
        declare @base_tracefilename varchar(500);  
        declare @indx int ; 
        declare @temp_trace table (
                obj_name nvarchar(256)
        ,       obj_id int
        ,       database_name nvarchar(256)
        ,       start_time datetime
        ,       event_class int
        ,       event_subclass int
        ,       object_type int
        ,       server_name nvarchar(256)
        ,       login_name nvarchar(256)
        ,       user_name nvarchar(256)
        ,       application_name nvarchar(256)
        ,       ddl_operation nvarchar(40) 
        );
        
        select @curr_tracefilename = path from sys.traces where is_default = 1 ;  
        set @curr_tracefilename = reverse(@curr_tracefilename) 
        select @indx  = PATINDEX('%\%', @curr_tracefilename) 
        set @curr_tracefilename = reverse(@curr_tracefilename) 
        set @base_tracefilename = LEFT( @curr_tracefilename,len(@curr_tracefilename) - @indx) + '\log.trc'; 
        
        insert into @temp_trace 
        select ObjectName
        ,       ObjectID
        ,       DatabaseName
        ,       StartTime
        ,       EventClass
        ,       EventSubClass
        ,       ObjectType
        ,       ServerName
        ,       LoginName
        ,       NTUserName
        ,       ApplicationName
        ,       'temp' 
        from ::fn_trace_gettable( @base_tracefilename, default )  
        where EventClass in (46,47,164) and EventSubclass = 0  and DatabaseID = db_id() ; 

        update @temp_trace set ddl_operation = 'CREATE' where event_class = 46;
        update @temp_trace set ddl_operation = 'DROP' where event_class = 47;
        update @temp_trace set ddl_operation = 'ALTER' where event_class = 164; 

        select @d1 = min(start_time) from @temp_trace 
        set @diff= datediff(hh,@d1,getdate())
        set @diff=@diff/24; 
        
        select  @diff as difference
        ,       @d1 as date
        ,       object_type as obj_type_desc 
        ,       (dense_rank() over (order by obj_name,object_type ) )%2 as l1 
        ,       (dense_rank() over (order by obj_name,object_type,start_time ))%2 as l2
        ,       *
        from @temp_trace where object_type not in (21587) -- don't bother with auto-statistics as it generates too much noise
        order by start_time desc;
end else 
begin 
        Select top 0 1 as difference,   1 as date, 1 as obj_type_desc,  1 as l1, 1 as l2,       1 as obj_name,  1 as obj_id, 1 as database_name,        1 as start_time, 1 as event_class, 1 as event_subclass, 1 as object_type, 1 as server_name, 1 as login_name, 1 as user_name, 1 as application_name, 1 as ddl_operation  
end  
2 июн 09, 10:09    [7254408]     Ответить | Цитировать Сообщить модератору
 Re: Кто последний изменил хранимую процедуру  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
SSMS Standard Reports.zip
2 июн 09, 10:12    [7254416]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить