Configure Azure SQL Data Warehouse Data Sets

The azure-native:datashare:SqlDWTableDataSet resource, part of the Pulumi Azure Native provider, adds a SQL Data Warehouse table as a dataset within an Azure Data Share, defining which table consumers can access. This guide focuses on one capability: configuring SQL Data Warehouse table datasets for sharing.

This resource belongs to an Azure Data Share share and references an existing SQL server, data warehouse, and table. The example is intentionally small. Combine it with your own Data Share accounts, shares, and SQL infrastructure.

Add a SQL Data Warehouse table to a share

Data providers sharing SQL Data Warehouse tables specify the warehouse, schema, and table details so consumers can access the data through Azure Data Share.

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

const sqlDWTableDataSet = new azure_native.datashare.SqlDWTableDataSet("sqlDWTableDataSet", {
    accountName: "Account1",
    dataSetName: "Dataset1",
    dataWarehouseName: "DataWarehouse1",
    kind: "SqlDWTable",
    resourceGroupName: "SampleResourceGroup",
    schemaName: "dbo",
    shareName: "Share1",
    sqlServerResourceId: "/subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Sql/servers/Server1",
    tableName: "Table1",
});
import pulumi
import pulumi_azure_native as azure_native

sql_dw_table_data_set = azure_native.datashare.SqlDWTableDataSet("sqlDWTableDataSet",
    account_name="Account1",
    data_set_name="Dataset1",
    data_warehouse_name="DataWarehouse1",
    kind="SqlDWTable",
    resource_group_name="SampleResourceGroup",
    schema_name="dbo",
    share_name="Share1",
    sql_server_resource_id="/subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Sql/servers/Server1",
    table_name="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.NewSqlDWTableDataSet(ctx, "sqlDWTableDataSet", &datashare.SqlDWTableDataSetArgs{
			AccountName:         pulumi.String("Account1"),
			DataSetName:         pulumi.String("Dataset1"),
			DataWarehouseName:   pulumi.String("DataWarehouse1"),
			Kind:                pulumi.String("SqlDWTable"),
			ResourceGroupName:   pulumi.String("SampleResourceGroup"),
			SchemaName:          pulumi.String("dbo"),
			ShareName:           pulumi.String("Share1"),
			SqlServerResourceId: pulumi.String("/subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Sql/servers/Server1"),
			TableName:           pulumi.String("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 sqlDWTableDataSet = new AzureNative.DataShare.SqlDWTableDataSet("sqlDWTableDataSet", new()
    {
        AccountName = "Account1",
        DataSetName = "Dataset1",
        DataWarehouseName = "DataWarehouse1",
        Kind = "SqlDWTable",
        ResourceGroupName = "SampleResourceGroup",
        SchemaName = "dbo",
        ShareName = "Share1",
        SqlServerResourceId = "/subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Sql/servers/Server1",
        TableName = "Table1",
    });

});
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.datashare.SqlDWTableDataSet;
import com.pulumi.azurenative.datashare.SqlDWTableDataSetArgs;
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 sqlDWTableDataSet = new SqlDWTableDataSet("sqlDWTableDataSet", SqlDWTableDataSetArgs.builder()
            .accountName("Account1")
            .dataSetName("Dataset1")
            .dataWarehouseName("DataWarehouse1")
            .kind("SqlDWTable")
            .resourceGroupName("SampleResourceGroup")
            .schemaName("dbo")
            .shareName("Share1")
            .sqlServerResourceId("/subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Sql/servers/Server1")
            .tableName("Table1")
            .build());

    }
}
resources:
  sqlDWTableDataSet:
    type: azure-native:datashare:SqlDWTableDataSet
    properties:
      accountName: Account1
      dataSetName: Dataset1
      dataWarehouseName: DataWarehouse1
      kind: SqlDWTable
      resourceGroupName: SampleResourceGroup
      schemaName: dbo
      shareName: Share1
      sqlServerResourceId: /subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Sql/servers/Server1
      tableName: Table1

The sqlServerResourceId points to your SQL server using its full Azure resource ID. The dataWarehouseName, schemaName, and tableName properties identify the specific table to share. The kind property must be set to “SqlDWTable” to indicate this is a SQL Data Warehouse table dataset. The accountName and shareName properties place this dataset within an existing Data Share account and share.

Beyond these examples

This snippet focuses on SQL Data Warehouse table dataset configuration. It’s intentionally minimal rather than a full data sharing solution.

The example references pre-existing infrastructure such as Azure Data Share accounts and shares, SQL servers and data warehouses, and database schemas and tables. It focuses on configuring the dataset rather than provisioning the surrounding infrastructure.

To keep things focused, common dataset patterns are omitted, including:

  • Dataset permissions and access control
  • Snapshot schedules and synchronization
  • Consumer-side dataset mappings
  • Cross-subscription or cross-tenant sharing

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

Let's configure Azure SQL Data Warehouse 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 are required to create a SQL DW table data set?
You must provide dataWarehouseName, kind (set to “SqlDWTable”), schemaName, sqlServerResourceId, and tableName. Additionally, the immutable properties accountName, dataSetName, resourceGroupName, and shareName are required.
What value should I use for the kind property?
Set kind to “SqlDWTable”. This is the expected discriminator value for SQL Data Warehouse table data sets.
What's the default schema name if I don't specify one?
The schemaName defaults to “dbo” if not explicitly provided.
What format should the SQL server resource ID use?
Use the full ARM resource ID format: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}
Resource Lifecycle
Which properties can't be changed after creating the data set?
Four properties are immutable: accountName, dataSetName, resourceGroupName, and shareName. Modifying any of these requires recreating the resource.

Using a different cloud?

Explore database guides for other cloud providers: