From 0829ee8b02ffb60c0cf65c0f175e5532a5c4580e Mon Sep 17 00:00:00 2001 From: Aidan Haran Date: Thu, 2 Oct 2025 19:13:39 +0100 Subject: [PATCH 1/4] Verify connection before retrieving the database version. --- CHANGELOG.md | 6 ++++++ .../connection_adapters/sqlserver_adapter.rb | 12 ++++++------ test/cases/helper_sqlserver.rb | 8 ++++++++ 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc61e105e..2c5ee8a8d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## Unreleased + +#### Fixed + +- [#1366](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1366) Verify connection before retrieving the database version. + ## v8.0.8 #### Changed diff --git a/lib/active_record/connection_adapters/sqlserver_adapter.rb b/lib/active_record/connection_adapters/sqlserver_adapter.rb index 3b3fd2a6d..d307df472 100644 --- a/lib/active_record/connection_adapters/sqlserver_adapter.rb +++ b/lib/active_record/connection_adapters/sqlserver_adapter.rb @@ -481,15 +481,12 @@ def initialize_dateformatter end def version_year - @version_year ||= begin - if sqlserver_version =~ /vNext/ + @version_year ||= + if /vNext/.match?(sqlserver_version) 2016 else /SQL Server (\d+)/.match(sqlserver_version).to_a.last.to_s.to_i end - rescue StandardError - 2016 - end end def sqlserver_version @@ -499,7 +496,10 @@ def sqlserver_version private def connect - @raw_connection = self.class.new_client(@connection_parameters) + @sqlserver_version ||= begin + verify! + _raw_select("SELECT @@version", @raw_connection).first.first.to_s + end end def configure_connection diff --git a/test/cases/helper_sqlserver.rb b/test/cases/helper_sqlserver.rb index c42e9c7c0..01edd824a 100644 --- a/test/cases/helper_sqlserver.rb +++ b/test/cases/helper_sqlserver.rb @@ -15,6 +15,14 @@ require "support/query_assertions" require "mocha/minitest" +Minitest.after_run do + puts "\n\n" + puts "=" * 80 + puts ActiveRecord::Base.lease_connection.send(:sqlserver_version) + puts "\nSQL Server Version Year: #{ActiveRecord::Base.lease_connection.get_database_version}" + puts "=" * 80 +end + module ActiveSupport class TestCase < ::Minitest::Test include ARTest::SQLServer::CoerceableTest From ffd98552a6ed1a0b8b99805249126fedee9f5af3 Mon Sep 17 00:00:00 2001 From: Aidan Haran Date: Thu, 2 Oct 2025 19:21:10 +0100 Subject: [PATCH 2/4] Update sqlserver_adapter.rb --- .../connection_adapters/sqlserver_adapter.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/active_record/connection_adapters/sqlserver_adapter.rb b/lib/active_record/connection_adapters/sqlserver_adapter.rb index d307df472..09ed3fb7b 100644 --- a/lib/active_record/connection_adapters/sqlserver_adapter.rb +++ b/lib/active_record/connection_adapters/sqlserver_adapter.rb @@ -490,16 +490,16 @@ def version_year end def sqlserver_version - @sqlserver_version ||= _raw_select("SELECT @@version", @raw_connection).first.first.to_s + @sqlserver_version ||= begin + verify! + _raw_select("SELECT @@version", @raw_connection).first.first.to_s + end end private def connect - @sqlserver_version ||= begin - verify! - _raw_select("SELECT @@version", @raw_connection).first.first.to_s - end + @raw_connection = self.class.new_client(@connection_parameters) end def configure_connection From 1dff3a9ab82d69289853147e1388c3e3dab2e38b Mon Sep 17 00:00:00 2001 From: Aidan Haran Date: Thu, 2 Oct 2025 19:32:47 +0100 Subject: [PATCH 3/4] Update sqlserver_adapter.rb --- lib/active_record/connection_adapters/sqlserver_adapter.rb | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/active_record/connection_adapters/sqlserver_adapter.rb b/lib/active_record/connection_adapters/sqlserver_adapter.rb index 09ed3fb7b..6d1a9ab35 100644 --- a/lib/active_record/connection_adapters/sqlserver_adapter.rb +++ b/lib/active_record/connection_adapters/sqlserver_adapter.rb @@ -490,10 +490,7 @@ def version_year end def sqlserver_version - @sqlserver_version ||= begin - verify! - _raw_select("SELECT @@version", @raw_connection).first.first.to_s - end + @sqlserver_version ||= execute("SELECT @@version", "SCHEMA").rows.first.first.to_s end private From a23c1a75902be1e1da53a16ad0350fbc990a7258 Mon Sep 17 00:00:00 2001 From: Aidan Haran Date: Thu, 2 Oct 2025 19:33:29 +0100 Subject: [PATCH 4/4] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c5ee8a8d..9ea28e818 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ #### Fixed -- [#1366](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1366) Verify connection before retrieving the database version. +- [#1366](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1366) Correctly retrieve the SQL Server database version. ## v8.0.8