Skip to content

feat: SQL Server 2025 support (plus as_columnstore docs and a store-failures regression test)#721

Merged
axellpadilla merged 7 commits into
dbt-msft:feat/sqlserver-2025-supportfrom
joshmarkovic:feat/sql-server-2025
Jun 25, 2026
Merged

feat: SQL Server 2025 support (plus as_columnstore docs and a store-failures regression test)#721
axellpadilla merged 7 commits into
dbt-msft:feat/sqlserver-2025-supportfrom
joshmarkovic:feat/sql-server-2025

Conversation

@joshmarkovic

Copy link
Copy Markdown
Contributor

Summary

This branch bundles three independent changes. Happy to split into separate PRs if that is easier to review.

1. SQL Server 2025 support (703862b)

  • Cover SQL Server 2025 in the integration-test matrix (pyodbc and mssql-python on Python 3.13 / ODBC Driver 18) and add it to the published server CI images.
  • Rename the server.Dockerfile build arg SQLServer_VERSION to MSSQL_VERSION so it matches the build-arg the workflow already passes. With the old name the matrix value was ignored and every server-* image was built from the 2022 default, so the 2017/2019 (and now 2025) images were silently all 2022.
  • Document 2025 as a supported version and refresh the stale dbt-core compatibility note (0.14 to 1.10).

2. Document the as_columnstore config (391080c, refs #440)

The as_columnstore config (default true, which builds a clustered columnstore index) was undocumented. This adds a README section, including the workaround for test failure storage: audit tables can contain (n)varchar(max) columns, which SQL Server does not allow in a columnstore index, so as_columnstore: false on those resources avoids the build error.

3. Regression test for store-failures on passing tests (7d8e90b, refs #601)

A passing test run with --store-failures should leave an empty audit table, not drop it (the documented dbt behavior, and what Postgres does). This adds a functional test asserting the audit relation persists as an empty user table across idempotent re-runs.

This closes a coverage gap: the existing test_store_test_failures.py suite only asserted the passing case for view-based store-failures, never the table-based case from #601.

Verified locally against SQL Server 2022 with a case-sensitive collation: the new test passes, and the existing 6-test store-failures suite still passes. The reported behavior no longer reproduces on current master, so the test serves as a regression guard.

Status

Draft, opened for early review and to exercise CI across the version matrix.

joshmarkovic and others added 4 commits June 24, 2026 19:58
Cover SQL Server 2025 in the integration-test matrix (pyodbc and mssql-python on Python 3.13 / ODBC Driver 18) and add it to the published server CI images.

Rename the server Dockerfile build arg SQLServer_VERSION to MSSQL_VERSION to match the build-arg the workflow already passes; with the old name the matrix version was ignored and every image used the 2022 default.

Document 2025 as a supported version and refresh the stale dbt-core 0.14 compatibility note to 1.10.
Explain that table materializations build a clustered columnstore index by default, and that as_columnstore: false is required for tables with (n)varchar(max)/LOB columns such as dbt store_failures audit tables.
)

A passing test run with --store-failures must replace prior failures with an empty audit table rather than drop it. Adds a functional regression test for dbt-msft#601.
@joshmarkovic joshmarkovic marked this pull request as ready for review June 24, 2026 20:34
@axellpadilla axellpadilla added this to the v1.11.0rc1 milestone Jun 25, 2026
Comment thread .github/workflows/integration-tests-sqlserver.yml
Comment thread README.md Outdated
joshmarkovic and others added 3 commits June 24, 2026 23:26
Co-authored-by: Axell Padilla <68310020+axellpadilla@users.noreply.github.com>
Addresses @axellpadilla's review on dbt-msft#721.

- integration tests: make 2025 the matrix baseline, replacing 2022 as the
  latest tier. Keep 2017, 2019 and 2022 as single legacy rows so all four
  versions stay covered by CI.
- README: remove the duplicate "Supported SQL Server versions" heading and
  the Azure SQL Database / Managed Instance rows that were marked tested.
  Azure is now described as not covered by CI but expected to be compatible.
@axellpadilla axellpadilla changed the base branch from master to feat/sqlserver-2025-support June 25, 2026 17:21
@axellpadilla axellpadilla merged commit 25e3bcb into dbt-msft:feat/sqlserver-2025-support Jun 25, 2026
8 of 17 checks passed
@axellpadilla

Copy link
Copy Markdown
Collaborator

@joshmarkovic publishing image, please open another one to master

@joshmarkovic

Copy link
Copy Markdown
Contributor Author

@joshmarkovic publishing image, please open another one to master

@axellpadilla, I'm not allowed:

Pull request creation failed. Validation failed: must be a collaborator

@axellpadilla

Copy link
Copy Markdown
Collaborator

@joshmarkovic use yours this one was just to create the required images, all tests passed

@joshmarkovic

Copy link
Copy Markdown
Contributor Author

@joshmarkovic use yours this one was just to create the required images, all tests passed

Got it. I opened #728

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants