在 SharePoint Server 中移动内容数据库

适用于:yes-img-132013 yes-img-162016 yes-img-192019 no-seSharePoint in Microsoft 365

本文介绍如何在运行 SQL Server 的服务器之间、SQL Server 的实例之间或 SharePoint Server Web 应用程序之间移动内容数据库。

重要

[!重要说明] 本文仅介绍如何移动内容数据库。 有关如何移动与 SharePoint Server 关联的其他类型的数据库的信息,请参阅在 SharePoint Server 中移动或重命名服务应用程序数据库在 SharePoint Server 中移动所有数据库

可以使用 SharePoint 管理中心网站或 Microsoft PowerShell 以及 SQL Server 工具移动内容数据库。 所用工具取决于已部署的环境类型、计划所需的内容以及您与组织达成的服务级别协议。

开始之前

在开始移动内容数据库之前,请查看以下任务。 每个任务都是必须按其列出顺序完成的一个过程。 请注意,移动内容数据库时,您必须使用 SharePoint Server 和 SQL Server 工具。 可将管理中心或 Windows PowerShell 3.0 用于此操作。

  1. 记录内容数据库名称以及与其关联的 Web 应用程序。

  2. 暂停可能对内容数据库运行的任何服务应用程序和服务,包括计时器作业和搜索爬网。

  3. 从 Web 应用程序中删除 SharePoint Server 内容数据库。

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

    重要

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

    重要

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

  5. 使用文件资源管理器将内容数据库 .mdf、.ndf 和 .ldf 文件从源位置复制或移动到目标位置。

  6. 将内容数据库附加到新的 SQL Server 实例中。

  7. 将内容数据库添加到 SharePoint Server 中的目标 Web 应用程序中。

    重要

    [!重要说明] 在添加内容数据库或 SharePoint Server 创建新内容数据库时使用相同名称。

  8. 重新启动在第 2 步中暂停的所有服务应用程序和服务。

使用管理中心移动内容数据库

使用以下过程可通过管理中心在 SharePoint Server 服务器场中移动内容数据库。

本节中的过程使用 管理中心 移动内容数据库。 但是,在执行以下过程时,必须使用正确的工具:

  1. 记录与每个 Web 应用程序关联的内容数据库 - PowerShell

  2. 从 SQL Server 分离内容数据库 - SQL Server 工具

  3. 将内容数据库移动到新位置 - 文件资源管理器或 Windows 资源管理器

  4. 将内容数据库附加到 SQL Server 的新实例 - SQL Server 工具

注意

[!注意] 本节中的过程使用管理中心移动内容数据库。 但是,必须使用 PowerShell 执行第一个过程。

[!注意] 如果将内容数据库移动到其他服务器场,则必须在还原过程中使服务器场帐户成为数据库服务器上的 Administrators 组的成员。 这样,该帐户便能够复制数据库的安全设置。 可在移动内容数据库后删除此访问级别。 有关详细信息,请参阅SharePoint Server 2016 中的帐户权限和安全设置

目标服务器场运行的 SharePoint Server 版本必须与源服务器场运行的版本相同或更高。

1. 记录与每个 Web 应用程序关联的内容数据库

  1. 确认您具有以下成员身份:

    • SQL Server 实例上的 securityadmin 固定服务器角色。

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

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

    • 目标服务器上的 dbcreatorsecurityadmin 固定服务器角色,以便附加数据库和配置 SQL Server 登录。

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

    注意

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

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

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

    Get-SPContentDatabase -WebApplication <http://SiteName>
    

其中: <http://SiteName> 是 Web 应用程序的 URL。

注意

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

2. 使用管理中心暂停计时器作业

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

  2. 在管理中心中的"监视"部分,单击"检查作业状态"。

  3. 对于要对移动的内容数据库运行的每个计划作业,单击作业以打开"编辑计时器作业"页,再单击"禁用",然后单击"确定"。

3. 使用管理中心从 Web 应用程序中分离内容数据库

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

  2. 在管理中心的"应用程序管理"部分,单击"管理内容数据库"。

  3. 在"管理内容数据库"页上,单击要移动的内容数据库。

    这将打开"管理内容数据库设置"页。

    注意

    If the content database does not appear in the list, it might be associated with another web application. To select another web application, on the Web Application menu, click Change Web Application.

  4. 在"管理内容数据库设置"页上的"删除内容数据库"部分,选中"删除内容数据库"复选框,再单击"确定"。

    注意

    [!注意] 移除内容数据库不会删除该数据库。 它只会移除数据库与 Web 应用程序的关联。

  5. 对要移动的每个内容数据库重复步骤 3 和 4。

4. 从 SQL Server 分离内容数据库

  1. 确认执行此过程的用户帐户是存储每个数据库的数据库服务器上 db_owner 固定数据库角色的成员。

  2. 在 SQL Server Management Studio 中,打开 SQL Server 源实例,然后展开"数据库"节点。

  3. Right-click the content database, point to Tasks, and then click Detach. Repeat this step for each content database that you want to move.

    注意

    [!注意] 使用此过程只会移动内容数据库。 不要分离任何其他类型的数据库。

5. 将内容数据库移动到新位置

  1. 确认执行此过程的用户帐户对源和目标文件夹均具有写访问权限。

  2. 使用文件资源管理器定位内容数据库的 .mdf、.ldf 和 .ndf 文件。

  3. 选择要移动的数据库的 .mdf、.ldf 和 .ndf 文件,并将这些文件复制或移动到目标目录。

6. 将内容数据库附加到 SQL Server 的新实例

  1. 确认执行此过程的用户帐户是存储每个数据库的数据库服务器上 dbcreator 固定服务器角色的成员。

  2. 在 Management Studio 中,打开 SQL Server 目标实例。

  3. 右键单击"数据库"节点,指向"任务",再单击"附加"。

  4. 在“ 附加数据库 ”对话框中,浏览到传输.mdf、.ldf 和 .ndf 文件的位置,选择要附加的数据库的.mdf文件,然后单击“ 确定”。

  5. 对要移动的每个内容数据库重复此过程。

7. 使用管理中心将内容数据库附加到 Web 应用程序

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

  2. 在管理中心的"应用程序管理"部分,单击"管理内容数据库"。

  3. 在"管理内容数据库"页上,单击"添加内容数据库"。

  4. 在"添加内容数据库"页上,确认"Web 应用程序"菜单显示正确的 Web 应用程序。

  5. 在"服务器"框中,指定承载数据库的数据库服务器。

  6. 在"数据库名称"框中,键入传输的内容数据库的准确名称。

    注意

    [!注意] 确认该名称正确。 如果该名称不正确,则将创建新的数据库。

  7. 指定数据库的身份验证方法,然后单击"确定"。

  8. Repeat these steps for each database that you are adding. Be sure that you select the correct web application from the Web Application menu for each database.

8. 使用管理中心重新启动计时器作业

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

  2. 在管理中心中的"监视"部分,单击"检查作业状态"。

  3. 对于之前已禁用的每个计划作业,单击作业以打开"编辑计时器作业"页,再单击"启用",然后单击"确定"。

使用 PowerShell 移动内容数据库

若要使用 PowerShell 在 SharePoint Server 场中移动内容数据库,请执行以下过程

本节中的过程使用 PowerShell 移动内容数据库。 但是,在执行以下过程时,必须使用正确的工具:

  • 从 SQL Server 分离内容数据库 - SQL Server 工具

  • 将内容数据库移动到新位置 - 文件资源管理器

  • 将内容数据库附加到 SQL Server 的新实例 - SQL Server 工具

注意

[!注意] 如果要将内容数据库移动到其他服务器场,则在还原过程中,必须使服务器场帐户成为数据库服务器上 Administrators 组的成员。 这样,该帐户便能够复制数据库的安全设置。 移动内容数据库后,可移除此访问级别。

目标服务器场运行的 SharePoint Server 版本必须与源服务器场运行的版本相同或更高。

1. 记录与每个 Web 应用程序关联的内容数据库

  1. 确认您具有以下成员身份:

    • SQL Server 实例上的 securityadmin 固定服务器角色。

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

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

    • 目标服务器上的 dbcreatorsecurityadmin 固定服务器角色,以便附加数据库和配置 SQL Server 登录。

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

    注意

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

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

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

    Get-SPContentDatabase -WebApplication <http://SiteName>
    

    其中: <http://SiteName> 是 Web 应用程序的 URL。

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

注意

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

2. 使用 PowerShell 暂停计时器作业

  1. 确认您具有以下成员身份:

    • SQL Server 实例上的 securityadmin 固定服务器角色。

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

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

    • 目标服务器上的 dbcreatorsecurityadmin 固定服务器角色,以便附加数据库和配置 SQL Server 登录。

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

    注意

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

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

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

    Get-SPTimerJob -webapplication <http://WebApplicationURL> | select name | Out-File <c:\timerjobfile.txt> -Append -Encoding ascii
    ForEach($tmrjob in (Get-Content <c:\timerjobfile.txt>)) { Get-SPTimerJob -Identity $tmrjob | Disable-SPTimerjob }
    

    其中:

    • <http://WebApplicationURL> 是与要移动的内容数据库关联的 Web 应用程序。

    • <c:\timerjobfile.txt> 是要创建的文件的位置,该文件列出了与 Web 应用程序关联的所有计时器作业。

有关详细信息,请参阅 Get-SPTimerJobOut-FileForEach-ObjectGet-ContentDisable-SPTimerJob

注意

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

3. 使用 PowerShell 从 Web 应用程序中分离内容数据库

  1. 确认您具有以下成员身份:

    • SQL Server 实例上的 securityadmin 固定服务器角色。

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

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

    • 目标服务器上的 dbcreatorsecurityadmin 固定服务器角色,以便附加数据库和配置 SQL Server 登录。

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

    注意

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

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

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

    Dismount-SPContentDatabase "<ContentDB>"
    

    其中: <ContentDB> 是内容数据库的名称。

    注意

    [!注意] 如果有多个内容数据库具有相同名称,则必须在此命令中使用内容数据库 GUID,而不是使用内容数据库名称。 若要检索内容数据库的 GUID,请运行不带参数的 Get-SPContentDatabase cmdlet。

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

    注意

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

4. 从 SQL Server 分离内容数据库

  1. 确认执行此过程的用户帐户是存储每个数据库的数据库服务器上 db_owner 固定数据库角色的成员。

  2. 在 Management Studio 中,打开 SQL Server 源实例,然后展开“数据库”节点。

  3. Right-click the content database, point to Tasks, and then click Detach. Repeat this step for each content database that you want to move.

注意

[!注意] 使用此过程只会移动内容数据库。 不要分离任何其他类型的数据库。

5. 将内容数据库移动到新位置

  1. 确认执行此过程的用户帐户对源和目标文件夹均具有写访问权限。

  2. 使用文件资源管理器定位内容数据库的 .mdf、.ldf 和 .ndf 文件。

  3. 选择要移动的数据库的 .mdf、.ldf 和 .ndf 文件,并将这些文件复制或移动到目标目录。

6. 将内容数据库附加到 SQL Server 的新实例

  1. 确认执行此过程的用户帐户是存储每个数据库的数据库服务器上 dbcreator 固定服务器角色的成员。

  2. 在 Management Studio 中,打开 SQL Server 目标实例。

  3. 右键单击"数据库"节点,指向"任务",再单击"附加"。

  4. 在“ 附加数据库 ”对话框中,浏览到传输.mdf、.ldf 和 .ndf 文件的位置,选择要附加的数据库的.mdf文件,然后单击“ 确定”。

  5. 对要移动的每个内容数据库重复此过程。

7. 使用 PowerShell 从 Web 应用程序中附加内容数据库

  1. 确认您具有以下成员身份:

    • SQL Server 实例上的 securityadmin 固定服务器角色。

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

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

    • 目标服务器上的 dbcreatorsecurityadmin 固定服务器角色,以便附加数据库和配置 SQL Server 登录。

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

    注意

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

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

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

    Mount-SPContentDatabase "<ContentDB>" -DatabaseServer "<DBServer>" -WebApplication <http://SiteName>
    

    其中:

    • <ContentDB> 是要附加的内容数据库的名称。

    • <DBServer> 是数据库服务器的名称。

    • <http://SiteName> 是将内容数据库附加到的 Web 应用程序的 URL。

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

注意

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

8. 使用 PowerShell 重新启动计时器作业

  1. 确认您具有以下成员身份:

    • SQL Server 实例上的 securityadmin 固定服务器角色。

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

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

    • 目标服务器上的 dbcreatorsecurityadmin 固定服务器角色,以便附加数据库和配置 SQL Server 登录。

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

    注意

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

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

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

    ForEach($tmrjob in (Get-Content <c:\timerjobfile.txt>)) {Get-SPTimerJob -Identity $tmrjob | Enable-SPTimerjob}
    

其中: <c:\timerjobfile.txt> 是你创建的文件的位置,其中列出了与 Web 应用程序关联的所有计时器作业。

有关详细信息,请参阅 Get-SPTimerJobForEach-ObjectGet-ContentEnable-SPTimerJob

注意

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

另请参阅

概念

移动 SharePoint Server 中的所有数据库