---
title: "ウォークスルー:SQLプロバイダーを用いた共有セッション状態データベースの設定"
slug: "walkthrough--configuring-a-shared-session-state-database-using-the-sql-provider"
abstract: "SQLサービスプロバイダーをプライベートセッションステートストアとして使う方法。"
---
# ウォークスルー:SQLプロバイダーを用いた共有セッション状態データベースの設定

連絡先は異なるデバイスやブラウザセッションから同時に複数回ウェブサイトにアクセスすることができます。共有セッション状態の場合 [、セッション状態データベースは](https://doc.sitecore.com/xp/ja/developers/92/platform-administration-and-architecture/scaling-and-configuring-session-state.html "Scaling and configuring session state") これらの複数のセッション間で共有可能なすべてのデータを収集します。これには例えば連絡先やデバイスに関するデータが含まれます。このデータは連絡先にとっては依然としてプライベートですが、同じ連絡先が作成したすべての現在のセッションからアクセス可能です。

単一のCDサーバー、複数のCDサーバー、クラスタ環境のいずれであっても、コンテンツデリバリー(CD)サーバー上では常に共有セッション状態を設定しなければなりません。

> !注共有セッション状態はコンテンツ管理(CM)サーバーではサポートされていません。

共有セッションステートは、抽象SessionStateStoreProviderBaseクラスを拡張する任意のセッションステートストアプロバイダー(ASP.NETに付属)を使用できるように設定できます。唯一の追加要件は、セッションステートストアプロバイダーがSessionStateItemExpireCallbackデリゲートを使ってSessionEndイベントを呼び出せることです。

> !注ASP.NETに付属する標準のOutOfProcSessionStateStoreクラスはSessionEndイベントをサポートしていないため、共有セッション状態では使用できません。

このウォークスルーでは、Sitecore ASP.NET SQL Serverセッションステートプロバイダーを使って、SQL Serverデータベースを共有セッションステートストアプロバイダーとして使う方法を説明します。以下のような方法を説明しています:

-   SQL Serverセッションデータベースのデプロイ
-   Sitecoreの設定
-   共有セッションの状態設定を調整する

## SQL Serverセッションデータベースのデプロイ

*Sitecore ASP.NET Session State Provider(SQL Server)は*、SQL Serverをセッションステートストアとして使用できるようにします。このプロバイダは、xDBがウェブサイト訪問を追跡するために必要なSessionEndイベントをサポートします。

> !注共有セッションの状態情報とプライベートセッションの状態情報を同じデータベースに保存できます。データベースはセッションの種類を区別できます。

SQL Serverセッションデータベースを展開するには:

1.  2016年以降Microsoft SQL Server Management Studio 100を始めましょう。
    
2.  セッションデータベースをインストールしたいサーバーノードにConnectしてください。
    
3.  サーバーノードを展開し、「 **データベース**」を右クリックしてから **「データティアアプリケーションをデプロイ**」をクリックします。
    
4.  データ **ティアアプリケーションをデプロイ** するウィザードの「**パッケージ選択**」ページで、「 **ブラウズ**」をクリックします。
    
5.  Sitecore.Sessions.dacpacファイルを選択して「**次へ**」をクリックします。
    
    > !注Sitecoreアーカイブのルートにある*Databases*フォルダでそのファイルを確認できます。
    
6.  **「設定の更新**」ステップでデータベース名を指定し、「**次へ**」をクリックし、要約情報の検証後に**「次へ**」をクリックします。デプロイが完了すると、セッションデータベースは添付データベースのリストに表示されます。
    
7.  ConnectionStrings.configファイルに以下の接続文字列を追加します:
    
    <add
     name="sharedSession"
     connectionString="User ID=<SQL server username>;Password=<user password>;Data Source=<SQL server>;Database=<shared session database name>"
    />
    
8.  接続文字列のユーザーはセッションデータベース上でストアドプロシージャを実行することを許可されなければなりません。他の権限は必要ありません。システム管理者は以下のSQL文でこの権限を付与できます:
    
    USE <shared session database name>;
    GRANT EXECUTE TO <SQL server username>;
    GO

## Sitecoreの設定

> !注設定ファイルに直接変更を加えないでください。代わりに、実行時に必要な変更を行う [パッチファイル](https://doc.sitecore.com/xp/ja/developers/92/platform-administration-and-architecture/use-a-patch-file-to-customize-the-sitecore-configuration.html "Use a patch file to customize the Sitecore configuration") を作成する必要があります。

デフォルトでは、Sitecoreはインプロセスプロバイダーを使用し、これはデータをメモリに格納し、内部のASP.NETInProcSessionStateStoreクラスで実装されています。 

<sharedSessionState defaultProvider="inProc">
 <providers>
 <clear/>
 <add name="inProc"
 type="System.Web.SessionState.InProcSessionStateStore"
 />
 </providers>

SitecoreをSQL Serverの共有セッションステートストアプロバイダーをデフォルトではなく使用するように設定するには:

1.  ウェブサイトのルートフォルダで \\App\_Config\\Sitecore\\Marketing.Trackingフォルダに移動します。
    
2.  Sitecore.Analytics.Tracking.Configファイルを開け。
    
3.  デフォルトの共有セッション状態プロバイダーを定義できる行を次のパスで探sitecore/tracking/sharedSessionState。
    
4.  デフォルトのプロバイダーをinProcからmssqlに変更し、name属性値をmssqlに変更します。
    
    <sharedSessionState
     defaultProvider="mssql">
     <providers>
     <clear/>
     <add name="mssql"
     type="Sitecore.SessionProvider.Sql.SqlSessionStateProvider,Sitecore.SessionProvider.Sql"
     connectionStringName="sharedsession"
     pollingInterval="2"
     compression="true"
     sessionType="shared"/>
     </providers>
    

> !注共有セッションの状態情報とプライベートセッションの状態情報を同じデータベースに保存できます。データベースはセッションの種類を区別できます。

## 共有セッションの状態設定を調整する

Sitecore.Analytics.Tracking.Configファイル内で、以下のセッションステート設定を編集してください:

舞台設定

概要

価値

connectionStringName

Sitecoreがセッションデータベースに接続するために使用する接続文字列を指定します。  
  
欲しいセッションステートデータベースを指定するために編集してください。

例えば:  
  
connectionStringName="sharedSession"

pollingInterval

セッション状態提供者がセッションの期限切れを確認するために使用する秒単位の時間間隔を指定します。

例えば:  
  
pollingInterval="2"

compression

セッションステートデータを圧縮したいと指定しています。  
  
デフォルト値は trueです。セッションステートデータを圧縮することで、データベースとSitecoreインスタンス間で転送するデータ量が減ります。これにより追加のCPUオーバーヘッドが発生することがあります。

例えば:  
  
compression="true"

sessionType

セッション状態のタイプが sharedであることを指定します。

唯一の有効な価値:  
  
sessionType="shared"