SharePoint 2010 日志数据库






4.75/5 (6投票s)
直接查询 SharePoint 日志数据库的四个原因
引言
还记得我的帖子“不直接查询 SharePoint 数据库的五个理由”吗?我曾多次告诫您不要直接查询 SharePoint 数据库,并提到了它的缺点和问题。如果您还没有阅读这篇文章,我建议您在继续之前先阅读一下。
我没有自相矛盾!第一篇文章是关于 SharePoint 2007 的,但现在我说的是 SharePoint 的新版本和令人惊叹的 2010 版本。
所以你可能会问“SharePoint 日志数据库到底是什么?” 问得好!
要回答您,请启动 SQL Management Studio,然后展开您的数据库。您会注意到一个新的数据库,名为WSS_Logging
。
SharePoint 2010 通过记录到 WSS_Logging
数据库来跟踪它所做的一切。它聚合了 14 hive 下文本文件中积累的所有原始日志数据,并将其导入到这个很棒的日志数据库中。这是 Microsoft 乐于让开发人员直接读取、查询和构建报告的 唯一 SharePoint 数据库。 您可以随意使用许多有用的视图,我现在将向您展示的是“RequestUsage
”视图。
每次用户访问生成页面请求时,都会将一条记录插入到此数据库中的一个分区表中,并且“RequestUsage
”视图会很友好地联合所有分区表中的数据,并将其呈现给您,以便在您的自定义解决方案(Web 部件、报告、应用程序页等)中使用。 示例如下
让我们更深入地了解幕后发生的事情以及这些数据的来源。
- 导航至 SharePoint 2010 管理中心 > 监控 > 配置使用情况和运行状况数据收集。
- 现在,让我们通过指定要记录到 14 hive 下的文本文件中的事件来配置数据收集。 使用下面的快照来配置您自己的 SharePoint 系统。
- 您是否注意到“日志收集计划”部分? 这意味着有一个计时器作业会收集 14 hive 下的日志文件,并将您指定的事件复制到您的日志数据库中,以便稍后用于报告目的。 您甚至可以根据服务器的负载模式来安排此计时器作业,正如您将在下一步中看到的那样。
- 我打开了我最喜欢的故障排除工具(SharePoint Manager 2010)来跟踪这个作业。 正如您在下图中看到的,我已经配置了中央管理中的“Microsoft SharePoint Foundation 使用情况数据导入”作业每分钟运行一次。
- 出于好奇,我决定使用 .NET Reflector 来检查这个计时器作业是如何工作的,我注意到了两件事。
第一个是构造函数中指定的作业锁定类型是
SPJobLockType.None
,它指示 Timer Service 在场中的所有 Web 前端上运行此作业,这是有道理的!Job 和 None LockTypes 之间的区别在于 Job LockType 确保计时器作业仅在一台服务器上运行,但 None 确保该作业在每台服务器上运行。
第二个是
execute
方法中的ImportUsageData()
方法,该方法在计时器作业运行时被调用,此方法负责将事件从日志文件复制到您的日志数据库中。 如果您需要了解更多信息,可以进一步展开此方法。
那么,我所说的这四个好处是什么呢?
- Microsoft 完全支持直接从日志数据库读取、查询和构建报告。 第三方应用程序甚至可以将它们的数据写回其中。
- 它在所有 SharePoint 部署上默认启用。
- 保留策略是可自定义的,允许您管理要累积多少数据(默认为 14 天,但这可以使用 PowerShell 进行修改)
- Schema 将被记录,这将肯定有助于它的使用。
我还想指出的是,日志数据库构成了大量使用情况和运行状况报告的基础。 例如,Web Analytics 功能在很大程度上依赖于它,因为它从日志数据库中提取数据,对其进行一些额外的处理,将其放入分析数据库中,然后基于这些数据生成报告。
历史
- 2010 年 4 月 6 日:初始帖子