SharePoint Server でコンテンツ データベースを移動する

適用対象:yes-img-13 2013yes-img-162016 yes-img-192019 no-seSharePoint in Microsoft 365

この記事では、SQL Server を実行するサーバー間、SQL Server のインスタンス間、または SharePoint Server Web アプリケーション間でコンテンツ データベースを移動する方法について説明します。

重要

この記事では、コンテンツ データベースの移動方法だけを説明します。 SharePoint Server に関連付けられている他の種類のデータベースを移動する方法については、「SharePoint Server でサービス アプリケーション データベースを移動または名前を変更 する」および「 SharePoint Server 内のすべてのデータベースを移動する」を参照してください。

コンテンツ データベースを移動するには、SharePoint サーバーの全体管理 Web サイトまたは Microsoft PowerShell、およびSQL Server ツールを使用します。 使用するツールは、展開した環境の種類、必要なスケジュール、および組織と締結しているサービス レベル契約によって異なります。

開始する前に

この操作 (コンテンツ データベースの移動) を開始する前に、以下のタスクを確認してください。 各タスクは、記載されているとおりの順序で実行する必要があります。 コンテンツ データベースを移動するときは、SharePoint Server ツールと SQL Server ツールの両方を使用する必要があることに注意してください。 この操作には、サーバーの全体管理またはWindows PowerShell 3.0 のいずれかを使用できます。

  1. コンテンツ データベースの名前と、そのデータベースが関連付けられている Web アプリケーションを記録します。

  2. タイマー ジョブ、検索クロールなど、コンテンツ データベースに対して実行する可能性があるすべてのサービス アプリケーションおよびサービスを一時停止します。

  3. SharePoint Server のコンテンツ データベースを Web アプリケーションから削除します。

  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 コマンドレットを実行するサーバーでの Administrators グループ。

    • データベースの接続と SQL Server ログインの構成を目的とした、移動先サーバーでの dbcreator および securityadmin 固定データベース ロール。

    管理者は Add-SPShellAdmin コマンドレットを使用して、SharePoint Server コマンドレットを使用する権限を付与できます。

    注:

    アクセス許可がない場合は、セットアップ管理者または 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. 移動するコンテンツ データベースに対して実行するようにスケジュールされている各ジョブについて、ジョブをクリックして [ タイマー ジョブの編集] ページを開き、[ 無効] をクリックして、[ OK] をクリックします。

3. サーバーの全体管理を使用してコンテンツ データベースを Web アプリケーションから切断するには

  1. この手順を実行しようとしているユーザー アカウントが、ファームの管理者 SharePoint グループのメンバーであることを確認します。

  2. サーバーの全体管理の [ アプリケーション構成の管理] セクションで、[ コンテンツ データベースの管理] をクリックします。

  3. [ コンテンツ データベースの管理] ページで、移動するコンテンツ データベースをクリックします。

    [ コンテンツ データベース設定の管理] ページが開きます。

    注:

    コンテンツ データベースがリストに表示されない場合、別の Web アプリケーションに関連付けられている可能性があります。 別の Web アプリケーションを選択するには、[Web アプリケーション] メニューの [Web アプリケーションの変更] をクリックします。

  4. [ コンテンツ データベース設定の管理] ページの [ コンテンツ データベースの削除] セクションで、[ コンテンツ データベースの削除] チェック ボックスをオンにし、[ OK] をクリックします。

    注:

    コンテンツ データベースを削除してもデータベースは削除されません。 データベースと 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 ファイルを選択し、[OK] をクリック します

  5. 移動するコンテンツ データベースごとに、手順を繰り返します。

7. サーバーの全体管理を使用してコンテンツ データベースを Web アプリケーションに接続するには

  1. この手順を実行するユーザー アカウントがファーム管理者グループのメンバーであることを確認します。

  2. サーバーの全体管理の [ アプリケーション構成の管理] セクションで、[ コンテンツ データベースの管理] をクリックします。

  3. [ コンテンツ データベースの管理] ページで、[ コンテンツ データベースの追加] をクリックします。

  4. [ コンテンツ データベースの追加] ページで、[ Web アプリケーション] メニューに正しい Web アプリケーションが表示されることを確認します。

  5. [ サーバー] ボックスで、データベースをホストするデータベース サーバーを指定します。

  6. [ データベース名] ボックスに、転送したコンテンツ データベースの正確な名前を入力します。

    注:

    名前が正しいことを確認してください。 正しくないと、新しいデータベースが作成されます。

  7. データベースの認証方法を指定し、[ OK] をクリックします。

  8. 追加するデータベースごとに手順を繰り返します。 各データベースに対し、[Web アプリケーション] メニューから正しい Web アプリケーションを選択します。

8. サーバーの全体管理を使用してタイマー ジョブを再起動するには

  1. この手順を実行するユーザー アカウントがファーム管理者グループのメンバーであることを確認します。

  2. サーバーの全体管理の [ 監視] セクションで、[ ジョブ状態の確認] をクリックします。

  3. 前の手順で無効にしたスケジュールされている各ジョブについて、ジョブをクリックして [ タイマー ジョブの編集] ページを開き、[ 有効] をクリックして、[ OK] をクリックします。

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 コマンドレットを実行するサーバーでの Administrators グループ。

    • データベースの接続と SQL Server ログインの構成を目的とした、移動先サーバーでの dbcreator および securityadmin 固定データベース ロール。

    管理者は Add-SPShellAdmin コマンドレットを使用して、SharePoint Server コマンドレットを使用する権限を付与できます。

    注:

    アクセス許可がない場合は、セットアップ管理者または 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 コマンドレットを実行するサーバーでの Administrators グループ。

    • データベースの接続と SQL Server ログインの構成を目的とした、移動先サーバーでの dbcreator および securityadmin 固定データベース ロール。

    管理者は Add-SPShellAdmin コマンドレットを使用して、SharePoint Server コマンドレットを使用する権限を付与できます。

    注:

    アクセス許可がない場合は、セットアップ管理者または 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 コマンドレットを実行するサーバーでの Administrators グループ。

    • データベースの接続と SQL Server ログインの構成を目的とした、移動先サーバーでの dbcreator および securityadmin 固定データベース ロール。

    管理者は Add-SPShellAdmin コマンドレットを使用して、SharePoint Server コマンドレットを使用する権限を付与できます。

    注:

    アクセス許可がない場合は、セットアップ管理者または SQL Server 管理者に連絡してアクセス許可を要求してください。 PowerShell アクセス許可の詳細については、「Add-SPShellAdmin」を参照してください。

  2. SharePoint 管理シェルを起動します。

  3. PowerShell コマンド プロンプトで、次のコマンドを入力します。

    Dismount-SPContentDatabase "<ContentDB>"
    

    Where: <ContentDB> はコンテンツ データベースの名前です。

    注:

    同じ名前の複数のコンテンツ データベースがある場合は、このコマンドでコンテンツ データベース名の代わりにコンテンツ データベースの GUID を使用する必要があります。 コンテンツ データベースの GUID を調べるには、Get-SPContentDatabase コマンドレットを引数なしで実行してください。

    詳細については、「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 ファイルを選択し、[OK] をクリック します

  5. 移動するコンテンツ データベースごとに、手順を繰り返します。

7. PowerShell を使用してコンテンツ データベースを Web アプリケーションに接続するには

  1. 次のメンバーシップがあることを確認します。

    • SQL Server インスタンスにおける securityadmin 固定サーバー ロール。

    • 更新するすべてのデータベースに対する db_owner 固定データベース ロール。

    • PowerShell コマンドレットを実行するサーバーでの Administrators グループ。

    • データベースの接続と SQL Server ログインの構成を目的とした、移動先サーバーでの dbcreator および securityadmin 固定データベース ロール。

    管理者は Add-SPShellAdmin コマンドレットを使用して、SharePoint Server コマンドレットを使用する権限を付与できます。

    注:

    アクセス許可がない場合は、セットアップ管理者または 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 コマンドレットを実行するサーバーでの Administrators グループ。

    • データベースの接続と SQL Server ログインの構成を目的とした、移動先サーバーでの dbcreator および securityadmin 固定データベース ロール。

    管理者は Add-SPShellAdmin コマンドレットを使用して、SharePoint Server コマンドレットを使用する権限を付与できます。

    注:

    アクセス許可がない場合は、セットアップ管理者または 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 ですべてのデータベースを移動する