diff --git a/src/Database/Driver/Sqlserver.php b/src/Database/Driver/Sqlserver.php index de65f4aa309..c5e92bf8d6e 100644 --- a/src/Database/Driver/Sqlserver.php +++ b/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 @@ public function connect() 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']}"; } diff --git a/tests/TestCase/Database/Driver/SqlserverTest.php b/tests/TestCase/Database/Driver/SqlserverTest.php index ce410ab75f7..97de1bb46b2 100644 --- a/tests/TestCase/Database/Driver/SqlserverTest.php +++ b/tests/TestCase/Database/Driver/SqlserverTest.php @@ -66,7 +66,15 @@ public function dnsStringDataProvider() [ ], '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', + ], ]; }