Configure Azure SQL Database Table Data Sets

The azure-native:datashare:SqlDBTableDataSet resource, part of the Pulumi Azure Native provider, adds a SQL Database table as a dataset within an Azure Data Share, defining which table data consumers can access. This guide focuses on one capability: SQL Database table dataset configuration.

Datasets belong to Data Share accounts and shares, and reference existing SQL Database servers, databases, and tables. The example is intentionally small. Combine it with your own Data Share infrastructure and consumer subscription configuration.

Add a SQL Database table to a share

Data providers sharing SQL Database tables specify the exact table location within their Azure SQL infrastructure.

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

const sqlDBTableDataSet = new azure_native.datashare.SqlDBTableDataSet("sqlDBTableDataSet", {
    accountName: "Account1",
    dataSetName: "Dataset1",
    databaseName: "SqlDB1",
    kind: "SqlDBTable",
    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_db_table_data_set = azure_native.datashare.SqlDBTableDataSet("sqlDBTableDataSet",
    account_name="Account1",
    data_set_name="Dataset1",
    database_name="SqlDB1",
    kind="SqlDBTable",
    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.NewSqlDBTableDataSet(ctx, "sqlDBTableDataSet", &datashare.SqlDBTableDataSetArgs{
			AccountName:         pulumi.String("Account1"),
			DataSetName:         pulumi.String("Dataset1"),
			DatabaseName:        pulumi.String("SqlDB1"),
			Kind:                pulumi.String("SqlDBTable"),
			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 sqlDBTableDataSet = new AzureNative.DataShare.SqlDBTableDataSet("sqlDBTableDataSet", new()
    {
        AccountName = "Account1",
        DataSetName = "Dataset1",
        DatabaseName = "SqlDB1",
        Kind = "SqlDBTable",
        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.SqlDBTableDataSet;
import com.pulumi.azurenative.datashare.SqlDBTableDataSetArgs;
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 sqlDBTableDataSet = new SqlDBTableDataSet("sqlDBTableDataSet", SqlDBTableDataSetArgs.builder()
            .accountName("Account1")
            .dataSetName("Dataset1")
            .databaseName("SqlDB1")
            .kind("SqlDBTable")
            .resourceGroupName("SampleResourceGroup")
            .schemaName("dbo")
            .shareName("Share1")
            .sqlServerResourceId("/subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Sql/servers/Server1")
            .tableName("Table1")
            .build());

    }
}
resources:
  sqlDBTableDataSet:
    type: azure-native:datashare:SqlDBTableDataSet
    properties:
      accountName: Account1
      dataSetName: Dataset1
      databaseName: SqlDB1
      kind: SqlDBTable
      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, while databaseName, schemaName, and tableName identify the specific table to share. The kind property must be set to “SqlDBTable” for SQL Database tables. The dataset is added to the share specified by accountName and shareName, making the table available to data consumers who subscribe to the share.

Beyond these examples

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

The example references pre-existing infrastructure such as Azure Data Share accounts and shares, SQL Database servers, databases, and tables, and resource groups and subscriptions. It focuses on configuring the dataset rather than provisioning the surrounding infrastructure.

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

  • Data consumer subscription configuration
  • Share synchronization schedules
  • Access permissions and identity management
  • Multiple table or database-level sharing

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

Let's configure Azure SQL Database 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

Configuration & Setup
What properties are required to create a SQL DB table data set?
You must specify databaseName, kind, schemaName, sqlServerResourceId, and tableName. Additionally, you need accountName, dataSetName, resourceGroupName, and shareName to identify where the data set belongs.
What's the default value for the schema name?
The schemaName property defaults to dbo if not specified.
What value should I use for the kind property?
Set kind to SqlDBTable. This is the expected value for SQL DB table data sets.
Resource Identity & Immutability
What properties can't be changed after creation?
Four properties are immutable: accountName, dataSetName, resourceGroupName, and shareName. Changing any of these requires recreating the resource.
SQL Server Connection
How do I specify the SQL server resource ID?
Use the full Azure resource ID format: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}. For example: /subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Sql/servers/Server1.
Import & Management
How do I import an existing SQL DB table data set?
Use the import command with the full resource path: pulumi import azure-native:datashare:SqlDBTableDataSet <name> /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataShare/accounts/{accountName}/shares/{shareName}/dataSets/{dataSetName}

Using a different cloud?

Explore database guides for other cloud providers: