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 FREEFrequently Asked Questions
Resource Configuration
kind (set to “SynapseWorkspaceSqlPoolTable”), synapseWorkspaceSqlPoolTableResourceId, accountName, dataSetName, resourceGroupName, and shareName.synapseWorkspaceSqlPoolTableResourceId must follow this format: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}/sqlPools/{sqlPoolName}/schemas/{schemaName}/tables/{tableName}.kind to “SynapseWorkspaceSqlPoolTable”. This is the expected value for this data set type.Lifecycle & Immutability
accountName, dataSetName, resourceGroupName, and shareName are immutable. Changing any of these will force resource replacement.dataSetId is a computed output property that provides a unique identifier for the data set resource.Import & Migration
pulumi import azure-native:datashare:SynapseWorkspaceSqlPoolTableDataSet <name> /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataShare/accounts/{accountName}/shares/{shareName}/dataSets/{dataSetName}.