现在我要在sqlserver 2008
在昨天晚上11-12 点的时候,如何查在线生产数据库有无工作异常的日志?
(mysql 是 可以看到慢查询详细时间点 和实时的更新记录 这2个不知道如何在mysql里实现)
失败纪录
1 log explore发现不能用(点总是说连接不成功)2 DBCC LOG(<databasename >, <type of output>)
这个命令 实在过大, 我只看晚上11-12 点的时候时候的日志 (mysql 的bin.log 是可以的
问sqlserver 如何察看某个时间段的工作情况 ?
) 这个命令不能给出某个时间区间的所有 更新语句或者查询语句
.net程序纪录的日志报下面错误
Transaction (Process ID 72) was deadlocked on lock | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
在昨天晚上11-12 点的时候,如何查在线生产数据库有无工作异常的日志?
(mysql 是 可以看到慢查询详细时间点 和实时的更新记录 这2个不知道如何在mysql里实现)
失败纪录
1 log explore发现不能用(点总是说连接不成功)2 DBCC LOG(<databasename >, <type of output>)
这个命令 实在过大, 我只看晚上11-12 点的时候时候的日志 (mysql 的bin.log 是可以的
问sqlserver 如何察看某个时间段的工作情况 ?
) 这个命令不能给出某个时间区间的所有 更新语句或者查询语句
.net程序纪录的日志报下面错误
Transaction (Process ID 72) was deadlocked on lock | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
max_worker_time, min_worker_time,
SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset END
- qs.statement_start_offset)/2) + 1) as statement_text
FROM sys.dm_exec_query_stats as qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as st
ORDER BY max_worker_time DESC
这个语句仅仅是看最慢sql, 但是没有sql详细时间列表 ?? 定时作业记录日志操作----具体该如何做 ?
LoginName nvarchar(50),
HostName nvarchar(50),
EventInfo nvarchar(500),
Parameters int,
EventType nvarchar(100)
)
接着再建一个触发器,在用户对表进行增/删/改时触发,将执行的SQL语句记录到日志表中: 程序代码Create TRIGGER Loger ON student
FOR Insert, Update, Delete
AS
SET NOCOUNT ON
Create TABLE #T(EventType nvarchar(100),Parameters int,EventInfo nvarchar(500))
Insert #T exec('dbcc inputbuffer(' + @@spid + ')')
--记录到日志表
Insert INTO DBLoger(LoginName,HostName,EventInfo,Parameters,EventType) Select suser_sname(),host_name(),EventInfo,Parameters,EventType FROM #T
can't resovle database names .家里电脑2005 是ok
公司2008死活 不通过
在xp无与伦比 . 但是在win server2008 很古怪 很多信息抓不到
写个作业 每1小时执行一次
SELECT TOP 1000 total_worker_time/1000 AS [TotalCPU_time(ms)],execution_count [RunTimes], qs.total_worker_time/qs.execution_count/1000. as [AvgCPU_Time(ms)]
, SUBSTRING(qt.text,qs.statement_start_offset/2+1, (case when qs.statement_end_offset = -1 then DATALENGTH(qt.text) else qs.statement_end_offset end -qs.statement_start_offset)/2 + 1) as [SQLinCpu]
, qt.text [completeSQL]
, qt.dbid
, dbname=db_name(qt.dbid)
, qt.objectid
,object_name(qt.objectid,qt.dbid) ObjectName
,getdate() as curTime
FROM sys.dm_exec_query_stats qs cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt
where qs.total_worker_time/qs.execution_count/1000>300
ORDER BY total_worker_time DESC;他从查询缓存理找出慢语句分析(有必要对sqlserver存储引擎深入了解 ) 上面的可以修改的 linux下的
轻松实现 .