在 SharePoint Server 中移動內容資料庫

 

**適用版本:**SharePoint Foundation 2013, SharePoint Server 2013, SharePoint Server 2016

**上次修改主題的時間:**2017-09-14

**摘要:**了解如何在 SharePoint Server 2016 和 SharePoint 2013 中移動內容資料庫。

本文說明如何在執行 SQL Server 的伺服器之間、SQL Server 的執行個體之間,或 SharePoint Server Web 應用程式之間移動內容資料庫。

重要

本文僅說明如何移動內容資料庫。如需如何移動與 SharePoint Server 關聯之其他種類資料庫的詳細資訊,請參閱<在 SharePoint 2013 中重新命名服務應用程式資料庫>及<移動 SharePoint Server 中的所有資料庫>。

您可以使用 SharePoint 管理中心網站 或 Microsoft PowerShell 及 SQL Server 工具移動內容資料庫。您可使用的工具取決於已部署的環境種類、排程的需求,以及您與組織訂定的服務層級協定。

本文內容:

  • 開始之前

  • 使用管理中心移動內容資料庫

  • 使用 Windows PowerShell 移動內容資料庫

開始之前

移動內容資料庫的作業開始之前,請先檢閱下列工作。每項工作都是一個程序,必須依照列出的順序來進行。請注意,移動內容資料庫時,必須同時使用 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

  • 4. 從 SQL Server 卸離內容資料庫 ─ SQL Server 工具

  • 5. 將內容資料庫移動到新位置 ─ 檔案總管或 Windows 檔案總管

  • 6. 將內容資料庫附加到新的 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. 在 [管理內容資料庫] 頁面上,按一下您要移動的內容資料庫。

    [管理內容資料庫設定] 頁面隨即開啟。

    注意

    如果清單中未顯示內容資料庫,表示它可能與其他的 Web 應用程式相關聯。若要選取其他 Web 應用程式,請按一下 [Web 應用程式] 功能表上的 [變更 Web 應用程式]。

  4. 在 [管理內容資料庫設定] 頁面上的 [移除內容資料庫] 區段中,選取 [移除內容資料庫] 核取方塊,然後按一下 [確定]。

    注意

    移除內容資料庫不會刪除該資料庫,只會移除資料庫與 Web 應用程式相關聯的部分。

  5. 對每一個要移動的內容資料庫重複步驟 3 和 4。

4. 從 SQL Server 卸離內容資料庫

  1. 確認執行此程序的使用者帳戶是儲存各資料庫之資料庫伺服器上的 db_owner 固定資料庫角色成員。

  2. 在 SQL Server Management Studio 中,開啟來源 SQL Server 執行個體,然後展開 [資料庫] 節點。

  3. 以滑鼠右鍵按一下內容資料庫,指向 [工作],然後按一下 [卸離]。請對每個要移動的內容資料庫重複此步驟。

    注意

    只能使用此程序移動內容資料庫。請勿卸離其他種類的資料庫。

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. 對您要新增的每個資料庫重複這些步驟。請確定您為每個資料庫從 [Web 應用程式] 功能表選取正確的 Web 應用程式。

8. 使用 管理中心 重新啟動計時器工作

  1. 確認執行此程序的使用者帳戶為伺服器陣列管理員群組的成員。

  2. 在 管理中心 的 [監控] 區段中,按一下 [檢查工作狀態]。

  3. 對於每個之前停用的排程工作,按一下該工作以開啟 [編輯計時器工作] 頁面,按一下 [啟用],然後按一下 [確定]。

使用 PowerShell 移動內容資料庫

使用下列程序,透過 PowerShell 在 SharePoint Server 伺服器陣列中移動內容資料庫。

注意

本節中的程序會使用 PowerShell 來移動內容資料庫。不過,執行下列程序時,必須使用正確的工具:

  • 4. 從 SQL Server 卸離內容資料庫 ─ SQL Server 工具

  • 5. 將內容資料庫移動到新位置 ─ 檔案總管

  • 6. 將內容資料庫附加到新的 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. 以滑鼠右鍵按一下內容資料庫,指向 [工作],然後按一下 [卸離]。請對每個要移動的內容資料庫重複此步驟。

    注意

    只能使用此程序移動內容資料庫。請勿卸離其他種類的資料庫。

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。

    如需詳細資訊,請參閱<Dismount-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 命令列工具已過時,但為與舊版產品相容,仍會隨附提供。

See also

移動 SharePoint Server 中的所有資料庫