V0.45 can't run queries against MS SQL Server connections

I've just downloaded v0.45, it seems to be having trouble running queries against my MS SQL Servers.

I've tried existing connections and attempted (and failed) to create a new one and all return the same error:
No method in multimethod 'connection-details->spec' for dispatch value: :sqlserver

Metebase details:

{
  "browser-info": {
    "language": "en-NZ",
    "platform": "Win32",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
    "vendor": "Google Inc."
  },
  "system-info": {
    "file.encoding": "Cp1252",
    "java.runtime.name": "OpenJDK Runtime Environment",
    "java.runtime.version": "17.0.2+8",
    "java.vendor": "Eclipse Adoptium",
    "java.vendor.url": "https://adoptium.net/",
    "java.version": "17.0.2",
    "java.vm.name": "OpenJDK 64-Bit Server VM",
    "java.vm.version": "17.0.2+8",
    "os.name": "Windows 10",
    "os.version": "10.0",
    "user.language": "en",
    "user.timezone": "Pacific/Auckland"
  },
  "metabase-info": {
    "databases": [
      "sqlserver",
      "h2"
    ],
    "hosting-env": "unknown",
    "application-database": "postgres",
    "application-database-details": {
      "database": {
        "name": "PostgreSQL",
        "version": "12.1"
      },
      "jdbc-driver": {
        "name": "PostgreSQL JDBC Driver",
        "version": "42.5.0"
      }
    },
    "run-mode": "prod",
    "version": {
      "date": "2022-12-03",
      "tag": "v0.45.0",
      "branch": "release-x.45.x",
      "hash": "4e41d76"
    },
    "settings": {
      "report-timezone": "NZ"
    }
  }
}

Errors look like this, this is for a SQL question but it's similar no matter how the query is started:

[671e9117-ca39-435f-ac1e-29af9a1b4f06] 2022-12-06T11:03:29+13:00 ERROR metabase.query-processor.middleware.catch-exceptions Error processing query: No method in multimethod 'connection-details->spec' for dispatch value: :sqlserver
{:database_id 2,
 :started_at #t "2022-12-06T11:03:29.330027800+13:00[Pacific/Auckland]",
 :json_query
 {:type "native",
  :native {:query "select 1", :template-tags {}},
  :database 2,
  :parameters [],
  :middleware {:js-int-to-string? true, :add-default-userland-constraints? true}},
 :status :failed,
 :class java.lang.IllegalArgumentException,
 :stacktrace
 ["clojure.lang.MultiFn.getFn(MultiFn.java:156)"
  "clojure.lang.MultiFn.invoke(MultiFn.java:233)"
  "--> driver.sql_jdbc.connection$create_pool_BANG_.invokeStatic(connection.clj:138)"
  "driver.sql_jdbc.connection$create_pool_BANG_.invoke(connection.clj:130)"
  "driver.sql_jdbc.connection$db__GT_pooled_connection_spec.invokeStatic(connection.clj:259)"
  "driver.sql_jdbc.connection$db__GT_pooled_connection_spec.invoke(connection.clj:205)"
  "driver.sql_jdbc.execute$datasource.invokeStatic(execute.clj:136)"
  "driver.sql_jdbc.execute$datasource.invoke(execute.clj:132)"
  "driver.sql_jdbc.execute$datasource_with_diagnostic_info_BANG_.invokeStatic(execute.clj:143)"
  "driver.sql_jdbc.execute$datasource_with_diagnostic_info_BANG_.invoke(execute.clj:138)"
  "driver.sql_jdbc.execute$fn__55830.invokeStatic(execute.clj:191)"
  "driver.sql_jdbc.execute$fn__55830.invoke(execute.clj:189)"
  "driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:496)"
  "driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:485)"
  "driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:493)"
  "driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:485)"
  "driver.sql_jdbc$fn__88401.invokeStatic(sql_jdbc.clj:58)"
  "driver.sql_jdbc$fn__88401.invoke(sql_jdbc.clj:56)"
  "query_processor.context$executef.invokeStatic(context.clj:59)"
  "query_processor.context$executef.invoke(context.clj:48)"
  "query_processor.context.default$default_runf.invokeStatic(default.clj:67)"
  "query_processor.context.default$default_runf.invoke(default.clj:65)"
  "query_processor.context$runf.invokeStatic(context.clj:45)"
  "query_processor.context$runf.invoke(context.clj:39)"
  "query_processor.reducible$identity_qp.invokeStatic(reducible.clj:12)"
  "query_processor.reducible$identity_qp.invoke(reducible.clj:9)"
  "query_processor.middleware.cache$maybe_return_cached_results$maybe_return_cached_results_STAR___53538.invoke(cache.clj:220)"
  "query_processor.middleware.permissions$check_query_permissions$fn__49193.invoke(permissions.clj:109)"
  "query_processor.middleware.mbql_to_native$mbql__GT_native$fn__52483.invoke(mbql_to_native.clj:23)"
  "query_processor$fn__55014$combined_post_process__55019$combined_post_process_STAR___55020.invoke(query_processor.clj:212)"
  "query_processor$fn__55014$combined_pre_process__55015$combined_pre_process_STAR___55016.invoke(query_processor.clj:209)"
  "query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__53459$fn__53464.invoke(resolve_database_and_driver.clj:35)"
  "driver$do_with_driver.invokeStatic(driver.clj:76)"
  "driver$do_with_driver.invoke(driver.clj:72)"
  "query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__53459.invoke(resolve_database_and_driver.clj:34)"
  "query_processor.middleware.fetch_source_query$resolve_card_id_source_tables$fn__49459.invoke(fetch_source_query.clj:314)"
  "query_processor.middleware.store$initialize_store$fn__49649$fn__49650.invoke(store.clj:11)"
  "query_processor.store$do_with_store.invokeStatic(store.clj:45)"
  "query_processor.store$do_with_store.invoke(store.clj:39)"
  "query_processor.middleware.store$initialize_store$fn__49649.invoke(store.clj:10)"
  "query_processor.middleware.normalize_query$normalize$fn__53731.invoke(normalize_query.clj:22)"
  "query_processor.middleware.constraints$add_default_userland_constraints$fn__50737.invoke(constraints.clj:53)"
  "query_processor.middleware.process_userland_query$process_userland_query$fn__53670.invoke(process_userland_query.clj:145)"
  "query_processor.middleware.catch_exceptions$catch_exceptions$fn__54042.invoke(catch_exceptions.clj:167)"
  "query_processor.reducible$async_qp$qp_STAR___45504$thunk__45506.invoke(reducible.clj:100)"
  "query_processor.reducible$async_qp$qp_STAR___45504.invoke(reducible.clj:106)"
  "query_processor.reducible$async_qp$qp_STAR___45504.invoke(reducible.clj:91)"
  "query_processor.reducible$sync_qp$qp_STAR___45515.doInvoke(reducible.clj:126)"
  "query_processor$process_userland_query.invokeStatic(query_processor.clj:331)"
  "query_processor$process_userland_query.doInvoke(query_processor.clj:327)"
  "query_processor$fn__55061$process_query_and_save_execution_BANG___55070$fn__55073.invoke(query_processor.clj:342)"
  "query_processor$fn__55061$process_query_and_save_execution_BANG___55070.invoke(query_processor.clj:335)"
  "query_processor$fn__55105$process_query_and_save_with_max_results_constraints_BANG___55114$fn__55117.invoke(query_processor.clj:354)"
  "query_processor$fn__55105$process_query_and_save_with_max_results_constraints_BANG___55114.invoke(query_processor.clj:347)"
  "api.dataset$run_query_async$fn__70412.invoke(dataset.clj:69)"
  "query_processor.streaming$streaming_response_STAR_$fn__40600$fn__40601.invoke(streaming.clj:162)"
  "query_processor.streaming$streaming_response_STAR_$fn__40600.invoke(streaming.clj:161)"
  "async.streaming_response$do_f_STAR_.invokeStatic(streaming_response.clj:65)"
  "async.streaming_response$do_f_STAR_.invoke(streaming_response.clj:63)"
  "async.streaming_response$do_f_async$task__20045.invoke(streaming_response.clj:84)"],
 :card_id nil,
 :context :ad-hoc,
 :error "No method in multimethod 'connection-details->spec' for dispatch value: :sqlserver",
 :row_count 0,
 :running_time 0,
 :data {:rows [], :cols []}}

Any ideas what's going on here?

Edited to add:
Sample DB queries work fine and I've also added a PostgeSQL db and it's working as expected.

Can you change the Java version to 11?

Same error occurs in front end using Java 11.

Error log, same native query:

[86b11d8d-b681-409f-9926-bc6607a17a32] 2022-12-06T12:48:04+13:00 ERROR metabase.query-processor.middleware.catch-exceptions Error processing query: No method in multimethod 'connection-details->spec' for dispatch value: :sqlserver
{:database_id 2,
 :started_at #t "2022-12-06T12:48:04.278633800+13:00[Pacific/Auckland]",
 :json_query
 {:type "native",
  :native {:query "select 1", :template-tags {}},
  :database 2,
  :parameters [],
  :middleware {:js-int-to-string? true, :add-default-userland-constraints? true}},
 :status :failed,
 :class java.lang.IllegalArgumentException,
 :stacktrace
 ["clojure.lang.MultiFn.getFn(MultiFn.java:156)"
  "clojure.lang.MultiFn.invoke(MultiFn.java:233)"
  "--> driver.sql_jdbc.connection$create_pool_BANG_.invokeStatic(connection.clj:138)"
  "driver.sql_jdbc.connection$create_pool_BANG_.invoke(connection.clj:130)"
  "driver.sql_jdbc.connection$db__GT_pooled_connection_spec.invokeStatic(connection.clj:259)"
  "driver.sql_jdbc.connection$db__GT_pooled_connection_spec.invoke(connection.clj:205)"
  "driver.sql_jdbc.execute$datasource.invokeStatic(execute.clj:136)"
  "driver.sql_jdbc.execute$datasource.invoke(execute.clj:132)"
  "driver.sql_jdbc.execute$datasource_with_diagnostic_info_BANG_.invokeStatic(execute.clj:143)"
  "driver.sql_jdbc.execute$datasource_with_diagnostic_info_BANG_.invoke(execute.clj:138)"
  "driver.sql_jdbc.execute$fn__55830.invokeStatic(execute.clj:191)"
  "driver.sql_jdbc.execute$fn__55830.invoke(execute.clj:189)"
  "driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:496)"
  "driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:485)"
  "driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:493)"
  "driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:485)"
  "driver.sql_jdbc$fn__88401.invokeStatic(sql_jdbc.clj:58)"
  "driver.sql_jdbc$fn__88401.invoke(sql_jdbc.clj:56)"
  "query_processor.context$executef.invokeStatic(context.clj:59)"
  "query_processor.context$executef.invoke(context.clj:48)"
  "query_processor.context.default$default_runf.invokeStatic(default.clj:67)"
  "query_processor.context.default$default_runf.invoke(default.clj:65)"
  "query_processor.context$runf.invokeStatic(context.clj:45)"
  "query_processor.context$runf.invoke(context.clj:39)"
  "query_processor.reducible$identity_qp.invokeStatic(reducible.clj:12)"
  "query_processor.reducible$identity_qp.invoke(reducible.clj:9)"
  "query_processor.middleware.cache$maybe_return_cached_results$maybe_return_cached_results_STAR___53538.invoke(cache.clj:220)"
  "query_processor.middleware.permissions$check_query_permissions$fn__49193.invoke(permissions.clj:109)"
  "query_processor.middleware.mbql_to_native$mbql__GT_native$fn__52483.invoke(mbql_to_native.clj:23)"
  "query_processor$fn__55014$combined_post_process__55019$combined_post_process_STAR___55020.invoke(query_processor.clj:212)"
  "query_processor$fn__55014$combined_pre_process__55015$combined_pre_process_STAR___55016.invoke(query_processor.clj:209)"
  "query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__53459$fn__53464.invoke(resolve_database_and_driver.clj:35)"
  "driver$do_with_driver.invokeStatic(driver.clj:76)"
  "driver$do_with_driver.invoke(driver.clj:72)"
  "query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__53459.invoke(resolve_database_and_driver.clj:34)"
  "query_processor.middleware.fetch_source_query$resolve_card_id_source_tables$fn__49459.invoke(fetch_source_query.clj:314)"
  "query_processor.middleware.store$initialize_store$fn__49649$fn__49650.invoke(store.clj:11)"
  "query_processor.store$do_with_store.invokeStatic(store.clj:45)"
  "query_processor.store$do_with_store.invoke(store.clj:39)"
  "query_processor.middleware.store$initialize_store$fn__49649.invoke(store.clj:10)"
  "query_processor.middleware.normalize_query$normalize$fn__53731.invoke(normalize_query.clj:22)"
  "query_processor.middleware.constraints$add_default_userland_constraints$fn__50737.invoke(constraints.clj:53)"
  "query_processor.middleware.process_userland_query$process_userland_query$fn__53670.invoke(process_userland_query.clj:145)"
  "query_processor.middleware.catch_exceptions$catch_exceptions$fn__54042.invoke(catch_exceptions.clj:167)"
  "query_processor.reducible$async_qp$qp_STAR___45504$thunk__45506.invoke(reducible.clj:100)"
  "query_processor.reducible$async_qp$qp_STAR___45504.invoke(reducible.clj:106)"
  "query_processor.reducible$async_qp$qp_STAR___45504.invoke(reducible.clj:91)"
  "query_processor.reducible$sync_qp$qp_STAR___45515.doInvoke(reducible.clj:126)"
  "query_processor$process_userland_query.invokeStatic(query_processor.clj:331)"
  "query_processor$process_userland_query.doInvoke(query_processor.clj:327)"
  "query_processor$fn__55061$process_query_and_save_execution_BANG___55070$fn__55073.invoke(query_processor.clj:342)"
  "query_processor$fn__55061$process_query_and_save_execution_BANG___55070.invoke(query_processor.clj:335)"
  "query_processor$fn__55105$process_query_and_save_with_max_results_constraints_BANG___55114$fn__55117.invoke(query_processor.clj:354)"
  "query_processor$fn__55105$process_query_and_save_with_max_results_constraints_BANG___55114.invoke(query_processor.clj:347)"
  "api.dataset$run_query_async$fn__70412.invoke(dataset.clj:69)"
  "query_processor.streaming$streaming_response_STAR_$fn__40600$fn__40601.invoke(streaming.clj:162)"
  "query_processor.streaming$streaming_response_STAR_$fn__40600.invoke(streaming.clj:161)"
  "async.streaming_response$do_f_STAR_.invokeStatic(streaming_response.clj:65)"
  "async.streaming_response$do_f_STAR_.invoke(streaming_response.clj:63)"
  "async.streaming_response$do_f_async$task__20045.invoke(streaming_response.clj:84)"],
 :card_id nil,
 :context :ad-hoc,
 :error "No method in multimethod 'connection-details->spec' for dispatch value: :sqlserver",
 :row_count 0,
 :running_time 0,
 :data {:rows [], :cols []}}

Metabase config:

{
  "browser-info": {
    "language": "en-NZ",
    "platform": "Win32",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
    "vendor": "Google Inc."
  },
  "system-info": {
    "file.encoding": "Cp1252",
    "java.runtime.name": "OpenJDK Runtime Environment",
    "java.runtime.version": "11.0.17+8",
    "java.vendor": "Eclipse Adoptium",
    "java.vendor.url": "https://adoptium.net/",
    "java.version": "11.0.17",
    "java.vm.name": "OpenJDK 64-Bit Server VM",
    "java.vm.version": "11.0.17+8",
    "os.name": "Windows 10",
    "os.version": "10.0",
    "user.language": "en",
    "user.timezone": "Pacific/Auckland"
  },
  "metabase-info": {
    "databases": [
      "sqlserver",
      "postgres",
      "h2"
    ],
    "hosting-env": "unknown",
    "application-database": "postgres",
    "application-database-details": {
      "database": {
        "name": "PostgreSQL",
        "version": "12.1"
      },
      "jdbc-driver": {
        "name": "PostgreSQL JDBC Driver",
        "version": "42.5.0"
      }
    },
    "run-mode": "prod",
    "version": {
      "date": "2022-12-03",
      "tag": "v0.45.0",
      "branch": "release-x.45.x",
      "hash": "4e41d76"
    },
    "settings": {
      "report-timezone": "NZ"
    }
  }
}

Got the same issue. Any solution for this?

Edit: I've downgraded back to 0.44.6.

+1 to the same issue.
Downgrading to a lower version broke some dashboards and I migrated data to another DB.

You should restore the app db backup to downgrade

Which sql server version are you using?

Microsoft SQL Azure (RTM) - 12.0.2000.8

Just got this error too "No method in multimethod 'connection-details->spec' for dispatch value: :sqlserver". I'm running SQL Server 2019 (version 15).

I've created an issue for it:
https://github.com/metabase/metabase/issues/26992 - upvote by clicking :+1: on the first post

3 Likes

I have the same issue. As soon as I upgraded from 0.44 to 0.45 I can't do anything in the front end with MS SQL connections.

I visited the issue in Github and fiamber (you) already it already has a link to download a new version of metabase that fixes this problem. :slight_smile:

It's great to see a fix becoming available in such a fast manner. Thanks.

What version are you using? I still have that error

@anhduc280694 Follow the link here:

It will be fixed in 45.1 coming later today.

2 Likes

The download link is still pointing to the old 0.45.0 version.

Correct link is https://downloads.metabase.com/v0.45.1/metabase.jar

I have used V0.45.1, but it always give a timeout after 10.0s.
should trustServerCertificate be true or false? I tried both, it does not work.
Also, I either enable or disable SSL, both does not work too.
So there is no other settings for me to change now.
Why is there timeout? I can easily connect to that SQL Server 2019 AdventureWorks2019 tables from my LINQPad 7 software.

@TAN That's a completely different problem than this topic. You are either using the wrong host or port, or there's a firewall blocking, or you have other networking problems.

yup, got it working now, thanks a lot.