> ## 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

> Sincronize eventos personalizados do Microsoft SQL Server para o OneSignal para acionar Journeys automatizados e campanhas de mensagens personalizadas com base no comportamento do usuário.

export const PLATFORM_0 = "SQL Server"

export const DATA_TYPE_0 = "dados de eventos"

export const COLUMN_HEADER_0 = "Coluna SQL Server"

export const PROPERTIES_DESCRIPTION_0 = "Metadados de eventos como string JSON"

## Visão geral

A integração OneSignal + SQL Server permite a sincronização de eventos personalizados do seu banco de dados Microsoft SQL Server para o OneSignal para acionar campanhas de mensagens automatizadas e Journeys com base no comportamento do usuário.

SQL Server é o sistema de gerenciamento de banco de dados relacional da Microsoft projetado para aplicações empresariais e data warehousing.

***

## Requisitos

* Access to [Event Streams](/docs/en/event-streams) for outbound message events (Plan limitations and overages apply)
* Access to [Custom Events](/docs/en/custom-events) for inbound event syncing (Plan limitations and overages apply)
* [Updated Account Plan](https://onesignal.com/pricing) (not available on free apps)

### SQL Server

* **Instância SQL Server** com acesso de rede
* **Usuário de banco de dados** com permissões apropriadas
* **Tabelas de eventos** contendo dados comportamentais estruturados
* **Conectividade de rede** do OneSignal para sua instância SQL Server

***

## Configuração

<Steps>
  <Step title="Criar usuário dedicado para o OneSignal">
    Crie uma conta de usuário dedicada com uma senha forte e única:

    ```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>
      Todos os comandos SQL Server serão executados dentro do banco de dados especificado ao executar o script.
    </Info>
  </Step>

  <Step title="Conceder permissões de leitura">
    Forneça acesso somente leitura aos seus dados de eventos:

    ```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>
      Substitua `<your-schema>` pelo nome real do seu schema contendo dados de eventos. Repita este comando para cada schema que você deseja que o OneSignal acesse.
    </Info>
  </Step>

  <Step title="Configurar Advanced Sync Engine (Opcional)">
    Para desempenho aprimorado, crie um schema de contabilidade para o estado de sincronização do 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>
      Pule esta etapa se estiver usando Basic Sync Engine ou modo somente leitura.
    </Warning>
  </Step>

  <Step title="Conectar ao OneSignal">
    In OneSignal, go to **Data > Integrations** and click **Add Integration**.

    Selecione **SQL Server** e forneça os seguintes detalhes de conexão:

    * **Host:** Nome do host ou endereço IP da sua instância SQL Server
    * **Port:** 1433 (padrão) ou sua porta customizada
    * **Database:** Nome do seu banco de dados
    * **Username:** `CENSUS`
    * **Password:** A senha da Etapa 1
  </Step>
</Steps>

***

### Event data mapping

Map your {PLATFORM_0} {DATA_TYPE_0} to OneSignal's custom events format:

| OneSignal Field | {COLUMN_HEADER_0} | Description                | Required |
| --------------- | ----------------- | -------------------------- | -------- |
| `name`          | `event_name`      | Event identifier           | Yes      |
| `external_id`   | `user_id`         | User identifier            | Yes      |
| `timestamp`     | `event_timestamp` | When event occurred        | No       |
| `properties`    | `event_data`      | {PROPERTIES_DESCRIPTION_0} | No       |

### Exemplo de Schema de Tabela de Eventos

```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)
);
```

### Modo de Consulta SQL

Escreva consultas SQL personalizadas para transformar seus dados de eventos:

```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;
```

***

## Configuração Avançada de Rede

O OneSignal pode se conectar com sucesso a instâncias SQL Server que estão usando controles de rede avançados, incluindo restrições de região, listas de permissão de endereços IP ou SSH Tunneling.

Para mais informações sobre configuração de acesso de rede, entre em contato com seu administrador SQL Server ou suporte do OneSignal.

***

## Opções de Sync Engine

### Basic Sync Engine

* Acesso somente leitura aos seus dados de eventos
* Rastreamento de estado gerenciado pela infraestrutura do OneSignal
* Configuração mais simples com permissões mínimas

### Advanced Sync Engine

* Desempenho aprimorado com rastreamento de estado local
* Requer permissões adicionais para criar tabelas
* Recomendado para processamento de eventos de alto volume

***

## Limitações

* Consultas complexas podem impactar o desempenho do banco de dados durante períodos de alto tráfego
* Operações JSON requerem SQL Server 2016 ou posterior para desempenho ideal
* Todas as permissões são concedidas no nível do banco de dados especificado durante a configuração

***

## FAQ

### Posso me conectar a múltiplos schemas SQL Server?

Sim, você pode conceder ao usuário CENSUS acesso a múltiplos schemas executando a declaração `GRANT SELECT, VIEW DEFINITION ON SCHEMA::<schema>` para cada schema contendo dados de eventos.

### Quais versões do SQL Server são suportadas?

O OneSignal suporta versões modernas do SQL Server. Para operações JSON em consultas de eventos, SQL Server 2016 ou posterior é recomendado.

### Preciso usar o Advanced Sync Engine?

Não, o Basic Sync Engine funciona bem para a maioria dos casos de uso. Use o Advanced Sync Engine se você precisa de desempenho aprimorado e pode permitir que o OneSignal crie tabelas na sua instância SQL Server.
