Skip to content

AlwaysEncrypted input column in PreparedStatement type clash #345

@kokhoor

Description

@kokhoor

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,

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions