> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SQL Server

> Microsoft SQL ServerからOneSignalにカスタムイベントを同期して、ユーザー行動に基づいた自動化されたJourneysとパーソナライズされたメッセージングキャンペーンをトリガーします。

export const PLATFORM_0 = "SQL Server"

export const DATA_TYPE_0 = "event data"

export const COLUMN_HEADER_0 = "SQL Server Column"

export const PROPERTIES_DESCRIPTION_0 = "Event metadata as JSON string"

## 概要

OneSignal + SQL Server統合により、Microsoft SQL Serverデータベースからカスタムイベントを同期してOneSignalに送信し、ユーザー行動に基づいた自動化されたメッセージングキャンペーンとJourneysをトリガーできます。

SQL Serverは、エンタープライズアプリケーションとデータウェアハウジング向けに設計されたMicrosoftのリレーショナルデータベース管理システムです。

***

## 要件

* アウトバウンドメッセージイベント用の[Event Streams](/docs/ja/event-streams)へのアクセス（プランの制限と超過料金が適用されます）
* インバウンドイベント同期用の[Custom Events](/docs/ja/custom-events)へのアクセス（プランの制限と超過料金が適用されます）
* [更新されたアカウントプラン](https://onesignal.com/pricing)（無料アプリでは利用できません）

### SQL Server

* ネットワークアクセスを持つ**SQL Serverインスタンス**
* 適切な権限を持つ**データベースユーザー**
* 構造化された行動データを含む**イベントテーブル**
* OneSignalからSQL Serverインスタンスへの**ネットワーク接続**

***

## セットアップ

<Steps>
  <Step title="OneSignal用の専用ユーザーを作成">
    強力で一意のパスワードを持つ専用ユーザーアカウントを作成します：

    ```sql theme={null}
    -- Create census user with the ability to sign in with a password
    CREATE USER CENSUS WITH PASSWORD = '<strong-unique-password>';

    -- Give the census user the ability to connect to database
    GRANT CONNECT TO CENSUS;
    ```

    <Info>
      すべてのSQL Serverコマンドは、スクリプトを実行する際に指定されたデータベース内で実行されます。
    </Info>
  </Step>

  <Step title="読み取り権限を付与">
    イベントデータへの読み取り専用アクセスを提供します：

    ```sql theme={null}
    -- Give the census user the ability to read tables within the database
    EXEC sp_addrolemember 'db_datareader', CENSUS;

    -- Grant census user ability to read data from within a schema
    -- Run this for each schema you intend OneSignal to access
    GRANT SELECT, VIEW DEFINITION ON SCHEMA::<your-schema> TO CENSUS;
    ```

    <Info>
      `<your-schema>`をイベントデータを含む実際のスキーマ名に置き換えてください。OneSignalにアクセスさせたい各スキーマに対してこのコマンドを繰り返します。
    </Info>
  </Step>

  <Step title="Advanced Sync Engineを設定（オプション）">
    パフォーマンス向上のために、OneSignalの同期状態用のブックキーピングスキーマを作成します：

    ```sql theme={null}
    -- Create a private bookkeeping schema where Census can store sync state
    CREATE SCHEMA CENSUS AUTHORIZATION CENSUS;

    -- Give the census user full access to the bookkeeping schema
    GRANT ALTER, DELETE, EXECUTE, INSERT, REFERENCES, SELECT,
              UPDATE, VIEW DEFINITION ON SCHEMA::CENSUS TO CENSUS;

    -- Give the census user the ability to create tables within the database
    GRANT CREATE TABLE TO CENSUS;
    ```

    <Warning>
      Basic Sync Engineまたは読み取り専用モードを使用している場合は、この手順をスキップしてください。
    </Warning>
  </Step>

  <Step title="OneSignalに接続">
    OneSignalで、**Data > Integrations**に移動し、**Add Integration**をクリックします。

    **SQL Server**を選択し、次の接続詳細を提供します：

    * **Host：** SQL Serverインスタンスのホスト名またはIPアドレス
    * **Port：** 1433（デフォルト）またはカスタムポート
    * **Database：** データベース名
    * **Username：** `CENSUS`
    * **Password：** ステップ1のパスワード
  </Step>
</Steps>

***

### イベントデータマッピング

{PLATFORM_0} {DATA_TYPE_0}をOneSignalのカスタムイベント形式にマッピングします：

| OneSignalフィールド | {COLUMN_HEADER_0} | 説明                         | 必須  |
| -------------- | ----------------- | -------------------------- | --- |
| `name`         | `event_name`      | イベント識別子                    | はい  |
| `external_id`  | `user_id`         | ユーザー識別子                    | はい  |
| `timestamp`    | `event_timestamp` | イベントが発生した時刻                | いいえ |
| `properties`   | `event_data`      | {PROPERTIES_DESCRIPTION_0} | いいえ |

### イベントテーブルスキーマの例

```sql theme={null}
-- Example SQL Server event table
CREATE TABLE analytics.user_events (
    event_id BIGINT IDENTITY(1,1) PRIMARY KEY,
    event_name NVARCHAR(100) NOT NULL,
    user_id NVARCHAR(255) NOT NULL,
    event_timestamp DATETIME2 DEFAULT GETUTCDATE(),
    event_data NVARCHAR(MAX),
    session_id NVARCHAR(255),
    device_type NVARCHAR(50)
);
```

### SQLクエリモード

カスタムSQLクエリを記述してイベントデータを変換します：

```sql theme={null}
-- Example: Recent high-value events
SELECT
    event_name,
    user_id,
    event_timestamp,
    event_data
FROM analytics.user_events
WHERE event_timestamp >= DATEADD(day, -7, GETUTCDATE())
    AND JSON_VALUE(event_data, '$.value') > 100
ORDER BY event_timestamp DESC;
```

***

## 高度なネットワーク設定

OneSignalは、リージョン制約、IPアドレス許可リスト、またはSSHトンネリングを含む高度なネットワーク制御を使用しているSQL Serverインスタンスに正常に接続できます。

ネットワークアクセスの設定の詳細については、SQL Server管理者またはOneSignalサポートにお問い合わせください。

***

## 同期エンジンオプション

### Basic Sync Engine

* イベントデータへの読み取り専用アクセス
* OneSignalインフラストラクチャによって管理される状態追跡
* 最小限の権限でより簡単なセットアップ

### Advanced Sync Engine

* ローカル状態追跡によるパフォーマンスの向上
* テーブルを作成するための追加の権限が必要
* 大量のイベント処理に推奨

***

## 制限事項

* 複雑なクエリは、トラフィックが多い期間中にデータベースのパフォーマンスに影響を与える可能性があります
* JSON操作には、最適なパフォーマンスのためにSQL Server 2016以降が必要です
* すべての権限は、セットアップ中に指定されたデータベースレベルで付与されます

***

## FAQ

### 複数のSQL Serverスキーマに接続できますか？

はい、イベントデータを含む各スキーマに対して`GRANT SELECT, VIEW DEFINITION ON SCHEMA::<schema>`ステートメントを実行することで、CENSUSユーザーに複数のスキーマへのアクセスを許可できます。

### どのSQL Serverバージョンがサポートされていますか？

OneSignalは最新のSQL Serverバージョンをサポートしています。イベントクエリでのJSON操作には、SQL Server 2016以降を推奨します。

### Advanced Sync Engineを使用する必要がありますか？

いいえ、Basic Sync Engineはほとんどのユースケースで十分に機能します。パフォーマンスの向上が必要で、OneSignalがSQL Serverインスタンスにテーブルを作成することを許可できる場合は、Advanced Sync Engineを使用してください。
