症状
请考虑以下情况:
-
将 Microsoft Forefront Threat Management Gateway 2010 配置为使用 Microsoft Forefront Threat Management Gateway 2010 Service Pack 1 (SP1 SP1 中引入的已阻止类别功能的用户) 。
-
将 Forefront Threat Management Gateway 2010 配置为生成报告,以便监视哪些用户正在重写拒绝规则。
在此方案中,您可能会发现,"顶部覆盖的 URL"表和"热门规则替代用户"表的摘要信息显示不正确的信息,并且值看起来比预期要大很多。
原因
发生此问题的原因是用于汇总此信息的存储过程错误地累积了值,因此前一天的值将滚动到第二天的值中。
解决方法
若要解决此问题,请安装以下 Microsoft 知识库文章中所述的修补程序包:
2649961 Forefront Threat Management Gateway (TMG) 2010 Service Pack 2 汇总 1 若要启用此修补程序,请运行其中一台 Forefront Threat Management Gateway 服务器的 FixSoftBlockSummaries.js 脚本。 可以在任何 Forefront Threat Management Gateway 服务器、阵列节点或企业管理服务器上运行此脚本。
请注意,该脚本枚举所有可用的数组并更正存储过程,以便正确创建摘要信息。 如果将新数组添加到存储,可能需要再次运行脚本。
若要让我们启用此修补程序,请转到"为我修复"部分。 如果你希望自己启用此修复,请转到"让我自己修复"部分。
帮我修复此问题
若要自动启用此修复,请单击 "修复它" 按钮或链接。 然后单击 " 文件下载 "对话框中 的"运行",然后按照修复向导中的步骤操作。
备注
-
在运行此修补程序解决方案之前,请安装 Microsoft 知识库 (KB) 文章 2649961 中所述的修补程序。
-
此向导可能只提供英文版本。 但是,自动修复功能同样适用于其他语言版本的 Windows。
-
如果你不在遇到问题的计算机上,将"修复它"解决方案保存到闪存驱动器或 CD,然后在有问题的计算机上运行它。
然后,转到"这是否修复了问题?"部分。
我自己修复此问题
-
启动记事本。 若要启动记事本,请单击"开始",单击"运行",notepad.exe"打开"框中键入内容,然后单击"确定"。
-
将以下脚本粘贴到新的记事本文件中。
var guidGenerator = new ActiveXObject("Scriptlet.TypeLib");
var fpcRoot = new ActiveXObject("FPC.Root");
try
{
WScript.Echo("Enumerating arrays:");
var arraysCollection = new Enumerator(fpcRoot.Arrays);
for (; !arraysCollection.atEnd(); arraysCollection.moveNext())
{
try
{
var array = arraysCollection.item();
var found = false;
WScript.Echo(" " + array.Name);
var sumDefsCollection = new Enumerator(array.Reports.ReportSummaryDefinitions);
for(; !sumDefsCollection.atEnd(); sumDefsCollection.moveNext())
{
var sumDef = sumDefsCollection.item();
if(sumDef.Name != "spTrimArraySoftBlockSummary")
{
continue;
}
if (sumDef.AggregationStatement.indexOf("@ToDate AS [Date]") < 0)
{
WScript.Echo("---- spTrimArraySoftBlockSummary.AggregationStatement already contains fix, skipping array");
break;
}
found = true;
WScript.Echo("Found summary definition " + sumDef.Name + ", will fix the AggregationStatement");
WScript.Echo("---- Old version start");
WScript.Echo(sumDef.AggregationStatement);
WScript.Echo("---- Old version end");
sumDef.AggregationStatement = sumDef.AggregationStatement.replace(/@ToDate AS \[Date\]/g, "@FromDate AS [Date]");
WScript.Echo("---- New version start");
WScript.Echo(sumDef.AggregationStatement);
WScript.Echo("---- New version end");
break;
}
if (found)
{
WScript.Echo("Updating configuration ID...");
WScript.Echo("Old configuration ID:" + array.Reports.ReportingServicesProperties.ReportingServicesConfigurationId);
array.Reports.ReportingServicesProperties.ReportingServicesConfigurationId = guidGenerator.Guid;
WScript.Echo("New configuration ID:" + array.Reports.ReportingServicesProperties.ReportingServicesConfigurationId);
WScript.Echo("Saving the current configuration...");
array.Save();
WScript.Echo("Waiting for configuration reload...");
array.WaitForReload();
}
}
catch (err)
{
WScript.Echo("An error occurred. Error Decscription: " + err.description);
WScript.Echo("Try running the script as an administrator");
}
}
}
catch (err)
{
WScript.Echo("An error occurred. Error Decscription: " + err.description);
WScript.Echo("Try running the script as an administrator");
} -
将文件另存为FixSoftBlockSummaries.js,然后退出记事本。
-
在服务器上,打开管理命令提示符。
-
使用以下命令运行脚本:
cscript.exe FixSoftBlockSummaries.js
等待脚本完成并同步配置。 之后,将正确创建有关已重写拒绝规则的用户的信息。 该脚本无法修复以前摘要数据的此问题。
此方法是否已修复问题?
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
参考
有关软件更新术语的更多信息,请单击下面的文章编号以查看 Microsoft 知识库中的相应文章:
824684 用于描述 Microsoft 软件更新的标准术语的说明