Skip to content

v1.12.0rc3

Pre-release
Pre-release

Choose a tag to compare

@axellpadilla axellpadilla released this 11 Aug 15:44
1da1d79

dbt-sqlserver v1.12.0rc3

Together with @Benjamin-Knight and @joshmarkovic, we used the releases leading up to v1.11.0 to bring the adapter closer to current dbt-core versions while fixing several bugs along the way.

The v1.12.x release series formalizes that work and addresses the deprecations and behavior changes required to align the adapter with upcoming dbt-core v2.0 behavior (including support for the v2 parser). Please leave any feedback or insights on the GitHub Discussions page! #788


⚠️ Important Behavior Changes

Review these items before upgrading, as several default settings have changed:

  • pyodbc is no longer installed by default:
    You must explicitly install and configure a backend. Use mssql-python for standard setups or the experimental ADBC backend for future compatibility testing.
  • dbt_sqlserver_use_dbt_transactions defaults to True:
    dbt-managed transaction hooks now issue explicit BEGIN TRANSACTION / COMMIT TRANSACTION statements. Failed model executions roll back automatically instead of leaving partial state.
    • Legacy Option: Set to False in dbt_project.yml to retain legacy autocommit behavior (Deprecated; will be removed in a future release).
  • dbt_sqlserver_use_native_string_types defaults to True:
    String type mappings are now:
    • STRINGVARCHAR(MAX)
    • NCHARNCHAR(1)
    • NVARCHARNVARCHAR(4000)
    • Legacy Option: Set to False to preserve legacy VARCHAR(8000) and CHAR(1) mappings (Deprecated; will be removed in a future release).
  • dbt_sqlserver_use_default_schema_concat defaults to True:
    Custom schemas now concatenate with target.schema, matching dbt-core's default generate_schema_name macro behavior.
    • Legacy Option: Set to False to retain legacy behavior (Deprecated; will be removed in a future release). Alternatively, override sqlserver__generate_schema_name for custom schema handling (#800).
  • Experimental ADBC backend available:
    Configure with backend: adbc. Requires installing the dbt-sqlserver[adbc] extra and the ADBC driver via the dbc CLI. Currently supports SQL Server username/password authentication (#771).

🛠️ Other Compatibility Changes

  • sql_header is officially rejected: Use pre_hook or query_options instead.
  • Standardized identifier quoting: Adapter-generated identifiers now consistently use adapter.quote(). Review custom macros or downstream packages expecting bracket-style SQL formatting ([schema].[table]).
  • Dependency requirements updated: Requires dbt-core >= 1.12.0 and dbt-adapters >= 1.24.5.
  • Python 3.14 support: Added to the build and testing matrix.

📋 Upgrade Checklist

Before deploying this release to production environments:

  1. Backend Selection: Choose and install mssql-python or adbc if relying on implicit pyodbc.
  2. Transactions: Verify projects/hooks aren't relying on implicit autocommit state.
  3. String Columns: Check downstream systems/views affected by VARCHAR(MAX) or NVARCHAR(4000) type shifts.
  4. Schemas: Confirm custom schema names align with core concatenation rules or override the schema macro.
  5. Custom SQL/Macros: Check for assumptions around SQL bracket quoting or sql_header.

What's Changed

Full Changelog: v1.11.1...v1.12.0rc3