Configure Azure Synapse Workspace SQL Pool Table Data Sets

The azure-native:datashare:SynapseWorkspaceSqlPoolTableDataSet resource, part of the Pulumi Azure Native provider, registers a Synapse Workspace SQL Pool table as a dataset within an Azure Data Share. This guide focuses on one capability: adding Synapse SQL Pool tables to existing shares.

This resource references existing Data Share infrastructure and Synapse tables through Azure resource IDs. The example is intentionally minimal. Combine it with Data Share invitations, dataset mappings, and synchronization schedules for complete data sharing workflows.

Add a Synapse SQL Pool table to a data share

Data providers need to register specific tables from their Synapse SQL Pools as datasets, enabling recipients to access structured data through the Data Share service.

import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";

const synapseWorkspaceSqlPoolTableDataSet = new azure_native.datashare.SynapseWorkspaceSqlPoolTableDataSet("synapseWorkspaceSqlPoolTableDataSet", {
    accountName: "sourceAccount",
    dataSetName: "dataset1",
    kind: "SynapseWorkspaceSqlPoolTable",
    resourceGroupName: "SampleResourceGroup",
    shareName: "share1",
    synapseWorkspaceSqlPoolTableResourceId: "/subscriptions/0f3dcfc3-18f8-4099-b381-8353e19d43a7/resourceGroups/SampleResourceGroup/providers/Microsoft.Synapse/workspaces/ExampleWorkspace/sqlPools/ExampleSqlPool/schemas/dbo/tables/table1",
});
import pulumi
import pulumi_azure_native as azure_native

synapse_workspace_sql_pool_table_data_set = azure_native.datashare.SynapseWorkspaceSqlPoolTableDataSet("synapseWorkspaceSqlPoolTableDataSet",
    account_name="sourceAccount",
    data_set_name="dataset1",
    kind="SynapseWorkspaceSqlPoolTable",
    resource_group_name="SampleResourceGroup",
    share_name="share1",
    synapse_workspace_sql_pool_table_resource_id="/subscriptions/0f3dcfc3-18f8-4099-b381-8353e19d43a7/resourceGroups/SampleResourceGroup/providers/Microsoft.Synapse/workspaces/ExampleWorkspace/sqlPools/ExampleSqlPool/schemas/dbo/tables/table1")
package main

import (
	datashare "github.com/pulumi/pulumi-azure-native-sdk/datashare/v3"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := datashare.NewSynapseWorkspaceSqlPoolTableDataSet(ctx, "synapseWorkspaceSqlPoolTableDataSet", &datashare.SynapseWorkspaceSqlPoolTableDataSetArgs{
			AccountName:                            pulumi.String("sourceAccount"),
			DataSetName:                            pulumi.String("dataset1"),
			Kind:                                   pulumi.String("SynapseWorkspaceSqlPoolTable"),
			ResourceGroupName:                      pulumi.String("SampleResourceGroup"),
			ShareName:                              pulumi.String("share1"),
			SynapseWorkspaceSqlPoolTableResourceId: pulumi.String("/subscriptions/0f3dcfc3-18f8-4099-b381-8353e19d43a7/resourceGroups/SampleResourceGroup/providers/Microsoft.Synapse/workspaces/ExampleWorkspace/sqlPools/ExampleSqlPool/schemas/dbo/tables/table1"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;

return await Deployment.RunAsync(() => 
{
    var synapseWorkspaceSqlPoolTableDataSet = new AzureNative.DataShare.SynapseWorkspaceSqlPoolTableDataSet("synapseWorkspaceSqlPoolTableDataSet", new()
    {
        AccountName = "sourceAccount",
        DataSetName = "dataset1",
        Kind = "SynapseWorkspaceSqlPoolTable",
        ResourceGroupName = "SampleResourceGroup",
        ShareName = "share1",
        SynapseWorkspaceSqlPoolTableResourceId = "/subscriptions/0f3dcfc3-18f8-4099-b381-8353e19d43a7/resourceGroups/SampleResourceGroup/providers/Microsoft.Synapse/workspaces/ExampleWorkspace/sqlPools/ExampleSqlPool/schemas/dbo/tables/table1",
    });

});
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.datashare.SynapseWorkspaceSqlPoolTableDataSet;
import com.pulumi.azurenative.datashare.SynapseWorkspaceSqlPoolTableDataSetArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var synapseWorkspaceSqlPoolTableDataSet = new SynapseWorkspaceSqlPoolTableDataSet("synapseWorkspaceSqlPoolTableDataSet", SynapseWorkspaceSqlPoolTableDataSetArgs.builder()
            .accountName("sourceAccount")
            .dataSetName("dataset1")
            .kind("SynapseWorkspaceSqlPoolTable")
            .resourceGroupName("SampleResourceGroup")
            .shareName("share1")
            .synapseWorkspaceSqlPoolTableResourceId("/subscriptions/0f3dcfc3-18f8-4099-b381-8353e19d43a7/resourceGroups/SampleResourceGroup/providers/Microsoft.Synapse/workspaces/ExampleWorkspace/sqlPools/ExampleSqlPool/schemas/dbo/tables/table1")
            .build());

    }
}
resources:
  synapseWorkspaceSqlPoolTableDataSet:
    type: azure-native:datashare:SynapseWorkspaceSqlPoolTableDataSet
    properties:
      accountName: sourceAccount
      dataSetName: dataset1
      kind: SynapseWorkspaceSqlPoolTable
      resourceGroupName: SampleResourceGroup
      shareName: share1
      synapseWorkspaceSqlPoolTableResourceId: /subscriptions/0f3dcfc3-18f8-4099-b381-8353e19d43a7/resourceGroups/SampleResourceGroup/providers/Microsoft.Synapse/workspaces/ExampleWorkspace/sqlPools/ExampleSqlPool/schemas/dbo/tables/table1

The synapseWorkspaceSqlPoolTableResourceId property points to the full Azure resource path of your Synapse table, including subscription, resource group, workspace, SQL pool, schema, and table name. The accountName and shareName properties identify where this dataset lives within your Data Share hierarchy. The kind property must be set to “SynapseWorkspaceSqlPoolTable” to indicate this dataset type. Once registered, recipients can map this dataset to their own Synapse SQL Pools during share subscription.

Beyond these examples

This snippet focuses on Synapse SQL Pool table dataset registration. It’s intentionally minimal rather than a complete data sharing solution.

The example references pre-existing infrastructure such as Data Share accounts and shares, and Synapse workspaces with SQL pools, schemas, and tables. It focuses on dataset registration rather than provisioning the surrounding infrastructure.

To keep things focused, common Data Share patterns are omitted, including:

  • Dataset mapping configuration for recipients
  • Synchronization settings and schedules
  • Access permissions and role assignments
  • Multiple dataset types (Kusto, SQL DB, blob storage)

These omissions are intentional: the goal is to illustrate how the dataset registration is wired, not provide drop-in data sharing modules. See the SynapseWorkspaceSqlPoolTableDataSet resource reference for all available configuration options.

Let's configure Azure Synapse Workspace SQL Pool Table Data Sets

Get started with Pulumi Cloud, then follow our quick setup guide to deploy this infrastructure.

Try Pulumi Cloud for FREE

Frequently Asked Questions

Resource Configuration
What properties can't I change after creating the dataset?
Four properties are immutable: accountName, dataSetName, resourceGroupName, and shareName. To change any of these, you must delete and recreate the resource.
What value should I use for the kind property?
The kind property must be set to SynapseWorkspaceSqlPoolTable. This is the expected value for this resource type.
How do I specify which Synapse SQL Pool table to share?
Use the full Azure resource ID in synapseWorkspaceSqlPoolTableResourceId. The format is: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}/sqlPools/{sqlPoolName}/schemas/{schemaName}/tables/{tableName}
Import & Migration
How do I import an existing Synapse SQL Pool table dataset?
Use the import command: pulumi import azure-native:datashare:SynapseWorkspaceSqlPoolTableDataSet <name> /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataShare/accounts/{accountName}/shares/{shareName}/dataSets/{dataSetName}

Using a different cloud?

Explore analytics guides for other cloud providers: