Skip to content

Commit 61fce50

Browse files
authored
Merge pull request #1799 from alexsch01/master
feat: ability to provide specific config.driver for msnodesqlv8
2 parents 840535e + 571b075 commit 61fce50

3 files changed

Lines changed: 38 additions & 3 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ const config = {
9595
trustedConnection: true, // Set to true if using Windows Authentication
9696
trustServerCertificate: true, // Set to true if using self-signed certificates
9797
},
98-
driver: "msnodesqlv8", // Required if using Windows Authentication
98+
// driver: "ODBC Driver 18 for SQL Server", // Uncomment to use specific driver
9999
};
100100

101101
(async () => {

lib/msnodesqlv8/connection-pool.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const ConnectionError = require('../error/connection-error')
99
const { platform } = require('node:os')
1010
const { buildConnectionString } = require('@tediousjs/connection-string')
1111

12-
const CONNECTION_DRIVER = ['darwin', 'linux'].includes(platform()) ? 'ODBC Driver 17 for SQL Server' : 'SQL Server Native Client 11.0'
12+
const DEFAULT_CONNECTION_DRIVER = ['darwin', 'linux'].includes(platform()) ? 'ODBC Driver 17 for SQL Server' : 'SQL Server Native Client 11.0'
1313

1414
class ConnectionPool extends BaseConnectionPool {
1515
_poolCreate () {
@@ -23,7 +23,7 @@ class ConnectionPool extends BaseConnectionPool {
2323

2424
if (!this.config.connectionString) {
2525
cfg.conn_str = buildConnectionString({
26-
Driver: CONNECTION_DRIVER,
26+
Driver: this.config.driver && this.config.driver !== 'msnodesqlv8' ? this.config.driver : DEFAULT_CONNECTION_DRIVER,
2727
Server: this.config.options.instanceName ? `${this.config.server}\\${this.config.options.instanceName}` : `${this.config.server},${this.config.port}`,
2828
Database: this.config.database,
2929
Uid: this.config.user,

test/msnodesqlv8/msnodesqlv8.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,41 @@ describe('msnodesqlv8', function () {
241241
after(() => sql.close())
242242
})
243243

244+
describe('config().driver tests', function () {
245+
it('cfg.driver is undefined', done => {
246+
const cfg = config()
247+
cfg.driver = undefined
248+
sql.connect(cfg, done)
249+
})
250+
251+
// Specifically for Windows
252+
it('cfg.driver is SQL Server Native Client 11.0', done => {
253+
const cfg = config()
254+
cfg.driver = 'SQL Server Native Client 11.0'
255+
sql.connect(cfg, done)
256+
})
257+
258+
it('cfg.driver is invalid', done => {
259+
const cfg = config()
260+
cfg.driver = 'aaTESTING1234'
261+
262+
sql.connect(cfg, function (err) {
263+
if (err) {
264+
// Specifically for Windows
265+
if (err.message === '[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified') {
266+
return done()
267+
}
268+
269+
return done(new Error('Incorrect error message shown'))
270+
}
271+
272+
return done(new Error('No error message shown'))
273+
})
274+
})
275+
276+
afterEach(() => sql.close())
277+
})
278+
244279
after('cleanup', done =>
245280
sql.connect(config(), function (err) {
246281
if (err) return done(err)

0 commit comments

Comments
 (0)