Мне нужно экспортировать таблицу с зашифрованными столбцами в текстовый файл. Зашифрованные данные должны быть экспортированы в виде простого текста, а не зашифрованы.
Привет всем.
Мне нужно выполнить некоторые операции агрегирования по зашифрованным столбцам в SQL Server (данные зашифрованы встроенной функцией SQL Server 2017 Always Encrypted). Я нашел способ, как это сделать - экспортировать содержимое таблицы в некоторый текстовый файл, а затем импортировать этот текстовый файл в какую-то таблицу. Это позволит выполнять любые операции над данными, поскольку они больше не будут зашифрованы.
Это прекрасно работает, когда я вручную экспортирую эти данные из SSMS с помощью опции [Сохранить результаты как ...] , а затем импортирую файл с помощью команды BULK INSERT .
Следующий шаг, который мне нужен, это то, что я хочу сделать это автоматически, используя хранимую процедуру. Я нашел информацию, что это можно сделать с помощью команды XP_CMDSHELL , которая вызывает утилиту bcp.exe . И тут начинается проблема.
Эта утилита запускается пользователем, который запускает процесс SQL Server. Я установил сертификат безопасности для этого пользователя и ожидал, что экспортированные данные с помощью утилиты bcp.exe будут расшифрованы. Но, к сожалению, это не так.
Некоторая информация о пользователе, который запускает процесс SQL Server:
1) Имеет роль сервера sysadmin;
2) Установлен сертификат безопасности .pfx для доступа к зашифрованным данным
3) Когда я вхожу в систему как пользователь SQL Server, подключаюсь к базе данных с помощью дополнительного параметра Параметр шифрования столбца = включен , выбираю данные из таблицы с зашифрованными столбцами - I см. расшифрованные данные.
Команды, которые я использую:
DECLARE @bcp_cmd4 VARCHAR(1000);
DECLARE @exe_path4 VARCHAR(200) =
' cd C:\Program Files\Microsoft SQL Server\110\Tools\Binn\ & ';
SET @bcp_cmd4 = @exe_path4 +
'bcp.exe "SELECT * FROM [Table]" queryout ' +
' "C:\Dir\Data.csv" -T -c -t, -r \n';
PRINT @bcp_cmd4;
EXEC MASTER..XP_CMDSHELL @bcp_cmd4;
Эта команда экспортирует данные таблицы, но зашифрованные столбцы остаются зашифрованными, поэтому я не могу импортировать их и выполнять над ними дальнейшие операции.
Может ли кто-нибудь помочь с решением?