Skip to main content
Version: 1.5 (Latest)

Release Notes 1.5

New Features​

SQL Server Backup Files — -C backup_mssql​

FastBCP reads tables straight from SQL Server full backups (.bak files), without restoring them and without any SQL Server instance, through the embedded ArpeMSBackup ADBC driver. No server to provision, no restore time, no disk space for a restored database: point FastBCP at the backup and export the tables to Parquet.

  • --server (-S) is the directory of the backups, --database (-I) the backup file (or a pattern matching one backup). No credentials.
  • Backups: full and copy-only full backups, uncompressed or compressed with MS_XPRESS or ZSTD, any BLOCKSIZE / MAXTRANSFERSIZE, from SQL Server 2017, 2019, 2022 and 2025 (Windows or Linux), databases over several data files and filegroups.
  • Striped backups (BACKUP ... TO DISK = a, DISK = b, ...): a pattern matching the stripes (-I "tpch_*.bak") or a list separated by ;, in any order. An incomplete set or stripes of different backups are refused with an explicit message.
  • Several backups in one file (WITH NOINIT): the last full backup of the file is read.
  • Tables: heaps and clustered indexes, partitions, ROW / PAGE compression, LOBs ((n)varchar(max), varbinary(max), text, ntext, image, row-overflow), xml, sparse columns, persisted computed columns, and clustered columnstore tables (archive compression and open delta store included). Every SQL Server type is exported, sql_variant included (as text) — see the datatypes mapping.
  • Refused with a clear message: backups of TDE databases and encrypted backups (WITH ENCRYPTION), which cannot be read without the server certificate; a file without a full backup.
  • Parallelism: --parallelmethod Physical resolves to the new Pages method: each thread reads a slice of the data pages (rowstore) or of the rowgroups (columnstore) of the shared, already indexed backup. None and Physical are the only methods for this source.
  • Out of core: the backup is read in place, never loaded in memory. A 9.3 GiB backup is read under a 128 MB memory limit (rowstore).
  • --query accepts SELECT * | col1, col2, … FROM [schema.]table. Parquet output only. Windows x64 and Linux x64.

Performance (FastBCP to Parquet, degree 8, TPC-H orders 15 M rows): about 5 M rows/s from an uncompressed backup, against 3.3 M rows/s with adbc_mssql and 1.4 M rows/s with mssql reading the live database; 2.1 to 2.6 M rows/s from MS_XPRESS / ZSTD backups. lineitem as a clustered columnstore (60 M rows): 2.8 M rows/s against 2.4 M rows/s with adbc_mssql.

.\FastBCP.exe `
--connectiontype backup_mssql `
--server "D:\Backups\MSSQL" `
--database "tpch_full.bak" `
--sourceschema "dbo" `
--sourcetable "orders" `
--directory "D:\export\orders" `
--fileoutput "orders.parquet" `
--parallelmethod Physical `
--paralleldegree 8

See SQL Server backup files for the details.

Wizard​

  • The Wizard offers backup_mssql in the ADBC (High Performance) connectors: the server field becomes the backup directory (a Windows or Linux path, following the chosen platform) and the database field the backup file. Only None and Physical are offered as parallel methods.
  • In an empty field, the → (right arrow) key takes the suggested value (the placeholder).

Behaviour Changes​

Licence​

  • A licence is always required, including for the free 30-day trial, which is now a licence file requested at arpe.io. The build-date trial and the trial token embedded for the ADBC drivers are gone. --help and --version run without a licence.
  • The default FastBCP.lic is looked up in the current directory, then next to the executable.
  • A licence file can hold several blocks (FastBCP, ADBC drivers, other products) in any order: the FASTBCP block is checked against the signature that follows it.
  • The ADBC licence is forwarded to the drivers inline (arpeio.adbc.license), with every ADBC block and its signature; no temporary file. A driver licence of your own (--sourceconnectstring, ARPEIO_ADBC_LICENCE / ARPEIO_ADBC_LICENCE_FILE) wins, and a damaged ADBC block is reported as such.
  • An adbc_* or backup_mssql connection type with no ADBC driver block (and no ARPEIO_ADBC_LICENCE / ARPEIO_ADBC_LICENCE_FILE) stops with exit code 99 instead of falling back to a trial token.

See License.

Dependencies​

ComponentVersion
ArpeMSBackup ADBC driver0.1.6 (new)
ArpeMSSQL ADBC driver0.7.8 (parallel connections opened 50 ms apart, so SQL Server spreads them over its schedulers: 4-way parallel reads up to twice as fast; ARPEMSSQL_CONNECT_SPACING_MS changes the gap; fixes a crash when the thread that loaded the driver exits)
ArpeOracle ADBC driver0.4.3 (choice of the Native Network Encryption integrity algorithm with adbc.arpeoracle.data_integrity_types; faster NUMBER to float64 reads)
ArpeNetezza ADBC driver0.3.8 (no driver code change)
ArpeTeradata ADBC driver0.3.5 (uri and ADO.NET connection_string parsed, like the other drivers)
AdbcFileExport0.5.5 (arpemsbackup driver profile)

The other components are unchanged since 1.4.

Documentation​

Copyright © 2026 Architecture & Performance.