Установите для зашифрованного столбца значение NULL в SQL Серверная хранимая процедура из ASP. NET сетки - PullRequest
0 голосов
/ 24 января 2020

Моя 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 ') (или слабее).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...