この記事の手順を使用して、SharePoint ワークフロー マネージャー (SPWFM) データベースを新しいSQL Server インスタンスに移動します。 この移動は、ディザスター リカバリー (DR) 作業、移行の一環として行われる場合や、SPWFM データベースの名前を変更するだけで済む場合に実行できます。 これらの手順は、新しいハードウェアで "クラシック ワークフロー マネージャー" (WFM) から SharePoint ワークフロー マネージャー (SPWFM) にアップグレードまたは移行するための代替方法としても使用できます。 ただし、新しいファームでのワークフロー マネージャーから SharePoint ワークフロー マネージャーへのアップグレードに関するページで詳しく説明されている、推奨される手順よりも少し複雑です。 この "ファームの復元" 手順を使用してアップグレード/移行する場合は、既存のワークフローをそのまま維持するために、SharePoint コンテンツ データベースと App Management Service アプリケーション データベースもアップグレードする必要があることに注意してください。
重要
ワークフロー構成ウィザードでは、データベース接続情報と、Service Bus 管理データベースとワークフロー管理データベースの名前の入力のみを求められます。 他の 4 つの Service Bus データベースとワークフロー データベースの接続情報は、これら 2 つの管理データベース内に格納されます。 その接続情報はウィザードによって更新されないため、ウィザードを使用して SQL サーバーまたはデータベース名を変更することはできません。 その場合は、「 シナリオ 2: SQL エイリアスを使用しない (ファームの復元)」 で指定した手順を使用して、ワークフロー ファームを復元する必要があります。
シナリオ 1: SQL エイリアスを使用する
SQL エイリアスを使用する場合は、SPWFM データベースを新しい SQL サーバーに簡単に移動できます。
すべての SPWFM サーバー上のすべての SPWFM サービスを停止するか、可能であればサーバーをシャットダウンして、ワークフロー (WF) データベースと Service Bus (SB) データベースへの既存の接続を削除します。 SPWFM 関連のサービスは次のとおりです。
- Service Bus ゲートウェイ
- Service Bus メッセージ ブローカー
- Service Bus リソース プロバイダー
- Service Bus VSS
- Service Fabric ホスト サービス
- ワークフロー マネージャー バックエンド
- World Wide Web 発行サービス
WF データベースと SB データベースを、元の SQL Server インスタンスからターゲット SQL Server インスタンスに物理的に移動します。 データベースのバックアップと復元は、その場合に適しています。 移動中は、6 つの Service Bus データベースとワークフロー データベースに同じデータベース名を保持する必要があります。 データベース名を変更する必要がある場合は、 シナリオ 2 を使用する必要があります。
すべての SPWFM サーバーでcliconfg.exeを使用して SQL エイリアスを作成します。 エイリアスの作成の詳細については、SQL エイリアスの作成に関 するページを参照してください。
SPWFM サーバー/サービスを再起動します。 SQL エイリアスを使用して "古い" SQL サーバー名を "新しい" SQL サーバーにマップしているため、SPWFM は変更されたことに気付いてはいない。 サービスが起動し、新しい SQL サーバー上のデータベースに接続する必要があります。
シナリオ 2: SQL エイリアスを使用しない (ファームの復元)
何らかの理由で SQL エイリアスを使用できない場合、または 6 つの Service Bus データベースとワークフロー データベースの名前を変更する必要がある場合は、ワークフロー "ファームの復元" を完了する必要があります。 このプロセスは複雑ではありませんが、多くの潜在的な障害ポイントがあります。
ヒント
そのため、SQL エイリアスを使用し、上記のシナリオ 1 で説明したように、データベース名を同じにしておくことを強くお勧めします。
WFMデータベースと SB データベースを移動する
- この手順を使用すると、6 つのWFM/SB データベースのうち 4 つだけ必要です。 WFManagementDB データベースと SbManagementDB データベースは必要 ありません 。このデータベースは、この手順の一部として新しく作成されます。
- "古い" SQL サーバーで必要な 4 つのデータベースをバックアップし、それらを "新しい" SQL サーバーに復元します。 次の例では、データベースは既定のデータベース名で復元されています。
SbGatewayDatabase
SBMessageContainer01
WFInstanceManagementDB
WFResourceManagementDB
ワークフロー ファームを復元する
複数の SPWFM サーバーがある場合は、復元プロセスを実行できるサーバーを選択します。 今後、このサーバーを "SPWFM サーバー" と見なします。
SPWFM サーバーでは、復元されたデータベースを使用してすべてを復元するために、いくつかの PowerShell コマンドを実行する必要があります。 この PowerShell プロセスでは、1 つのスクリプトとしてすべてを実行するだけでなく、一度に 1 つのステップを実行することをお勧めします。 これにより、1 つの手順が失敗した場合は、トラブルシューティングを行うことで、次の手順に進むのを防ぎ、混乱を引き起こす可能性があります。
重要
復元されたファームで新しい "証明書生成キー" を設定しています。 この値は、ファームに再参加するとき、またはファームに追加のサーバーを参加させるときに必要であるため、どこかに格納する必要があります。
管理者特権を使用して、SPWFM サーバーで PowerShell ISE を実行し、次の手順を実行してワークフロー ファームを復元します。
変数を設定する
参照される変数は、他のコマンドで使用される変数です。 環境に合わせてこれらの変数を適切に設定した後、後続のコマンド内で変更を加える必要はありません。
$wfmAcc = "CONTOSO\spfarm" # Account in services.msc used to run the SPWFM services
$newPass = "YourPWDHere" # Set the password of the SPWFM service account defined variable $wfmAcc
$certGenKeyPlain = "YourCertGenKeyHere" # A new Certificate Generation Key of your choosing
$manageUsers = @("spfarm@contoso.local","sysadm@contoso.local") # Admin accounts. Use UPN form (user@domain). This should include the account that is running this script.
$adminGroup = "BUILTIN\Administrators" # The group that will have admin permissions for the SPWFM farm. The local administrators group is common.
$newSQL = "sql" # Set the SQL instance name of the target SQL server
$sbGatewayDB = "SbGatewayDatabase" # Restored Service Bus Gateway DB name
$sbMessageDB = "SBMessageContainer01" # Restored Service Bus Message Container DB name
$sbManageDB = "SbManagementDB" # Name for the NEW Service Bus Management DB that will be created
$wfInstanceDB = "WFInstanceManagementDB" # Restored Workflow Instance Management DB
$wfResourceDB = "WFResourceManagementDB" # Restored Workflow Resource Management DB
$wfManageDB = "WFManagementDB" # Name for the NEW Workflow Management DB DB that will be created
$logPath = "C:\temp\wfm-restore.log.txt" # A log file used for recording information during the restore
### You should not need to change anything below this line ###
# Set a few more variables automatically
$PrimarySymmetricKey = [Convert]::ToBase64String((1..32|%{[byte](Get-Random -Max 256)}))
$certGenKey = convertto-securestring $certGenKeyPlain -asplaintext -force
$myPassword = convertto-securestring $newPass -asplaintext -force
$restoreTime = Get-Date
Service Bus ファームを復元する
# Restore the Service Bus farm
# You'll get a warning about the Farm Encryption Token, but don't worry, we'll fix that in a later step
Restore-SBFarm -RunAsAccount $wfmAcc -GatewayDBConnectionString "Data Source=$newSQL;Initial Catalog=$sbGatewayDB;Integrated Security=True;Encrypt=False" -SBFarmDBConnectionString "Data Source=$newSQL;Initial Catalog=$sbManageDB;Integrated Security=True;Encrypt=False" -AdminGroup $adminGroup -CertificateAutoGenerationKey $certGenKey -Verbose
注:
"ファーム暗号化トークン" に関する警告が表示されますが、心配しないでください。後の手順で修正します。
Service Bus メッセージ コンテナーを復元する
# Restore the Service Bus Message Container
Restore-SBMessageContainer -ContainerDBConnectionString "Data Source=$newSQL;Initial Catalog=$sbMessageDB;Integrated Security=True;Encrypt=False" -SBFarmDBConnectionString "Data Source=$newSQL;Initial Catalog=$sbManageDB;Integrated Security=True;Encrypt=False" -Id 1 -Verbose
Service Bus ゲートウェイを復元する
# Restore the Service Bus Gateway
Restore-SBGateway -GatewayDBConnectionString "Data Source=$newSQL;Initial Catalog=$sbGatewayDB;Integrated Security=True;Encrypt=False" -SBFarmDBConnectionString "Data Source=$newSQL;Initial Catalog=$sbManageDB;Integrated Security=True;Encrypt=False" -Verbose
注:
"操作がタイムアウトしました" というエラーが発生した場合は、そのエラーを無視して先に進みます。
Service Bus ファームをアップグレードする
# Upgrade the Service Bus farm
Invoke-SBFarmUpgrade -SBFarmDBConnectionString "Data Source=$newSQL;Initial Catalog=$sbManageDB;Integrated Security=True;Encrypt=False" -CertificateAutoGenerationKey $certGenKey -Verbose
ローカル SPWFM サーバーを Service Bus に追加する
# Add the local SPWFM server to the Service Bus farm
Add-SBHost -EnableFirewallRules $TRUE -RunAsPassword $myPassword -CertificateAutoGenerationKey $certGenKey -SBFarmDBConnectionString "Data Source=$newSQL;Initial Catalog=$sbManageDB;Integrated Security=True;Encrypt=False" -Verbose
Service Bus 名前空間を設定する
# Set the Service Bus namespace
Set-SBNamespace -Name "WorkflowDefaultNamespace" -PrimarySymmetricKey $PrimarySymmetricKey -ManageUsers $manageUsers -Verbose
Service Bus が正常であることを確認する
# At this point, all SB services should be running and we should have a namespace of "WorkflowDefaultNamespace" defined.
# If not, you'll want to fix that before moving on.
Get-SBFarm
Get-SBFarmStatus
Get-SBNamespace -Name WorkflowDefaultNamespace
ワークフロー マネージャー サービス ファームを復元する
# Restore the Workflow Manager Services and Farm
Restore-WFFarm -RunAsAccount $wfmAcc -InstanceDBConnectionString "Data Source=$newSQL;Initial Catalog=$wfInstanceDB;Integrated Security=True;Asynchronous Processing=True;Encrypt=False" -ResourceDBConnectionString "Data Source=$newSQL;Initial Catalog=$wfResourceDB;Integrated Security=True;Asynchronous Processing=True;Encrypt=False" -WFFarmDBConnectionString "Data Source=$newSQL;Initial Catalog=$wfManageDB;Integrated Security=True;Encrypt=False" -InstanceStateSyncTime $restoreTime -ConsistencyVerifierLogPath $logPath -CertificateAutoGenerationKey $certGenKey -Verbose
ローカル SPWFM サーバーを SPWFM ファームに追加する
# Add the local SPWFM server to the SPWFM farm
$SBClientConfiguration = Get-SBClientConfiguration -Namespaces "WorkflowDefaultNamespace"
Add-WFHost -WFFarmDBConnectionString "Data Source=$newSQL;Initial Catalog=$wfManageDB;Integrated Security=True;Encrypt=False" -RunAsPassword $myPassword -EnableFirewallRules $TRUE -CertificateAutoGenerationKey $certGenKey -SBClientConfiguration $SBClientConfiguration –Verbose
SPWFM のアップグレード
# Upgrade the SPWFM host
Invoke-WFHostUpgrade -Verbose
または、ワークフロー マネージャー構成ウィザードを実行し、[ファームワークフロー マネージャーアップグレード] を選択することもできます。
状態の確認
アップグレード後、サービスを開始するために 1 分または 2 分を与えます。次に、次の PowerShell コマンドを実行して状態をチェックします。
Get-WFFarm; Get-WFFarmStatus; Get-SBFarm; Get-SBFarmStatus
すべてのサービスが実行されていることと、エラーがないことを示すはずです。
他のサーバーをワークフロー ファームに参加させる
この時点で、すべてが正常に表示される場合は、SPWFM ファームにサーバーが増えた場合は、ワークフロー マネージャー構成ウィザードを実行し、既存のファームに参加することを選択して、それらをファームに追加し直す必要があります。
上記のスクリプトで "証明書生成キー" が設定されました。そのため、ファームに参加するときにこれを使用する必要があります。
SharePoint 側で検証する
SharePoint サーバー上の SPWFM SSL 証明書を信頼する
この手順の一環として新しい SPWFM 証明書が作成されたため、SharePoint サーバーが信頼できるように、次の手順を実装する必要があります。
- 「 SharePoint サーバーで SPWFM SSL 証明書を信頼 する」セクションの手順を実行して、すべての SharePoint サーバー上の SPWFM エンドポイント証明書を信頼します。
- 任意の SharePoint サーバーで RefreshMetadataFeed タイマー ジョブを実行して 、SPTrustedSecurityTokenIssuer で使用される SPWFM 送信証明書を更新します。
$tj = Get-SPTimerJob | ? {$_.name -match "RefreshMetadataFeed"}
Start-SPTimerJob $tj
SPWFM エンドポイントを検証する
いずれかの SharePoint サーバーで、 SPWFM RunAs アカウントとして、または上記のスクリプトで定義されている AdminGroup のメンバーであるユーザーとしてサインインします。 SPWFM エンドポイントの FQDN (例: https://apps.contoso.local:12290/
) を参照します。 次のスクリーンショットに示すように、結果はのようになります。
省略可能な手順
SharePoint ファームを登録する
これらの手順を使用してワークフロー (WF) データベースと Service Bus (SB) データベースを新しい SQL サーバーに移動した場合、SharePoint ファームは既に登録されており、この手順を完了する必要 はありません 。
ただし、次の手順を使用して SB データベースと WF データベースを 新しい SPWFM ファームに移行した場合 (たとえば、SharePoint ファームのアップグレード/移行の一部として)、SharePoint ファームを SPWFM ファームに接続するには、次 Register-SPWorkflowService
のコマンドを実行する必要があります。
$Scope = "SharePoint" # Use the Scope Name you were using previously
$site = "https://sp.contoso.local/" # Any site in the SharePoint web application
$wfURI = "https://spwfm.contoso.local:12290" # Get this value by running "Get-WFFarm | select endpoints" on the SPWFM server
Register-SPWorkflowService -SPSite $site -WorkflowHostUri $wfURI -ScopeName $Scope -Force
新しいワークフローを発行する
この手順を使用してアップグレード/移行を行い、この移行の一環として SharePoint Web アプリケーションの URL が変更された場合 (たとえば、 から http://sp2013.contoso.local
) https://spse.contoso.local
は、ワークフローの移行/ファームの復元の前に作成されたワークフローは最初は機能しません。 最初に新しいワークフローを発行する必要があります。 詳細については、「 問題 1: サイト URL が変更されました」を参照してください。