在 SharePoint Server 中移動內容資料庫

適用于:是-img-13 2013是-img-16 2016是-img-192019 no-seMicrosoft 365 中的 SharePoint

本文說明如何在執行 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 執行。

[!附註] 如果您要將內容資料庫移到不同的伺服器陣列,必須在還原過程中將伺服器陣列帳戶設成資料庫伺服器上管理員群組的成員。 這允許帳戶複製資料庫的安全性設定。 這個存取權層次可以在移動內容資料庫後移除。 如需詳細資訊,請參閱<SharePoint Server 2016 中的帳戶權限及安全性設定>。

目的地伺服器陣列必須執行與來源伺服器陣列執行之 SharePoint Server 相同的版本,或是更新的版本。

1. 記錄哪些內容資料庫與每個 Web 應用程式關聯

  1. 確認您具備下列成員身分:

    • SQL Server 執行個體上的 securityadmin 固定伺服器角色。

    • 所有要更新之資料庫上的 db_owner 固定資料庫角色。

    • 正在執行 PowerShell Cmdlet 之所在伺服器上的系統管理員群組。

    • 目的地伺服器上的 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工具

注意事項

[!附註] 如果您要將內容資料庫移到不同的伺服器陣列,必須在還原過程中將伺服器陣列帳戶設成資料庫伺服器上管理員群組的成員。 這允許帳戶複製資料庫的安全性設定。 這個存取權層次可以在移動內容資料庫後移除。

目的地伺服器陣列必須執行與來源伺服器陣列執行之 SharePoint Server 相同的版本,或是更新的版本。

1. 記錄哪些內容資料庫與每個 Web 應用程式關聯

  1. 確認您具備下列成員身分:

    • SQL Server 執行個體上的 securityadmin 固定伺服器角色。

    • 所有要更新之資料庫上的 db_owner 固定資料庫角色。

    • 正在執行 PowerShell Cmdlet 之所在伺服器上的系統管理員群組。

    • 目的地伺服器上的 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 之所在伺服器上的系統管理員群組。

    • 目的地伺服器上的 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-SPTimerJob>、<Out-File>、<ForEach-Object>、<Get-Content>、<Disable-SPTimerJob>。

注意事項

[!附註] 建議您在執行命令列管理工作時使用 Windows PowerShell。 Stsadm 命令列工具已過時,但為與舊版產品相容,仍會隨附提供。

3. 若要使用 PowerShell 從 Web 應用程式卸離內容資料庫

  1. 確認您具備下列成員身分:

    • SQL Server 執行個體上的 securityadmin 固定伺服器角色。

    • 所有要更新之資料庫上的 db_owner 固定資料庫角色。

    • 正在執行 PowerShell Cmdlet 之所在伺服器上的系統管理員群組。

    • 目的地伺服器上的 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-SPContentDatabase>與<Get-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 之所在伺服器上的系統管理員群組。

    • 目的地伺服器上的 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 之所在伺服器上的系統管理員群組。

    • 目的地伺服器上的 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-SPTimerJob>、<ForEach-Object>、<Get-Content>及<Enable-SPTimerJob>。

注意事項

[!附註] 建議您在執行命令列管理工作時使用 Windows PowerShell。 Stsadm 命令列工具已過時,但為與舊版產品相容,仍會隨附提供。

另請參閱

概念

移動 SharePoint Server 中的所有資料庫