Browse Source

Allow port to be specified in SQLServer connections.

Refs #11544
mark_story 8 years ago
parent
commit
04bcc25f20

+ 6 - 1
src/Database/Driver/Sqlserver.php

@@ -39,6 +39,7 @@ class Sqlserver extends Driver
         'username' => '',
         'password' => '',
         'database' => 'cake',
+        'port' => '',
         // PDO::SQLSRV_ENCODING_UTF8
         'encoding' => 65001,
         'flags' => [],
@@ -82,8 +83,12 @@ class Sqlserver extends Driver
         if (!empty($config['encoding'])) {
             $config['flags'][PDO::SQLSRV_ATTR_ENCODING] = $config['encoding'];
         }
+        $port = '';
+        if (strlen($config['port'])) {
+            $port = ',' . $config['port'];
+        }
 
-        $dsn = "sqlsrv:Server={$config['host']};Database={$config['database']};MultipleActiveResultSets=false";
+        $dsn = "sqlsrv:Server={$config['host']}{$port};Database={$config['database']};MultipleActiveResultSets=false";
         if ($config['app'] !== null) {
             $dsn .= ";APP={$config['app']}";
         }

+ 9 - 1
tests/TestCase/Database/Driver/SqlserverTest.php

@@ -66,7 +66,15 @@ class SqlserverTest extends TestCase
                 [
                 ],
                 'sqlsrv:Server=localhost\SQLEXPRESS;Database=cake;MultipleActiveResultSets=false',
-            ]
+            ],
+            [
+                [
+                    'app' => 'CakePHP-Testapp',
+                    'host' => 'locahost',
+                    'port' => 9001,
+                ],
+                'sqlsrv:Server=localhost\SQLEXPRESS,9001;Database=cake;MultipleActiveResultSets=false;APP=CakePHP-Testapp',
+            ],
         ];
     }