node-sqlserver-v8 icon indicating copy to clipboard operation
node-sqlserver-v8 copied to clipboard

AlwaysEncrypted input column in PreparedStatement type clash

Open kokhoor opened this issue 1 year ago • 1 comments

I am using msnodesqlv8 4.2.1 with mssql 11.0.1

When using AlwaysEncrypted input column in PreparedStatement, the parameter seems to not be sent with a size. The column in database is nvarchar(128), and following is my code:

const ps = new sql.PreparedStatement(pool)
ps.input('name', sql.NVarChar(128));
await ps.prepare('select TOP 10 name from tbl_emp WHERE name=@name');
result = await ps.execute({ name: 'test' });

The error I received is:

[Error: [Microsoft][ODBC Driver 18 for SQL Server][SQL Server]Operand type clash: nvarchar is incompatible with nvarchar(128) encrypted with (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'XXX', column_encryption_key_database_name = 'XXX')]

This is on Linux msodbcsql18.

Redacted Error: at handleError (/opt/nodeprojects/msnodesql/node_modules/mssql/lib/msnodesqlv8/request.js:276:21) at StreamEvents.emit (node:events:517:28) at StreamEvents.emit (node:domain:489:12) at /opt/nodeprojects/msnodesql/node_modules/msnodesqlv8/lib/reader.js:83:20 at Array.forEach () at Query.routeStatementError (/opt/nodeprojects/msnodesql/node_modules/msnodesqlv8/lib/reader.js:73:19) at /opt/nodeprojects/msnodesql/node_modules/msnodesqlv8/lib/reader.js:239:12 at /opt/nodeprojects/msnodesql/node_modules/msnodesqlv8/lib/driver.js:191:13 at Immediate. (/opt/nodeprojects/msnodesql/node_modules/msnodesqlv8/lib/driver.js:167:9) at process.processImmediate (node:internal/timers:476:21) { code: 'EREQUEST' sqlstate: '22018', code: 206, severity: 16,

kokhoor avatar Oct 09 '24 00:10 kokhoor