在 SharePoint Server 中移动所有数据库

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

可以使用 SharePoint 管理中心网站或 SQL Server 工具将所有与 SharePoint Server 关联的数据库移动到新的数据库服务器。

开始之前

本文中介绍的过程说明如何移动以下几种在单台数据库服务器上托管的数据库:

  • 配置数据库

  • 管理中心内容数据库

  • 内容数据库

  • 服务应用程序数据库

重要

[!重要说明] 要在同一 SQL Server 实例中移动数据库文件,我们建议您使用 ALTER DATABASE 语句的 FILENAME 子句。 有关详细信息,请参阅 移动用户数据库

注意

要将数据库移动到 SQL Server 的另一实例或移动到另一服务器,我们建议您遵循数据库分离和附加 (SQL Server)SQL Server 数据库的备份和还原中的过程。

下面是执行此过程所需的最低权限:

  • 您必须是 SharePoint 组“Farm Administrators”的成员。

  • 在运行 SharePoint 管理中心网站的计算机上,您必须是 Administrators 组的成员。

  • 在移出数据库的数据库服务器上,您必须是以下组的成员:

    • Administrators 组

    • db_backupoperator 固定数据库角色

  • 在移入数据库的数据库服务器上,您必须是以下组的成员:

    • Administrators 组

    • db_owner 固定数据库角色

在某些环境中,您必须配合数据库管理员来执行移动过程。 请务必遵循适用的策略和准则来管理数据库。

重要

[!重要说明] 如果移动数据库,在移动过程完成前,所有场网站和资产对用户都不可用。 请在非正常工作时间完成此操作。

移动所有数据库

若要将所有数据库从一台数据库服务器移动到另一台数据库服务器,必须在 SharePoint Server 和 SQL Server 中工作。

开始此操作之前,请查看此过程中的步骤:

  1. 准备新的数据库服务器。

  2. 关闭所有打开的 SharePoint 命令行管理程序 窗口。

  3. 停止与 SharePoint Server 和 Internet Information Services (IIS) 相关的所有服务。

  4. 从当前 SQL Server 实例中分离数据库。

  5. 将与数据库关联的所有文件(.mdf, .ndf 和 .ldf)复制或移动到运行 SQL Server 的新目标服务器。

  6. 确保在新的目标数据库服务器上正确配置数据库的所有 SQL Server 登录名、固定服务器角色、固定数据库角色和权限。

    注意

    [!注意] 您移动数据库的目标服务器必须具有与当前 SQL Server 实例相同的数据库信息。 有关如何执行此操作的详细信息,请参阅如何在 SQL Server 实例之间传输登录和密码。 有关详细信息,请参阅服务器级别角色数据库级别的角色

  7. 将数据库附加到运行 SQL Server 的新目标服务器。

  8. 使用 SQL Server 连接别名指向新的数据库服务器并更新所有 Web 服务器。

    如果不想使用 SQL Server 连接别名,请使用以下过程之一来更新 SharePoint Server 场的数据库连接。

  • 方案 1:如果使用 SharePoint Server 和 SQL Server Always On 可用性组实现高可用性或灾难恢复,请使用此过程更新数据库连接。

  • 方案 2:如果必须使用手动步骤,或者将数据库从 SharePoint Server 单服务器场角色安装移至新的单服务器场角色安装,则使用此过程。

  1. 重新启动您在步骤 3 中停止的所有服务。

准备新的数据库服务器

使用 针对 SharePoint Server 配置 SQL Server 安全性 中的过程配置新的数据库服务器。

新的数据库服务器必须运行与现有数据库服务器相同的 Windows Server 和 SQL Server 版本或以下版本之一:

对于 SharePoint Server 2019:

  • Windows Server 2019

  • Windows Server 2016

  • SQL Server 2016

  • SQL Server 2017

对于 SharePoint Server 2016:

  • Windows Server 2012 R2

  • Windows Server 2016

  • SQL Server 2014 Service Pack 1 (SP1)

  • SQL Server 2016

对于 SharePoint 2013:

  • Windows Server 2008 R2

  • Windows Server 2008 R2 Service Pack 1 (SP1)

  • Windows Server 2012

  • SQL Server 2008

  • SQL Server 2012

  • SQL Server 2014

现有 SharePoint Server 和 Windows Server 的版本还必须支持新 SQL Server 的版本,在该版本中将删除 DB。 有关详细信息,请参阅 SharePoint Server 2016 的硬件和软件要求SharePoint 2013 的硬件和软件要求

关闭 SharePoint 命令行管理程序 的所有打开的会话

  1. 关闭所有打开的 SharePoint 命令行管理程序 窗口和所有打开的命令提示符窗口。

停止服务器场

  1. 在场中的所有 SharePoint 服务器上,停止以下服务:
  • SharePoint 管理

  • SharePoint 计时器

  • SharePoint 跟踪

  • SharePoint 用户代码主机

  • SharePoint VSS 编写器

  • World Wide Web 发布服务

  • SharePoint Server Search 16

  1. 在场中的所有 SharePoint 服务器上,在命令提示符处键入 iisreset /stop

分离数据库

  1. 在原始数据库服务器上的 SQL Server Management Studio 中,将想要移动的数据库与附加该数据库的实例分离。 如果正在运行多个数据库,您可能需要运行 Transact-SQL 脚本来分离数据库。

    如果存在以下情况之一,则无法分离数据库:

将数据库文件移至新服务器

  1. 确认执行此过程的用户帐户是以下组的成员:

    在移出数据库的数据库服务器上,您必须是以下组的成员:

  • Administrators 组

  • db_backupoperator 固定数据库角色

    在移入数据库的数据库服务器上,您必须是以下组的成员:

  • Administrators 组

  • db_owner 固定数据库角色

  1. 使用 Windows 资源管理器查找与要移动的每个数据库关联的 .mdf、.ldf 和 .ndf 文件。

  2. 将这些文件复制或移动到运行 SQL Server 的新计算机上的目标目录中。

在新服务器上设置权限

  1. 确认执行此过程的用户帐户是以下组的成员:
  • Administrators 组

  • db_owner 固定数据库角色

  1. 在目标数据库服务器上,启动 Management Studio 并将登录凭据和权限从原始实例传输到目标实例。 建议您通过运行脚本来传送权限。 如何在 SQL Server 实例之间传输登录名和密码中提供了示例脚本。

    有关如何在实例之间传送 SQL Server 元数据的详细信息,请参阅当数据库在其他服务器实例上可用时管理元数据

将数据库附加到 SQL Server 的新实例

  1. 确认执行此过程的用户帐户是以下组的成员:
  • Administrators 组

  • db_owner 固定数据库角色

  1. 在目标数据库服务器上,将数据库附加到新实例。 有关详细信息,请参阅附加数据库sp_attach_db (Transact-SQL)

以下过程提供了连接到新 SQL Server 实例或更新数据库连接的方法。 请使用最适合您的 SharePoint Server 场环境的过程。

重要

如果在移动数据库之前使用的是 SharePoint Server 和 SQL Server Always On 可用性组,则应指向 AG 列表器。 如果要从单服务器场迁移到 AlwayOn 可用性组,则应使用 cliconfg.exe。

通过设置 SQL Server 连接别名将 Web 应用程序指向新数据库服务器

  1. 此过程必须在连接到托管数据库的 SQL Server 实例的 SharePoint Server 服务器场中的所有服务器上执行。

  2. 确认执行此过程的用户帐户是以下组的成员:

  • Administrators 组

  • db_owner 固定数据库角色

  1. 启动 SQL Server 客户端网络实用工具 (cliconfg.exe) 。 此实用工具通常位于 C:\Windows\SysWOW64 和 C:\Windows\System32 文件夹中。

  2. 在“常规”选项卡上,确认 TCP/IP 已启用。

  3. 在“别名”选项卡上,单击“添加”。 此时会显示“添加网络库配置”窗口。

  4. 在“服务器别名”框中,输入 SQL Server 当前实例的名称。

  5. 在“网络库”区域,单击“TCP/IP”

  6. 在“连接参数”区域的“服务器名称”框中,输入要与别名关联的新服务器名称和实例,然后单击“确定”。 这是承载 SharePoint Server 数据库的新服务器的名称。

  7. 在连接到 SQL Server 新实例的服务器场中的所有服务器上重复步骤 3 到 8。

  8. 可选。 如果你的环境依赖于 System Center 2012 - Data Protection Manager (DPM) 或使用卷影复制服务框架的第三方应用程序进行备份和还原,则必须在每个 Web 服务器或应用程序服务器上运行 SQL Server 安装程序来安装 SQL Server 连接组件。 有关详细信息,请参阅使用安装向导(安装程序)安装 SQL Server 2014 以及 Windows Server 安装和升级

你可以使用这些 Microsoft PowerShell cmdlet,通过 SharePoint Server 来部署、管理和删除 SQL Server 中的可用性组:

  • Add-DatabaseToAvailabilityGroup

  • Remove-DatabaseFromAvailabilityGroup

  • Get-AvailabilityGroupStatus

如果使用 SharePoint Server 和 SQL Server Always On 可用性组实现高可用性或灾难恢复,请使用以下过程更新数据库连接。

方案 1:使用 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 命令提示符处,键入以下命令:

Add-DatabaseToAvailabilityGroup -AGName "<AGGroupName>" -DatabaseName "<DatabaseName>" [-FileShare "<\\server\share>"]

其中:

  • <AGGroupName> 是可用性组的名称。

  • <DatabaseName> 为要添加到可用性组的数据库的名称

  • 如果使用可选的 -FileShare 参数, <则 \server\share> 是服务器的名称和使用的共享。

  1. 针对您移动的所有数据库重复这些步骤,包括配置和管理中心内容数据库。

在下列情况下,使用下一过程:

  • 如果您必须使用手动步骤

  • 如果将数据库从 SharePoint Server 2016 单个服务器场角色类型移动到新的单个服务器场角色类型,或从 SharePoint 2013 单个服务器场安装移动到新的单个服务器安装。

    注意

    [!注意] 单服务器场角色会替换以前 SharePoint Server 版本中的独立安装模式。 有关详细信息,请参阅 SharePoint Server 2016 中的 MinRole 服务器角色概述

  • 如果您使用可用性组,则必须适当地将数据库手动添加到可用性组,以实现其高可用性/灾难恢复支持。 有关详细信息,请参阅将数据库添加到可用性组 (SQL Server)

  • 如果您使用 SQL 镜像,则请确保对镜像进行了适当设定。 有关详细信息,请参阅设置数据库镜像 (SQL Server)数据库镜像 (SQL Server)

方案 2:使用 Microsoft PowerShell 更新数据库连接的具体步骤

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

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

$db = Get-SPDatabase -Identity <guid>

其中 <GUID> 是移动的数据库的 ID。

注意

使用不带参数的 Get-SPDatabase 可查看具有 GUID 的所有数据库的列表。

$db.ChangeDatabaseInstance("<DBServerName>")

其中 <,DBServerName> 是新 SQL Server 的名称或别名,或者是 Always On 可用性组侦听器 DNS 名称。

$db.Update()
  1. 如果您使用 SQL Server 数据库镜像,则必须记住要填充 SharePoint 数据库上的 FailoverServiceInstance 属性。
$db.failoverserviceinstance("<DBServerName>")

其中 <,DBServerName> 是镜像 SQL Server 的名称或别名。

$db.update()
  1. 针对您移动的所有数据库重复这些步骤,包括配置和管理中心内容数据库。

重新启动服务器场中的服务

  1. 确认执行此过程的用户帐户是 SharePoint 组“服务器场管理员”的成员。

  2. 在场中的所有 SharePoint 服务器上,在命令提示符处键入 iisreset /start

  3. 在 Microsoft 管理控制台"服务"管理单元中,启动所有与 SharePoint Server 和 IIS 相关的服务。 其中包括下列服务:

  • SharePoint 管理

  • SharePoint 计时器

  • SharePoint 跟踪

  • SharePoint 用户代码主机

  • SharePoint VSS 编写器

  • World Wide Web 发布服务

  • SharePoint Server Search

另请参阅

概念

SharePoint Server 中的数据库类型和说明

其他资源

快速参考指南:SharePoint Server 2016 数据库

支持 SharePoint 2013 的数据库

Add a database server to an existing farm in SharePoint 2013