我需要找到修改特定存儲過程的人的用戶名。我如何才能找到最後修改日期,在SQL Server 2008中存儲過程的修改用戶
How do I find out when a stored procedure was last modified or compiled in Oracle?
讓我對時間觀念。但是,我如何知道修改它的用戶?
我需要找到修改特定存儲過程的人的用戶名。我如何才能找到最後修改日期,在SQL Server 2008中存儲過程的修改用戶
How do I find out when a stored procedure was last modified or compiled in Oracle?
讓我對時間觀念。但是,我如何知道修改它的用戶?
這可以通過運行以下任何查詢來實現。
SELECT
[procedure] = QUOTENAME(OBJECT_SCHEMA_NAME([object_id]))
+ '.' + QUOTENAME(OBJECT_NAME([object_id])),
last_execution_time,
avg_execution_time = CONVERT(DECIMAL(30,2), total_worker_time * 1.0/execution_count),
max_worker_time
FROM sys.dm_exec_procedure_stats
WHERE database_id = DB_ID()
ORDER BY avg_execution_time DESC;
------------ OR ------------------------------ --------
SELECT
COALESCE(DB_NAME(t.[dbid]),'Unknown') AS [DB Name],
ecp.objtype AS [Object Type],
t.[text] AS [Adhoc Batch or Object Call],
SUBSTRING(t.[text], (qs.[statement_start_offset]/2) + 1,
((CASE qs.[statement_end_offset]
WHEN -1 THEN DATALENGTH(t.[text]) ELSE qs.[statement_end_offset] END
- qs.[statement_start_offset])/2) + 1) AS [Executed Statement]
,qs.[last_execution_time] AS [Last Exec Time]
,qs.[creation_time] AS [Creation Time]
FROM sys.dm_exec_query_stats AS qs
JOIN sys.dm_exec_cached_plans ecp
ON qs.plan_handle = ecp.plan_handle
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS t
where
ecp.objtype = 'Proc'
order by [Last Exec Time] desc
的名字你甚至回答這個問題嗎?這兩個查詢都不會做你所問的問題......在哪一部分查詢中,你是否找到了最近修改過程的用戶? – Sivvy 2012-08-01 20:55:23
你可以試試這個嗎?
SELECT名字,CREATE_DATE,modify_date FROM sys.procedures
我需要修改人員的姓名。它的名字是Sp – kbvishnu 2010-12-09 05:41:07
程序更改系統default trace被跟蹤。只需打開...\MSSQL\LOG
文件夾中的.trc
文件並搜索ALTER PROCEDURE。唯一的問題是默認跟蹤會及時重寫,因此您只能將其用於最近的更改(天 - 周)。
如果你將需要在未來的這個信息,它可能是值得考慮的從EVENTDATA頁面上的CREATE_PROCEDURE和ALTER_PROCEDURE實施DDL triggerDDL events
實例B顯示了一個觸發記錄所有DDL事件,捕獲用戶名。
這裏什麼工作對我來說: -
DECLARE @filename VARCHAR(255)
SELECT @FileName = SUBSTRING(path, 0, LEN(path)-CHARINDEX('\', REVERSE(path))+1) + '\Log.trc'
FROM sys.traces
WHERE is_default = 1;
SELECT gt.HostName,
gt.ApplicationName,
gt.NTUserName,
gt.NTDomainName,
gt.LoginName,
gt.SPID,
gt.EventClass,
te.Name AS EventName,
gt.EventSubClass,
gt.TEXTData,
gt.StartTime,
gt.EndTime,
gt.ObjectName,
gt.DatabaseName,
gt.FileName,
gt.IsSystem
FROM [fn_trace_gettable](@filename, DEFAULT) gt
JOIN sys.trace_events te ON gt.EventClass = te.trace_event_id
WHERE EventClass in (164) --AND gt.EventSubClass = 2
ORDER BY StartTime DESC;
你可以看一下默認的痕跡,容易想出解決辦法。
這是作爲示例顯示的,您需要查看對象:更改EVENT NAME列。
執行下面的SQL腳本,
DECLARE @filename VARCHAR(255)
SELECT @FileName = SUBSTRING(path, 0, LEN(path)-CHARINDEX('\', REVERSE(path))+1) + '\Log.trc'
FROM sys.traces
WHERE is_default = 1;
SELECT gt.HostName,
gt.ApplicationName,
gt.NTUserName,
gt.NTDomainName,
gt.LoginName,
gt.SPID,
gt.EventClass,
te.Name AS EventName,
gt.EventSubClass,
gt.TEXTData,
gt.StartTime,
gt.EndTime,
gt.ObjectName,
gt.DatabaseName,
gt.FileName,
gt.IsSystem
FROM [fn_trace_gettable](@filename, DEFAULT) gt
JOIN sys.trace_events te ON gt.EventClass = te.trace_event_id
WHERE EventClass in (164) --AND gt.EventSubClass = 2
ORDER BY StartTime DESC;
嘗試架構更改歷史報告。
在SQL Server Management Sudio - >右鍵單擊服務器名稱或架構名稱 - >報告 - >標準報告 - >架構更改歷史
這個工作對我來說就像一個魅力。
從here
採取更新的答案 – kbvishnu 2012-02-01 14:27:14
請參閱此鏈接瞭解詳情:http://izlooite.blogspot.in/2010/12/sql-server-how-to-find-user-who-last .html – 2013-11-20 13:00:28