SqlBulkSyncExport .NET Tool β Exports SQL Server change-tracking (and optional full-sync) deltas to CSV files in a target folder.
Install
No framework information available.
README
SqlBulkSyncExport
.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) |
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 /DefaultAzureCredentialtenantIdβ optional tenant for Entra auth (falls back toAZURE_TENANT_ID)
Important defaults:
includeHeaderdefaults to true when omittedwriteDeleteddefaults to false (opt-in deleted PK files)newLinedefaults to CRLF (\r\n)progressLogBatchSizeomitted/null= auto viaCOUNT(logs percent + ETA; step size by row count: <1k β 50%, <5k β 25%, <10k β 20%, <25k β 10%, <250k β 5%, <500k β 2%, else 1%);<= 0disables; positive = fixed row interval (no COUNT/%/ETA)targetFile/deletedFileare 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
- delta:
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 /
--seedwrites a full snapshot - Full sync: when
fullSyncis 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)
Changes from Previous Version
Adoption Assessment
Assess this package against its supported frameworks, license, maintenance signals and dependency graph before making it a project standard.
Related Guides & Workflows
Learn how to evaluate, integrate, or audit this package in your .NET project.