使用 Node.JS 和 SQL 服务器始终加密时插入数据库时出错
Error inserting into database with Node.JS and SQL Server Always Encrypted
我使用具有 Always Encrypted 功能的 SQL 服务器数据库。当我尝试插入一行时,它失败并抛出错误
let request = new Request(`INSERT INTO [dbo].[table_name] ([Name])
VALUES ('test')`,
function (err, rowCount, rows) {
if (err) {
console.log('errr--', err);
} else {
console.log(' row(s) ', rows);
}
});
错误:
RequestError: Operand type clash: varchar is incompatible with varchar(8000) encrypted with (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto1', column_encryption_key_database_name = 'DrugstoreDB') collation_name = 'SQL_Latin1_General_CP1_CI_AS'_```
问题出在哪里?
AlwaysEncrypted 是客户端加密,因此必须由您的客户端驱动程序支持。据我所知,当前已实施 AlwaysEncrypted 的客户端库列表为:
-.NET Framework 的 SqlClient(但不是 .NET Core/.NET Standard)
-SQL 服务器的 Windows
的 Microsoft ODBC 驱动程序
-SQL 服务器的 Linux
的 Microsoft ODBC 驱动程序
-Microsoft JDBC SQL 服务器的驱动程序
我使用具有 Always Encrypted 功能的 SQL 服务器数据库。当我尝试插入一行时,它失败并抛出错误
let request = new Request(`INSERT INTO [dbo].[table_name] ([Name])
VALUES ('test')`,
function (err, rowCount, rows) {
if (err) {
console.log('errr--', err);
} else {
console.log(' row(s) ', rows);
}
});
错误:
RequestError: Operand type clash: varchar is incompatible with varchar(8000) encrypted with (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto1', column_encryption_key_database_name = 'DrugstoreDB') collation_name = 'SQL_Latin1_General_CP1_CI_AS'_```
问题出在哪里?
AlwaysEncrypted 是客户端加密,因此必须由您的客户端驱动程序支持。据我所知,当前已实施 AlwaysEncrypted 的客户端库列表为:
-.NET Framework 的 SqlClient(但不是 .NET Core/.NET Standard)
-SQL 服务器的 Windows
的 Microsoft ODBC 驱动程序-SQL 服务器的 Linux
的 Microsoft ODBC 驱动程序-Microsoft JDBC SQL 服务器的驱动程序