SQL Server 日志分析

 

4.6  通过日志查看服务器的运行情况

SQL Server 2005可以将某些系统事件和用户自定义的事件记录到SQL Server错误日志和Windows应用程序日志中。这两种日志都会自动标上时间。

4.6.1  在【事件查看器】中查看服务器的运行情况

SQL Server 2005服务器的启动、关闭和暂停动作,都会产生一个事件记录,这个记录将会记在Windows的【事件查看器】中。如果在4.5.4节中为SQL Server 2005服务器设置的安全性里,设置了登录审核的话,那么只要符合登录审核条件的事件记录,也会记在Windows的【事件查看器】中,下面介绍一下查看 SQL Server 2005事件记录的办法。

(1)在计算机的【开始】菜单à【管理工具】à【事件查看器】,有些读者的菜单可能和笔者的不一样,没关系,只要是找到【事件查看器】程序就行了。

(2)在如图4.49所示【事件查看器】对话框,选择【事件查看器(本地)】à【应用程序】选项,在右边的列表框里可以看到所有的事件记录列表。

图4.49 【事件查看器】对话框

(3)双击其中一个事件,将弹出如图4.50所示的【事件属性】对话框,在这里可以看到事件的详细内容。本例中是审核成功信息。通过这一项可以看出是否有黑客成功入侵。

图4.50 【事件属性】对话框

(4)在【事件查看器】里有可能记录了各种不同应用程序的事件记 录,如果只想查看和SQL Server有关的事件记录的话,可以右击【应用程序】,在弹出的快捷菜单里选择【查看】à【筛选】。如图4.51所示的【应用程序属性】对话框。在这里 可以筛选事件类型、事件来源、类别、事件时间等。具体筛选例子就不赘述了。

图4.51 【应用程序属性】对话框

注意:在事件查看器里的【安全性】、【系统】里,也会记载着于SQL Server 2005相关的事件记录,不要忘记查看它们。在Windows应用程序日志里,不仅仅记录数据库启动停止和身份审核信息,还会完整地记录Windows操作系统上发生的事件,以及SQL Server和SQL Server代理中的事件。

4.6.2  2005新增功能:通过日志查看器查看SQL Server日志

在SQL Server Management Studio中查看SQL Server日志的方法如下:

(1)启动【SQL Server Management Studio】并连接到SQL Server服务器上。

(2)在【对象资源管理器】中,屏开【实例名】à【管理】à【SQL Server日志】,如图4.52所示,可以看到SQL Server的日志存档。

图4.52 查看SQL Server日志

(3)双击某一个日志存档,如图4.53所示对话框【日志文件查看器】窗口,可以查看日志的具体内容。

图4.53 【日志文件查看器】窗口

4.6.3  在LOG文件夹中查看SQL Server错误日志

SQL Server 2005还会将SQL Server的错误日志存在系统盘的“D:/Program Files/Microsoft SQL Server/MSSQL.X/MSSQL/LOG”目录下,文件名“ERRORLOG”和“ERRORLOG.X ”,其中“X”是数字。用记事本可以打开来查看。



查看SQL SERVER的事务日志:
在SQL SERVER 7.0和2000中,可以用下面的命令查看:

DBCC log ( {dbid|dbname}, [, type={0|1|2|3|4}] )

参数:
Dbid or dbname - 任一数据库的ID或名字

type - 输出结果的类型:

0 - 最少信息(operation, context, transaction id)

1 - 更多信息(plus flags, tags, row length)

2 - 非常详细的信息(plus object name, index name,page id, slot id)

3 - 每种操作的全部信息

4 - 每种操作的全部信息加上该事务的16进制信息

默认 type = 0

要查看 ZHOZDB数据库的事务日志可以用以下命令:
DBCC log (zhozdb)

SQL Server压缩日志及数据库文件大小

1、清空日志

DUMP  TRANSACTION  ZHOZDB  WITH NO_LOG


2、截断事务日志

BACKUP LOG ZHOZDB WITH NO_LOG  


3、收缩数据库文件(如果不压缩,数据库的文件不会减小)

企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件

--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。

--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。

也可以用SQL语句来完成:

--收缩数据库

DBCC SHRINKDATABASE(客户资料)


--收缩指定数据文件,1是文件号,可以通过这个语句查询到:

select * from sysfiles DBCC SHRINKFILE(1)


4、为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)

a.分离数据库:

企业管理器--服务器--数据库--右键--分离数据库

b.在我的电脑中删除LOG文件

c.附加数据库:

企业管理器--服务器--数据库--右键--附加数据库

此法将生成新的LOG,大小只有500多K

或用代码:

下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。

a.分离

EXEC sp_detach_db @dbname = 'pubs'


b.删除日志文件

c.再附加:

EXEC sp_attach_single_file_db @dbname = 'pubs', @physname = 'c:/Program Files/Microsoft SQL Server/MSSQL/Data/pubs.mdf'


5、为了以后能自动收缩,做如下设置:

企业管理器--服务器--右键数据库--属性--选项--选择“自动收缩”

--SQL语句设置方式:

EXEC sp_dboption 'ZHOZDB', 'autoshrink', 'TRUE'


6、如果想以后不让它日志增长得太大。

企业管理器--服务器--右键数据库--属性--事务日志

--将文件增长限制为xM(x是你允许的最大数据文件大小)

--SQL语句的设置方式:

alter database ZHOZDB modify file(name=逻辑文件名,maxsize=20)


很多朋友在事件查看器看到出现了问题,但大多不知道如何根据这些信息去解决实际碰到的问题,以下是我根据网上的讨论和实践,总结出来的一些经验供大家分享,版主觉得有帮助的话,希望加入精华,不好的话,请勿使用鸡蛋或者砖头等物体,谢谢!  
   
  事件查看器中看到不断出现下面的错误日志。  
   
  事件类型:错误  
  事件来源:TermServDevices  
  事件种类:无  
  事件   ID:1106  
  日期:2004-7-8  
  事件:14:06:37  
  用户:N/A  
  计算机:UBO-WS  
  描述:  
  无法安装打印机。    
  数据:  
  0000:   ba   06   00   00   32   04   00   00       o...2...  
  =================================  
  针对此问题,我们得到事件来源和事件ID分别是   TermServDevices   和   1106  
   
  访问http://eventid.net/search.asp(这是个查询事件里面源和ID信息的很好的站点,免费收费服务都有,英文好的朋友可以直接阅读)将上面的事件来源和事件ID填入搜索关键字里面搜索,得到以下关于此错误的信息:  
  ==============  
  Event   ID:   1106   //错误事件ID  
  Source   TermServDevices     //错误事件源  
  Type   Error     //错误类型  
  Description   The   printer   could   not   be   installed.     //简单描述(无法安装打印机)  
  Details   Comments   and   links   for   event   id   1106   from   source   TermServDevices     //这里有详细链接到具体的讨论中,点击这里  
  ============================  
  接下来点击上文Detail的链接,得到详细的讨论,Comments显示则是一些国外IT朋友对此问题的讨论,很有参考价值,然后Links里面有到微 软知识库的相关问题链接:Q239088   ,   Q294429,由此我们得到两个知识库ID号   239088   和   294429  
   
  微软知识库的链接方式为:http://support.microsoft.com/default.aspx?scid=kb;zh-cn;+知识库ID号  
   
  最后,我们使用以下链接得到了最后的答案,并排错。  
   
  Windows   2000   终端服务服务器记录事件   1111、1105   和   1106  
  http://support.microsoft.com/default.aspx?scid=kb;zh-cn;239088  
   
  Windows   Server   终端服务中的打印机重定向体系结构  
  http://support.microsoft.com/default.aspx?scid=kb;zh-cn;294429


在SQL企业管理器中,管理-SQL   Server日志,打开即可。

在SQL   2000下,可用系统Function來查到。  
   
SELECT   *   From   ::fn_dblog(Default,Default)  

你可能感兴趣的:(sql,windows,数据库,server,服务器,sqlserver,Comments)