Skip to content
Snippets Groups Projects
Commit df3928ed authored by Phil Stewart's avatar Phil Stewart
Browse files

Issue #3291464 by pstewart: Support for SQL Server specific DSN connection options

parent 26504dca
Branches
Tags
1 merge request!80Issue #3291464: Support for SQL Server specific DSN connection options
...@@ -325,6 +325,7 @@ class Connection extends DatabaseConnection { ...@@ -325,6 +325,7 @@ class Connection extends DatabaseConnection {
// Build the DSN. // Build the DSN.
$options = []; $options = [];
$options['Server'] = $connection_options['host'] . (!empty($connection_options['port']) ? ',' . $connection_options['port'] : ''); $options['Server'] = $connection_options['host'] . (!empty($connection_options['port']) ? ',' . $connection_options['port'] : '');
// We might not have a database in the // We might not have a database in the
// connection options, for example, during // connection options, for example, during
// database creation in Install. // database creation in Install.
...@@ -332,6 +333,59 @@ class Connection extends DatabaseConnection { ...@@ -332,6 +333,59 @@ class Connection extends DatabaseConnection {
$options['Database'] = $connection_options['database']; $options['Database'] = $connection_options['database'];
} }
// Set sqlsrv specific DSN options.
if (isset($connection_options['readonly'])) {
$options['ApplicationIntent'] = 'ReadOnly';
}
if (isset($connection_options['pooling']) && $connection_options['pooling'] === false) {
$options['ConnectionPooling'] = '0';
}
if (isset($connection_options['appname'])) {
$options['APP'] = $connection_options['appname'];
}
if (isset($connection_options['encrypt'])) {
$options['Encrypt'] = $connection_options['encrypt'];
}
if (isset($connection_options['trust_server_certificate'])) {
$options['TrustServerCertificate'] = $connection_options['trust_server_certificate'];
}
if (isset($connection_options['multiple_active_result_sets']) && $connection_options['multiple_active_result_sets'] === false) {
$options['MultipleActiveResultSets'] = 'false';
}
if (isset($connection_options['transaction_isolation'])) {
$options['TransactionIsolation'] = $connection_options['transaction_isolation'];
}
if (isset($connection_options['multi_subnet_failover'])) {
$options['MultiSubnetFailover'] = $connection_options['multi_subnet_failover'];
}
if (isset($connection_options['column_encryption'])) {
$options['ColumnEncryption'] = $connection_options['column_encryption'];
}
if (isset($connection_options['key_store_authentication'])) {
$options['KeyStoreAuthentication'] = $connection_options['key_store_authentication'];
}
if (isset($connection_options['key_store_principal_id'])) {
$options['KeyStorePrincipalId'] = $connection_options['key_store_principal_id'];
}
if (isset($connection_options['key_store_secret'])) {
$options['KeyStoreSecret'] = $connection_options['key_store_secret'];
}
if (isset($connection_options['login_timeout'])) {
$options['LoginTimeout'] = $connection_options['login_timeout'];
}
// Build the DSN. // Build the DSN.
$dsn = 'sqlsrv:'; $dsn = 'sqlsrv:';
foreach ($options as $key => $value) { foreach ($options as $key => $value) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment