この記事は、Sitecore Commerceバージョン8.2.1をMicrosoft Azure SQLデータベースで実行する際の既知の問題、回避策および制限について説明します。
備考:Sitecoreは現在、Azure SQLおよびSitecore Commerceバージョン8.2.1の互換性に対して実験的なサポートを提供しています。Sitecore Commerceバージョン8.2.1は、Azure SQLを使用しての広範囲にわたる正式なテストが実施されておらず、他の潜在的な問題が発生する可能性があります。関連する問題が発生した場合、Sitecoreサポートはトラブルシューティングをご提供しますが、修正プログラムのご提供は保証されませんので、ご了承ください。
Sitecore Commerceのデプロイを実施した際に使用する一部のPower Shell cmdlets(Initialize-CSSite)およびSQLスクリプト(Commerce.Storefront.ProfileDatabase.dacpac, CommerceServicesDbScript.sql [1])は、Windowsユーザーへの参照またはクロス データベース クエリのため、 AzureSQLでは機能しない場合があります。
解決策:この問題を解決するには、デプロイの際にオンプレミスSQLサーバーを中間ストレージとして使用し、Sitecore Commerceバージョン8.2.1デプロイ ガイドに説明されている手順に従って実施してください。
デプロイが完了し、オンプレミスSQLインスタンスで機能を検証した後、Database Migration Toolを使用し、ローカル データベースをMicrosoft Azure SQLに移行することができます。以下の手順は、SQL Server Management Studio (SMSS)バージョン17.2(最小限のバージョン)に基づいています。
ローカル データベースをMicrosoft Azure SQLに移行するには:
- SSMSを起動します。通常のSitecore Commerceバージョン8.2.1のデプロイでは、以下のデータベースがインストールされており、Azure SQLに移行する必要があります:
- MSCS_Admin
- YourCommerceServerSiteName_productcatalog
- YourCommerceServerSiteName_profiles
- SitecoreCommerce_Global (※:このデータベースは、この後の手順で説明されるブートストラップ処理の後に削除する必要があります)
- SitecoreCommerce_SharedEnvironments
- YourSitecoreSiteNameSitecore_Core
- YourSitecoreSiteNameSitecore_Master
- YourSitecoreSiteNameSitecore_Web
- YourSitecoreSiteNameSitecore_Analytics
- YourSitecoreSiteNameSitecore_Sessions
- 各データベースにおいて、Windowsユーザーを削除するか、またはSecurity -> Users下のSQLユーザーと交換します。
- 各データベースにおいて、データベースのノードに右クリックし、コンテキストのメニューからTasks -> Deploy Database to Microsoft Azure SQL Databaseをクリックします。
- Azure SQLデータベースのサーバの接続情報を提供します。同じデータベース名称を使用する必要があります。
- 画面に表示される手順に従って、最後の手順まで実施します。
全てのデータベースがAzure SQLにデプロイされた後、接続文字列の参照を変更する必要があります。
Commerce Serverの場合:
- MSCS_Adminデータベースへの接続を変更するには、C:\Program Files (x86)\Commerce Server 11\CSConfig.exe /fコマンドを実行し、Administration Database画面でAzure SQLの接続情報を提供します。
- Commerce Server ManagerのYourCommerceServerSiteName_productcatalogデータベースへの接続を変更するには、Commerce Sites -> Your site name -> Site Resources -> Product catalogをクリックし、その後Connection Stringsタブをクリックします。
- Commerce Server ManagerのYourCommerceServerSiteName_profilesデータベースへの接続を変更します:
- Global Resources -> Profiles(YourSiteName)配下のs_BizDataStoreConnectionString、s_CommerceProviderConnectionStringおよびs_ProfileServiceConnectionString
- Global Resources -> Profiles(YourSiteName) -> Profile Catalog -> Profile Definitions -> Data Sources -> ProfileService_SQLSource -> Partitions -> SQLSource配下
備考:Azureポータルから直節に接続文字列をコピーする場合、「tcp:」プレフィックスを削除する必要があります。削除しないと、Commerce Server Managerで例外がスローされる可能性があります。
Commerce Engineの場合(例:CommerceAuthoring):
- インストールした製品のバージョンに該当する環境のjsonファイルを検索し、(デフォルトのデプロイでは、C:\inetpub\CommerceAuthoring\wwwrootフォルダ配下にあります) 以下の変更を提供します:
- bootstrap\Global.jsonファイルにおいて、Sitecore.Commerce.Plugin.Customers.Cs.ProfilesSqlPolicyおよびSitecore.Commerce.Plugin.Customers.Csタイプの接続情報をSitecoreCommerce_Globalに変更します。
- data\Environments\PlugIn.Habitat.CommerceAuthoring-1.0.0.jsonファイルにおいて、Sitecore.Commerce.Plugin.SQL.EntityStoreSqlPolicyおよびSitecore.Commerce.Plugin.SQLタイプの接続情報をSitecoreCommerce_SharedEnvironmentsに変更します。
- Sitecore.Commerce.Plugin.Customers.Cs.ProfilesSqlPolicyおよびSitecore.Commerce.Plugin.Customers.Csタイプの接続情報をYourCommerceServerSiteName _profilesに変更します。
- Sitecore.Commerce.Plugin.Inventory.Cs.InventoryCatalogSqlPolicyおよびSitecore.Commerce.Plugin.Inventory.Csタイプの接続情報をYourCommerceServerSiteName _productcatalogに変更します。
変更後のAzure SQLへの接続情報は、以下の通りになります:
"Server": "URLtoAzureSQLInstance",
"Database": "CFSolutionStorefrontSite_profiles", (keep the same database names)
"TrustedConnection": false,
"UserName": "AzureUser",
"Password": "AzurePassword"
- Commerce Engineのアプリケーション プールを再起動して、古い接続文字列のキャッシュを更新します。
- Bootstrapを実行して、SitecoreCommerce_Globalデータベースの接続文字列情報を更新します(例:http://localhost:5000/commerceops/Bootstrap())。
- 上述の手順に従って、SitecoreCommerce_GlobalデータベースをAzure SQLに移行します。
Sitecore XPの場合:
- \App_Config\ConnectionStrings.configファイル内の接続情報を変更します。
- Microsoft Azure SQLは、複数データベースのクエリおよび分散トランザクション(DTC)の限定的なサポートを提供しています。従って、複数のSitecore Commerceのインスタンスが含まれるAzure SQLでスケールされたデプロイを実施するには、同じAzure SQLサーバーでSitecore、Commerce ServerおよびCommerce Engineデータベースをデプロイすることを推奨します。
- Commerce Serverのステージングは、本番前の環境と本番環境の間のカタログ データをステージングするために使用します。WindowsユーザーであるCommerce Server Staging (CSS)サービス アカウントにAzure SQLのカタログ データベースのソースおよび宛先でのアクセス権限を付与する必要があります。Commerce Serverがインストールされたソースおよび対象場所に同じLOCALアカウントを作成したり、同じユーザー名にAzure SQLのアクセス権限を割り当てたりすることができます(尚、インストールされたソースおよび宛先で独立して存在します)。New ProjectのウィザードがWindowsユーザーの認証により失敗する可能性があるため、対象サーバーででステージング プロジェクトを手動で作成する必要があります。
- Sitecore CommerceデータベースをAzure SQLで実行する場合、想定される使用量に合わせてサービス レベルのサイズを調整する必要があります。これを実施するには、Microsoftが公開されているガイドラインに従ってDTUの使用量を監視したり、システムに対して代表的な負荷を実施するなどを行います。これは特にCatalogデータベースで重要です。サービス レベルで設定したDTUの制限を超えた場合、データベースのパフォーマンス レベルを上げない限り、コマースのコマンドが失敗する可能性があります。
- [1] コマース エンジンを直接にAzure SQLにデプロイを実施するには、CommerceServicesDbScript.sqlスクリプトの代わりに、コマース エンジンのSDKに含まれるSitecore.Commerce.Engine.DB.dacpacファイルを使用することができます。ただし、デプロイの実施を継続するには、デプロイの手順に従って実施することができないため、コマース エンジンの接続情報については、本記事に記載された手順に従って実施する必要があります。