现在我要在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.

解决方案 »

  1.   

    2008确实不能用LOG EXPLORE可以考虑用定时作业记录日志操作
      

  2.   

    只看晚上11-12 点的时候时候的日志 -------- 这个到底该如何实现?SELECT TOP 5 total_worker_time, last_worker_time,
        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详细时间列表 ??    定时作业记录日志操作----具体该如何做 ?    
      

  3.   

    程序代码 Create TABLE DBLoger(
         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
      

  4.   

    LOG EXPLORE  我重新装sql2005发现LOG EXPLORE读日志非常流畅.但是 2008 总是提示
    can't resovle database names .家里电脑2005 是ok
    公司2008死活 不通过
      

  5.   

    select * from ::fn_dblog(null,null) where [begin time]
      

  6.   

    Aplex2010 好强大的工具  可惜 只是trial version 没有注册的
     在xp无与伦比 . 但是在win server2008 很古怪 很多信息抓不到 
      

  7.   

    满查询没有 mysql slow.log好用 他只能从 
    写个作业  每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下的
    轻松实现  .