在 SharePoint Server 中运行使用只读数据库的服务器场

适用于:yes-img-132013 yes-img-162016 yes-img-192019 yes-img-seSubscription Edition no-img-sopSharePoint in Microsoft 365

可以使用 Microsoft PowerShell 或 SQL Server 工具将您的 SharePoint Server数据库设置为只读。 您使用的工具取决于已部署的环境的类别、计划要求以及您与您的组织签订的服务级别协议。

开始之前

开始此操作之前,请查看有关构建只读服务器场的设置的以下信息。

如果满足下列条件之一,服务器场将被视为只读:

  • 所有内容数据库设置为只读。

  • 服务应用程序数据库设置为只读。

    注意

    当 Search Service 应用程序的数据库设置为只读时,该应用程序不运行。

只读服务器场中的功能和用户体验取决于设置为只读的数据库。

注意

使用只读内容和服务应用程序数据库的服务器场可能是灾难恢复环境的一部分,也可能是高可用性维护、更新或升级环境的一部分。

为用户准备只读体验

如果您打算向用户授予对只读网站或服务器场的访问权,则应设置用户能够在此网站上完成的任务以及用户界面 (UI) 的行为的预期。

使用只读内容数据库的网站

使用设置为只读的内容数据库的网站的用户体验具有以下特征:

  • 主页顶部的语句声明了该网站为只读。

  • 不需要写入内容数据库的常见任务完全可用。

  • 需要写入内容数据库的常见任务不可用,原因是任务的 UI 不可用,或用户无法应用更改以完成任务。

  • 需要写入内容数据库的一些常见任务显示为可用,但返回错误。

使用只读服务应用程序数据库的服务器场

使用设置为只读的服务应用程序数据库的服务器场上的用户体验具有以下特征:

  • 不需要写入服务数据库的常见任务完全可用。

  • 需要写入服务数据库的所有常见任务似乎可用,但返回错误。

将内容数据库设置为只读

在将内容数据库设置为只读之前,可能需要确定与特定网站集关联的内容数据库。

使用 PowerShell 确定与网站集关联的内容数据库

  1. 确认您具有以下成员身份:
  • SQL Server 实例上的 securityadmin 固定服务器角色。

  • 要更新的所有数据库上的 db_owner 固定数据库角色。

  • 运行 PowerShell cmdlet 的服务器上的 Administrators 组。

    管理员可以使用 Add-SPShellAdmin cmdlet 授予使用 SharePoint Server cmdlet 的权限。

    注意

    [!注意] 如果您不具有这些权限,请联系您的安装管理员或 SQL Server 管理员来请求权限。 有关 PowerShell 权限的其他信息,请参阅 Add-SPShellAdmin

  1. 启动 SharePoint 命令行管理程序。

  2. 在 PowerShell 命令提示符处,键入以下命令:

Get-SPContentDatabase -Site <Site URL>

其中:

  • <Site URL> 是要了解其关联的内容数据库的网站集 URL。

此命令返回与此网站关联的内容数据库。

有关详细信息,请参阅 Get-SPContentDatabase

注意

[!注意] 我们建议您在执行命令行管理任务时使用 Windows PowerShell。 Stsadm 命令行工具已被弃用,仍然包含该工具是为了支持与之前产品版本的兼容性。

可以按这些步骤操作,使用 SQL Server Management Studio 将读/写内容数据库设置为只读。 还可以使用 Transact-SQL ALTER DATABASE 语句将内容数据库设置为只读。 有关详细信息,请参阅 ALTER DATABASE (Transact-SQL)

重要

[!重要说明] 请勿对故障转移环境中已经执行了日志传送或镜像的数据库执行此过程。 如果将故障转移环境中已经执行了日志传送或镜像的数据库设置为只读,则不会执行任何更新且备份将无效。

使用 SQL Server 将内容数据库设置为只读

  1. 确认执行此过程的用户帐户是每个数据库中的 db_owner 固定数据库角色的成员。

  2. 启动 SQL Server Management Studio。

  3. 右键单击要设置为只读的内容数据库,然后单击“属性”

  4. 选择“选项”页,然后在“其他选项”列表中,滚动至“状态”部分。

  5. 在“数据库为只读”行中,单击“False”旁边的箭头,选择“True”,然后单击“确定”

  6. 对于所有其他内容数据库重复此过程。

    注意

    [!注意] 在将数据库设置为只读后,将停止所有连接(但设置只读标志的连接除外)。 设置了只读标志后,将启用其他连接。

如果与只读内容数据库相关联的网站集锁定状态以前为"无"、"禁止添加"或"只读",则该网站集会自动设置为只读。 如果该网站集的锁定状态以前为"禁止访问",则在数据库锁定状态更改时,它仍然保持"禁止访问"状态。

将服务应用程序数据库设置为只读

可以将任何服务应用程序数据库设置为只读。 但是,如果将某些服务应用程序的数据库(如与 Search 和 Project Server 关联的那些数据库)设置为只读,则这些应用程序将不运行。

使用 SQL Server 将服务应用程序数据库设置为只读

  1. 确认执行此过程的用户帐户是每个数据库中的 db_owner 固定数据库角色的成员。

  2. 启动 SQL Server Management Studio。

  3. 右键单击要设置为只读的数据库,然后单击“属性”

  4. 选择“选项”页,然后在“其他选项”列表中,滚动至“状态”部分。

  5. 在“数据库为只读”行中,单击“False”旁边的箭头,选择“True”,然后单击“确定”

  6. 根据需要对其他服务应用程序数据库重复此操作。

    注意

    [!注意] 在将数据库设置为只读后,将停止所有连接(但设置只读标志的连接除外)。 设置了只读标志后,将启用其他连接。