SqlBulkSyncExport 2026.10.15.96

dotnet tool install --global SqlBulkSyncExport --version 2026.10.15.96
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local SqlBulkSyncExport --version 2026.10.15.96
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=SqlBulkSyncExport&version=2026.10.15.96
                    
nuke :add-package SqlBulkSyncExport --version 2026.10.15.96
                    

SqlBulkSyncExport

NuGet

.NET global tool that exports SQL Server change tracking deltas (and optional interval full sync) to CSV files in a target folder.

Inspired by SqlBulkSyncFunction, without a target database: source schema drives CSV columns, and sync watermarks live in a YAML state file.

Install

dotnet tool install --global SqlBulkSyncExport

Usage

sqlbulksyncexport sync <config.yml> <state.yml> <outputfolder> [OPTIONS]

Options:

Option Description
--seed Force a full snapshot for change-tracking jobs
--include-table <key> Only export the given table key (repeatable)
--exclude-table <key> Skip the given table key (repeatable)
--parallelism <n> Max tables to export concurrently (overrides YAML parallelism)

Authentication

Configure source.connectionString in YAML.

Set source.entraIdAuth: true to authenticate with DefaultAzureCredential (optional source.tenantId or AZURE_TENANT_ID).

Configuration

See samples/config.yml for a fuller example.

Minimal config (table key becomes the default {key}.csv file name):

source:
  connectionString: "Server=localhost;Initial Catalog=SyncTest;Integrated Security=True;TrustServerCertificate=True"
  # entraIdAuth: true          # optional; DefaultAzureCredential
  # tenantId: "00000000-0000-0000-0000-000000000000"  # optional; or AZURE_TENANT_ID

tables:
  dbo_Customers:
    source: dbo.Customers
  dbo_Orders:
    source: dbo.Orders

Optional source fields:

  • entraIdAuth — defaults to false; set true for Entra / DefaultAzureCredential
  • tenantId — optional tenant for Entra auth (falls back to AZURE_TENANT_ID)

Important defaults:

  • includeHeader defaults to true when omitted
  • writeDeleted defaults to false (opt-in deleted PK files)
  • newLine defaults to CRLF (\r\n)
  • parallelism omitted/null = sequential (1); positive integer = max concurrent table exports; CLI --parallelism overrides YAML when set
  • progressLogBatchSize omitted/null = auto via COUNT (logs percent + ETA; step size by row count: <1k → 50%, <5k → 25%, <10k → 20%, <25k → 10%, <250k → 5%, <500k → 2%, else 1%); <= 0 disables; positive = fixed row interval (no COUNT/%/ETA)
  • targetFile / deletedFile are file names with extension, no path
  • Timestamp/version tokens are inserted before the extension, for example:
    • delta: dbo_Customers_20260101120000_0000000010_0000000020.csv
    • full snapshot: dbo_Customers_20260101120000_0000000020_full.csv
    • deleted PKs (when enabled): dbo_Customers.deleted_20260101120000_0000000010_0000000020.csv

Sync state

See samples/state.yml. Missing table entries are treated as never synced (currentVersion: -1) and trigger a full snapshot export.

Do not flip a job between change tracking and fullSync without clearing state for those tables.

Modes

  • Change tracking (default): incremental I/U CSV; optional deleted-PK CSV; first run / invalid watermark / --seed writes a full snapshot
  • Full sync: when fullSync is present, exports a full table snapshot when the interval elapses (Unix-ms watermark)

Prerequisites

  • .NET 10 SDK / runtime
  • SQL Server with change tracking enabled on source tables (CT mode)
Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed.  net11.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
2026.10.15.96 47 10/15/2026
2026.10.10.86 87 10/10/2026
2026.9.9.23 131 9/9/2026
2026.9.3.14 118 9/3/2026
2026.9.3.12 121 9/3/2026
2026.9.3.9 112 9/3/2026
2026.9.3.7 112 9/3/2026
2026.9.1.5 111 9/1/2026
2026.8.31.3 118 8/31/2026