パフォーマンス ブースト スクリプトを適用した後のセッション データベースへのアクセスの事象


説明

この記事の「Optimize SQL Server performance」節のパフォーマンス最適化スクリプトを適用した後、SQLサーバーの再起動後にセッション データベースの読み取り・書き込み操作で問題が発生する可能性があります。スクリプトによって作成されたtempDBにアクセスできるように構成されたSQLユーザーがアクセス権を失い、Sitecoreがセッション関連のエラーをスローする可能性があります。この挙動は、SQLサーバーが再起動される度に、tempDBがアクセス権とともに再作成されることに関連しています。

解決策

  1. 以下の通りに、「Sessions db performance boost.sql」スクリプトを開き、太字で記載されているクエリを追加します。
    CREATE PROCEDURE [dbo].[Sitecore_InitializeSessionState] AS
    BEGIN
    EXECUTE [Sitecore.Sessions].[dbo].[CreateTables];
    EXEC('USE tempDb; CREATE USER [YOUR_USER] FOR LOGIN [YOUR_USER] WITH DEFAULT_SCHEMA=[dbo]; ALTER ROLE [db_datareader] ADD MEMBER [YOUR_USER]; ALTER ROLE [db_datawriter] ADD MEMBER [YOUR_USER]')
    END;
    GO
  2. スクリプトを実行するには、「Walkthrough: Configuring a shared session state database using SQL」記事の「Optimize SQL Server performance」節のパフォーマンス強化手順を実施します。

謝辞

本事象の解決策をご提供いただきました「Rock, Paper, Sitecore」ブログの著者Rob Ahnemann氏および、その読者のShaun氏に御礼申し上げます。本解決策の元記事は、次のリンクからアクセスすることができます。
Sitecore Shared Session: Moving from the tempDB