From ef610cec0883119506cca965abe4341dacc1c9b0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cam=20Sa=C3=BCl?= <cammsaul@gmail.com>
Date: Mon, 16 Nov 2015 12:56:00 -0800
Subject: [PATCH] Allow setting instance for SQL Server DBs :yum: #1481

---
 src/metabase/driver/sqlserver.clj | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/metabase/driver/sqlserver.clj b/src/metabase/driver/sqlserver.clj
index d885f022b20..acb9b9ef278 100644
--- a/src/metabase/driver/sqlserver.clj
+++ b/src/metabase/driver/sqlserver.clj
@@ -47,13 +47,15 @@
    :xml              :UnknownField
    (keyword "int identity") :IntegerField}) ; auto-incrementing integer (ie pk) field
 
-(defn- connection-details->spec [details]
+(defn- connection-details->spec [{:keys [instance], :as details}]
   (-> (kdb/mssql details)
       ;; swap out Microsoft Driver details for jTDS ones
       (assoc :classname   "net.sourceforge.jtds.jdbc.Driver"
              :subprotocol "jtds:sqlserver")
       ;; adjust the connection URL to match up with the jTDS format (see http://jtds.sourceforge.net/faq.html#urlFormat)
-      (update :subname #(s/replace % #";database=" "/"))))
+      ;; and add the ;instance= option if applicable
+      (update :subname #(cond-> (s/replace % #";database=" "/")
+                          (seq instance) (str ";instance=" instance)))))
 
 ;; See also the [jTDS SQL <-> Java types table](http://jtds.sourceforge.net/typemap.html)
 (defn- date [unit field-or-value]
@@ -114,7 +116,7 @@
   (-> (sql-driver {:driver-name               "SQL Server"
                    :details-fields            [{:name         "host"
                                                 :display-name "Host"
-                                                :default "localhost"}
+                                                :default      "localhost"}
                                                {:name         "port"
                                                 :display-name "Port"
                                                 :type         :integer
@@ -123,6 +125,9 @@
                                                 :display-name "Database name"
                                                 :placeholder  "BirdsOfTheWorld"
                                                 :required     true}
+                                               {:name         "instance"
+                                                :display-name "Database instance name"
+                                                :placeholder  "N/A"}
                                                {:name         "user"
                                                 :display-name "Database username"
                                                 :placeholder  "What username do you use to login to the database?"
-- 
GitLab