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

# Fabric sql

## Overview

Emit collected data from Entegrata into a Microsoft Fabric workspace through its SQL endpoint.

**Emission is available to customers on both hosting models.**

**Destination type:** SQL database (Microsoft Fabric SQL endpoint)

## Before You Start

Entegrata authenticates to Fabric with an Azure AD identity. Pick one of:

* **Managed Identity** — ask your Entegrata Customer Experience Manager for the managed identity Entegrata uses in Azure. Add that identity to the target Fabric workspace as a **Member** (or higher) and grant it read/write access to the target database.
* **Service Principal** — create (or reuse) an Azure AD app registration with a client secret or certificate. Add the app registration to the target Fabric workspace as a **Member** (or higher) and grant it read/write access to the target database.
* Pick (or create) a target schema where Entegrata can create and manage tables

See [Azure Entra ID Authentication](/data/collector/connections/entra-authentication) for detailed setup steps.

## Connection Details

<ResponseField name="Host" type="string" required>
  Fabric SQL endpoint hostname, e.g. `<workspace>.datawarehouse.fabric.microsoft.com`.
</ResponseField>

<ResponseField name="Port" type="number">
  TCP port. Leave blank to use the default (`1433`).
</ResponseField>

<ResponseField name="Database" type="string" required>
  Fabric database / warehouse name.
</ResponseField>

<ResponseField name="Target Schema" type="string" required>
  Schema inside the database where emitted tables live. Defaults to `dbo`.
</ResponseField>

<ResponseField name="Encrypt Connection" type="boolean" default="true">
  Encrypt the connection in transit. Enabled by default. Only disable for legacy servers that cannot negotiate encryption.
</ResponseField>

## Authentication

Fabric endpoints don't accept SQL logins — Entegrata authenticates with an Azure AD identity. Pick the method that matches how you've set up access.

<Tabs>
  <Tab title="Entra Service Principal">
    Application-based authentication using an Azure AD app registration.

    <ResponseField name="Tenant ID" type="string" required>
      Azure AD tenant (directory) ID.
    </ResponseField>

    <ResponseField name="Client ID" type="string" required>
      Application (client) ID of the Azure AD app registration.
    </ResponseField>

    <ResponseField name="Client Secret" type="string">
      Client secret from the app registration. Provide **either** a secret **or** a certificate.
    </ResponseField>

    <ResponseField name="Client Certificate" type="string">
      PEM-encoded client certificate. Provide **either** a secret **or** a certificate.
    </ResponseField>

    <Warning>
      Service principal secrets and certificates expire. Set the **Secret Expiration** field on the connection so you're notified before they do.
    </Warning>
  </Tab>

  <Tab title="Entra ID">
    Passwordless authentication using the managed identity Entegrata uses in Azure. No credentials are entered — the managed identity must be added to the Fabric workspace and granted access to the target.

    <Note>
      Entra ID (managed identity) authentication is only available for self-hosted instances. Entegrata-hosted instances must use the Service Principal option.
    </Note>
  </Tab>
</Tabs>

## Write Modes

* **Full Refresh** — Entegrata loads all rows into a staging table and atomically swaps it with the target table. Any indexes, unique keys, and foreign keys you've added to the target are captured beforehand and reapplied after the swap.
* **Incremental Merge** — Entegrata writes only rows that changed in the source since the last emission, using the target's primary key to apply inserts, updates, and deletes in a single `MERGE`.

Entegrata picks the mode automatically on each emission — Full Refresh for the first run or when the schema changes materially, Incremental Merge for subsequent runs.

## Naming Convention

Emitted table and column names are transformed to match the convention configured on the emitter (default: `snake_case`). Configure the convention per emitter to match the downstream tools consuming the replica.
