feat: SQL Server 2025 support (plus as_columnstore docs and a store-failures regression test)#721
Merged
axellpadilla merged 7 commits intoJun 25, 2026
Conversation
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.
for more information, see https://pre-commit.ci
axellpadilla
requested changes
Jun 25, 2026
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.
25e3bcb
into
dbt-msft:feat/sqlserver-2025-support
8 of 17 checks passed
Collaborator
|
@joshmarkovic publishing image, please open another one to master |
Contributor
Author
@axellpadilla, I'm not allowed:
|
Collaborator
|
@joshmarkovic use yours this one was just to create the required images, all tests passed |
Contributor
Author
Got it. I opened #728 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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)server.Dockerfilebuild argSQLServer_VERSIONtoMSSQL_VERSIONso it matches the build-arg the workflow already passes. With the old name the matrix value was ignored and everyserver-*image was built from the2022default, so the 2017/2019 (and now 2025) images were silently all 2022.2. Document the
as_columnstoreconfig (391080c, refs #440)The
as_columnstoreconfig (defaulttrue, 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, soas_columnstore: falseon those resources avoids the build error.3. Regression test for store-failures on passing tests (
7d8e90b, refs #601)A passing test run with
--store-failuresshould 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.pysuite 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.