Моя ASP. NET сетка выбирает данные из таблицы с зашифрованным столбцом NVarchar(11)
. Это шифрование:
ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [Column Encryption Key],
ENCRYPTION_TYPE = Deterministic,
ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256')
Ноль - единственное значение, которое не может быть сохранено в зашифрованном поле. ASP. NET отправляет текст в виде строки, что эквивалентно varchar(4000)
. SQL Сервер не допустит, чтобы тип данных для входного параметра отличался от поля таблицы. Другими словами, varchar(4000)
не может сохранить ноль в Nvarchar(11)
.
Я мог бы сделать это в C#, что позволяет мне создать точно совпадающий параметр. Но в сетках Asp. Net используется UpdateCommand
, который является либо строкой SQL, либо именем SQL серверной хранимой процедуры. Кажется, он не может выполнить обратную функцию c#.
Может кто-нибудь предложить обходной путь? Я попытался взять входящие данные для зашифрованного поля и скопировать его в переменную NVarchar(11)
, которая объявлена внутри хранимой процедуры, но я получаю сообщение
Несоответствие схемы шифрования для столбцов / переменных ' @MyVariable. Схема шифрования для столбцов / переменных: (encryption_type = 'PLAINTEXT'), и выражение рядом со строкой '99' ожидает, что оно будет (encryption_type = 'DETERMINISTI C', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', аргумент_скрипции столбца_скрипции столбца_колонки) ', column_encryption_key_database_name =' GODonationsDB ') (или слабее).