SharePoint 事件 7363:对象缓存:缓存使用的超级读者帐户没有足够的权限访问SharePoint数据库。
转自MSND:http://technet.microsoft.com/zh-cn/library/ff758656(v=office.14)
对象缓存存储 Microsoft SharePoint Server 2010 中项目的相关属性。发布功能在呈现网页时使用此缓存中的项目。对象缓存的目标是减少运行 SQL Server 的计算机上的负载,并缩短请求延迟和增加吞吐量。对象缓存以两个自带用户帐户之一的身份来进行查询:“门户超级用户”和“门户超级读者”。必须正确配置这两个用户帐户,确保对象缓存正常运行。“门户超级用户”帐户必须对 Web 应用程序具有“完全控制”权限。“门户超级读者”帐户必须对 Web 应用程序具有“完全读取”权限。
重要: |
---|
“门户超级用户”和“门户超级读者”帐户必须是单独的帐户,不得用于登录网站。 |
本文介绍为什么必须配置以及如何配置这些对象缓存用户帐户。有关对象缓存的信息,请参阅缓存设置操作 (SharePoint Server 2010)。
在 SharePoint Server 2010 中,对项目的查询与进行查询的用户帐户关联在一起。发布功能的各个部分所进行查询的结果缓存在对象缓存中。这些结果根据执行查询的用户进行缓存。若要优化缓存命中率和内存要求,必须根据用户能否查看草稿项目来进行查询。当发布控件请求对象缓存进行查询以获取控件数据时,缓存不以提出请求的用户身份进行查询,而是以“门户超级用户”和“门户超级读者”帐户的身份分别进行一次查询。这两次查询的结果存储在对象缓存中。“门户超级用户”帐户的结果包括草稿项目,“门户超级读者”帐户的结果仅包括已发布项目。然后对象缓存会检查发起请求的用户的访问控制列表 (ACL),并根据该用户能否查看草稿项目将相应的结果返回给该用户。通过向 Web 应用程序添加“门户超级用户”和“门户超级读者”帐户,缓存只能为两个用户存储结果。这增加了针对查询返回的结果数,并减少了存储缓存所需的内存量。
默认情况下,“门户超级用户”是网站的系统帐户,“门户超级读者”帐户是 NT Authority\Local Service。使用自带帐户存在两个主要问题。
-
第一个问题是某些项目已签出到系统帐户,因此当进行的查询包括这些项目时,将返回项目的签出版本而不是最新发布的版本。这之所以是一个问题,因为这并不是用户期望返回的结果,因此缓存必须进行第二次查询以获取正确版本的文件。每当查询请求包含这些项目时,都会对服务器性能产生负面影响。对于已签出项目的任何用户,如果该用户的帐户被设置为“门户超级用户”帐户,也会发生同样的问题。这就是配置为“门户超级用户”和“门户超级读者”的帐户不应该用于登录网站的原因。这样可确保用户不会无意地签出项目而导致出现性能问题。
-
默认的“门户超级读者”帐户是 NT Authority\Local Service,这在声明身份验证应用程序中不会被正确解析。因此,如果没有为声明身份验证应用程序明确配置“门户超级读者”帐户,浏览到此应用程序下的网站集会导致出现“拒绝访问”错误,即使对网站管理员也是如此。对于显式使用对象缓存的任何功能(例如 SharePoint Server 发布基础架构、元数据导航、内容查询 Web 部件或导航),任何使用这些功能的网站都会发生此错误。
本文内容:
使用管理中心和 Windows PowerShell 配置对象缓存用户帐户
可以使用管理中心和 Windows PowerShell 为对象缓存配置用户帐户。必须先在管理中心网站中创建帐户,然后使用 Windows PowerShell 将帐户添加到 Web 应用程序中。必须将用户帐户添加到每个 Web 应用程序中。
警告: |
---|
在此过程完成后,必须重置 Internet Information Services (IIS) 以应用对 Web 应用程序所做的更改。请确保在对连接到网站的用户影响最小的情况下执行此过程。有关 IISReset 的详细信息,请参阅 IIS 重置活动(该链接可能指向英文页面)。 |
使用管理中心创建用户帐户
-
确认您拥有以下管理凭据:
-
若要在管理中心中创建用户帐户,您必须是运行 SharePoint 管理中心网站的计算机上 Farm Administrators 组的成员。
-
-
在管理中心网站上的“应用程序管理”部分,单击“管理 Web 应用程序”。
-
单击想要配置的 Web 应用程序的名称。
-
在“Web 应用程序”选项卡上的“策略”组中,单击“用户策略”。
-
在“Web 应用程序的策略”窗口中,单击“添加用户”。
-
从“区域”列表中,选择“所有区域”,然后单击“下一步”。
-
在“用户”框中,键入“门户超级用户”帐户的用户名。
-
单击“检查名称”图标以确保帐户名称可以被应用程序服务器上的身份验证提供程序解析。
-
在“选择权限”部分,选中“完全控制 - 拥有完全控制权限”框。
-
单击“完成”。
-
对“门户超级读者”帐户重复步骤 5 到步骤 8。
-
在“选择权限”部分,选中“完全读取 - 拥有完全只读权限”框。
-
单击“完成”。
-
记下“对象缓存超级读者”和“对象缓存超级用户”帐户的名称在“用户名”列中的显示方式。显示的字符串会有所不同,具体取决于您是否对 Web 应用程序使用声明身份验证。
使用 Windows PowerShell 向 Web 应用程序添加用户帐户
-
确认您满足以下最低要求:请参阅 Add-SPShellAdmin。
-
复制以下代码并粘贴到文本编辑器(如记事本)中:
$wa = Get-SPWebApplication -Identity "<WebApplication>" $wa.Properties["portalsuperuseraccount"] = "<SuperUser>" $wa.Properties["portalsuperreaderaccount"] = "<SuperReader>" $wa.Update()
-
将以下占位符替换为相应值:
-
<WebApplication> 是要将帐户添加到的 Web 应用程序的名称。
-
<SuperUser> 是要使用的“门户超级用户”帐户,显示在前面过程的步骤 14 中提到的“用户列”字段中。
-
<SuperReader> 是要使用的“门户超级读者”帐户,显示在前面过程的步骤 14 中提到的“用户列”字段中。
-
-
保存文件,将其命名为 SetUsers.ps1。
注意: 可以使用其他文件名,但必须将 ANSI 编码的文件保存为扩展名为 .ps1 的文本文件。
-
关闭文本编辑器。
-
在“开始”菜单上,单击“所有程序”。
-
单击“Microsoft SharePoint 2010 产品”。
-
单击“SharePoint 2010 Management Shell”。
-
转到保存该文件的目录。
-
在 Windows PowerShell 命令提示符处,键入以下命令: ./SetUsers.ps1
-
重置 Internet Information Services (IIS)。有关 IISReset 的详细信息,请参阅 IIS 重置活动(该链接可能指向英文页面)