Объединить всегда зашифрованные столбцы в SQL Server 2016

Я пытаюсь объединить всегда зашифрованные столбцы в SQL Server 2016 и получаю следующее исключение. Пожалуйста помоги...

One:

(ISNULL(SGTC.FIRST_NAME, '') + ' ' + ISNULL(SGTC.MIDDLE_INITIAL_NAME, '') + ' ' + ISNULL(SGTC.LAST_NAME, '')) AS CLAIMANT_NAME 

Two:

SGTC.FIRST_NAME + '' + SGTC.MIDDLE_INITIAL_NAME + '' + SGTC.LAST_NAME AS CLAIMANT_NAME

И сообщение об ошибке выглядит следующим образом:

Msg 206, Level 16, State 2, Line 2
Operand type clash: varchar(50) encrypted with (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_POC_CERTSTORE', column_encryption_key_database_name = 'ALWAYS-ENCRYPT-UIM-WV-DB') collation_name = 'Latin1_General_BIN2' is incompatible with varchar

person abcreddy    schedule 02.10.2017    source источник
comment
К сожалению, конкатенация не поддерживается для всегда зашифрованных столбцов. См. stackoverflow.com/questions/44241430/ Если это часть приложения, вы можете объединить столбцы в приложении после их расшифровки.   -  person BWarner    schedule 02.10.2017


Ответы (1)


Конкатенация не разрешена для зашифрованных столбцов. В настоящее время единственная возможная операция над зашифрованными столбцами — равенство. Это связано с тем, что SQL Server не имеет ключа.

Возможно, вам придется реализовать эту логику в клиентском приложении.

Из официальной документации

Детерминированное шифрование всегда генерирует одно и то же зашифрованное значение для любого заданного значения обычного текста. Использование детерминированного шифрования позволяет осуществлять точечный поиск, объединение на равенство, группировку и индексирование зашифрованных столбцов. Однако это также может позволить неавторизованным пользователям угадывать информацию о зашифрованных значениях путем изучения шаблонов в зашифрованном столбце, особенно если существует небольшой набор возможных зашифрованных значений, таких как Истина/Ложь или регион Север/Юг/Восток/Запад. Детерминированное шифрование должно использовать сопоставление столбцов с порядком сортировки binary2 для символьных столбцов.

Случайное шифрование использует метод, который шифрует данные менее предсказуемым образом. Случайное шифрование более безопасно, но предотвращает поиск, группировку, индексирование и объединение в зашифрованных столбцах.

person Nikhil Vithlani - Microsoft    schedule 02.10.2017