diff --git a/.github/workflows/auto-mssql2025-tests.yml b/.github/workflows/auto-mssql2025-tests.yml
new file mode 100644
index 000000000..a93dcd0c9
--- /dev/null
+++ b/.github/workflows/auto-mssql2025-tests.yml
@@ -0,0 +1,148 @@
+name: ⚙📚 Automated MS SQL Server 2025 tests
+run-name: Tests on MS SQL Server 2025 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.
+
+on:
+ push:
+ branches:
+ - 'master'
+ - 'master-*'
+ paths:
+ # containers
+ - 'Containers/mssql/do-mssql-2025'
+ - 'Containers/mssql/**.sh'
+ - 'Containers/mssql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.SqlServer/**'
+ - '!Orm/Xtensive.Orm.SqlServer/**.csproj'
+ - '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+ pull_request:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mssql/do-mssql-2025'
+ - 'Containers/mssql/**.sh'
+ - 'Containers/mssql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.SqlServer/**'
+ - '!Orm/Xtensive.Orm.SqlServer/**.csproj'
+ - '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+ pull_request_review:
+ branches:
+ - 'master'
+ paths:
+ # containers
+ - 'Containers/mssql/do-mssql-2025'
+ - 'Containers/mssql/**.sh'
+ - 'Containers/mssql/**.sql'
+ # main project - most common part, that may have changes that affect
+ - 'Orm/Xtensive.Orm/Orm/Providers/**'
+ - 'Orm/Xtensive.Orm/Orm/Rse/**'
+ - 'Orm/Xtensive.Orm/Orm/Upgrade/**'
+ - 'Orm/Xtensive.Orm/Sql/**'
+ # provider
+ - 'Orm/Xtensive.Orm.SqlServer/**'
+ - '!Orm/Xtensive.Orm.SqlServer/**.csproj'
+ - '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**'
+ # main test project - any code change
+ - 'Orm/Xtensive.Orm.Tests/Issues/**'
+ - 'Orm/Xtensive.Orm.Tests/Storage/**'
+ - 'Orm/Xtensive.Orm.Tests/Upgrade/**'
+ # sql tests - general and provider-specific
+ - 'Orm/Xtensive.Orm.Tests.Sql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
+ #- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
+ - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
+ # ability to trigger on demand
+ - 'TestFileForBuildServerTests.txt'
+
+# new commits with the same key will cancel previously run workflows
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ actions: read
+ checks: write
+
+jobs:
+ test_on_mssql2025:
+ name: Tests on MS SQL Server 2025
+ strategy:
+ matrix:
+ net: [ 'net8.0' ]
+ # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
+ #
+ # push filter - to cover pushes from the team to main branch of major version
+ # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
+ # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
+ #
+ if: |
+ github.event_name == 'push'
+ || (github.event_name == 'pull_request_review'
+ && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ && startsWith(github.event.pull_request.base.ref, 'master')
+ && github.event.review.state == 'approved')
+ || (github.event_name == 'pull_request'
+ && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+ && !startsWith(github.head_ref, 'master-'))
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: mssql2025
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ test_output_verbosity: minimal
+ test_run_timeout: 50
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: false
\ No newline at end of file
diff --git a/.github/workflows/dispatched-mssql-tests.yml b/.github/workflows/dispatched-mssql-tests.yml
index e6dfe586d..b73cb40a2 100644
--- a/.github/workflows/dispatched-mssql-tests.yml
+++ b/.github/workflows/dispatched-mssql-tests.yml
@@ -28,6 +28,11 @@ on:
type: boolean
default: false
required: true
+ mssql2022:
+ description: 'MS SQL Server 2025'
+ type: boolean
+ default: true
+ required: true
# new commits with the same key will cancel previously run workflows
concurrency:
@@ -99,3 +104,23 @@ jobs:
run_sql: true
run_extensions: true
publish_raw_results: true
+
+ test_on_mssql2025:
+ name: Tests on MS SQL Server 2025
+ if: ${{ inputs.mssql2025 }}
+ strategy:
+ matrix:
+ net: [ 'net8.0', 'net10.0' ]
+ uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
+ with:
+ storage: mssql2025
+ build_config: Release
+ target_framework: ${{ matrix.net }}
+ specific_sha: ${{ inputs.specific_sha }}
+ show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
+ test_output_verbosity: minimal
+ test_run_timeout: 50
+ run_main: true
+ run_sql: true
+ run_extensions: true
+ publish_raw_results: true
\ No newline at end of file
diff --git a/Containers/mssql/do-mssql-2025 b/Containers/mssql/do-mssql-2025
new file mode 100644
index 000000000..9a7f2e707
--- /dev/null
+++ b/Containers/mssql/do-mssql-2025
@@ -0,0 +1,34 @@
+FROM mcr.microsoft.com/mssql/server:2025-latest
+USER root
+
+# See https://github.com/microsoft/mssql-docker/blob/master/linux/preview/examples/mssql-agent-fts-ha-tools/Dockerfile
+# for details
+RUN export DEBIAN_FRONTEND=noninteractive
+RUN apt-get update
+
+#Actualize time zone database
+RUN apt-get install -y tzdata
+RUN apt-get install -yq curl
+RUN apt-get install -yq apt-transport-https
+RUN apt-get install -y gnupg2
+RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
+RUN curl https://packages.microsoft.com/config/ubuntu/24.04/mssql-server-2025.list | tee /etc/apt/sources.list.d/mssql-server.list
+RUN apt-get update
+RUN apt-get install -y mssql-server-fts
+RUN apt-get clean
+RUN rm -rf /var/lib/apt/lists
+
+# Create a config directory
+RUN mkdir -p /usr/config
+WORKDIR /usr/config
+
+# Bundle config source
+COPY configure-db.sh /usr/config/
+COPY entrypoint.sh /usr/config/
+COPY setup.sql /usr/config/
+
+# Grant permissions for to our scripts to be executable
+RUN chmod +x /usr/config/entrypoint.sh
+RUN chmod +x /usr/config/configure-db.sh
+
+ENTRYPOINT ["./entrypoint.sh"]
\ No newline at end of file
diff --git a/Orm/Xtensive.Orm.Tests.Framework/Orm.config b/Orm/Xtensive.Orm.Tests.Framework/Orm.config
index f7fce5f36..acd57272e 100644
--- a/Orm/Xtensive.Orm.Tests.Framework/Orm.config
+++ b/Orm/Xtensive.Orm.Tests.Framework/Orm.config
@@ -17,10 +17,13 @@
-
+
+
+
+
+