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)