From 6a111e73a5ff0043ed36b10e486400c39de35196 Mon Sep 17 00:00:00 2001 From: Aidan Haran Date: Thu, 2 Oct 2025 14:25:55 +0100 Subject: [PATCH 1/3] 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 122f09ee8..63531959a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## Unreleased + +#### Fixed + +- [#](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/) Verify connection before retrieving the database version. + ## v7.1.11 #### Fixed diff --git a/lib/active_record/connection_adapters/sqlserver_adapter.rb b/lib/active_record/connection_adapters/sqlserver_adapter.rb index 1e272d913..d03d3bb71 100644 --- a/lib/active_record/connection_adapters/sqlserver_adapter.rb +++ b/lib/active_record/connection_adapters/sqlserver_adapter.rb @@ -493,19 +493,19 @@ 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 - @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 diff --git a/test/cases/helper_sqlserver.rb b/test/cases/helper_sqlserver.rb index 4435eb95b..4f387ded1 100644 --- a/test/cases/helper_sqlserver.rb +++ b/test/cases/helper_sqlserver.rb @@ -14,6 +14,14 @@ require "support/connection_reflection" require "mocha/minitest" +Minitest.after_run do + puts "\n\n" + puts "=" * 80 + puts ActiveRecord::Base.connection.send(:sqlserver_version) + puts "\nSQL Server Version Year: #{ActiveRecord::Base.lease_connection.get_database_version}" + puts "=" * 80 +end + module ActiveRecord class TestCase < ActiveSupport::TestCase SQLServer = ActiveRecord::ConnectionAdapters::SQLServer From c29b3d6b02cdccf6f005da1c4de35b2c0f2f35d6 Mon Sep 17 00:00:00 2001 From: Aidan Haran Date: Thu, 2 Oct 2025 18:51:41 +0100 Subject: [PATCH 2/3] Update helper_sqlserver.rb --- test/cases/helper_sqlserver.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cases/helper_sqlserver.rb b/test/cases/helper_sqlserver.rb index 4f387ded1..30800971d 100644 --- a/test/cases/helper_sqlserver.rb +++ b/test/cases/helper_sqlserver.rb @@ -18,7 +18,7 @@ puts "\n\n" puts "=" * 80 puts ActiveRecord::Base.connection.send(:sqlserver_version) - puts "\nSQL Server Version Year: #{ActiveRecord::Base.lease_connection.get_database_version}" + puts "\nSQL Server Version Year: #{ActiveRecord::Base.connection.get_database_version}" puts "=" * 80 end From 43e724096a7ed46216b13225f31c3eb7f4742026 Mon Sep 17 00:00:00 2001 From: Aidan Haran Date: Thu, 2 Oct 2025 18:57:33 +0100 Subject: [PATCH 3/3] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 63531959a..c5ddcef33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ #### Fixed -- [#](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/) Verify connection before retrieving the database version. +- [#1363](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1363) Verify connection before retrieving the database version. ## v7.1.11