SQL Server - экспорт зашифрованных данных (параметр шифрования столбца = включен) с помощью утилиты bcp.exe - PullRequest
0 голосов
/ 03 апреля 2019

Мне нужно экспортировать таблицу с зашифрованными столбцами в текстовый файл. Зашифрованные данные должны быть экспортированы в виде простого текста, а не зашифрованы.

Привет всем.

Мне нужно выполнить некоторые операции агрегирования по зашифрованным столбцам в 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;

Эта команда экспортирует данные таблицы, но зашифрованные столбцы остаются зашифрованными, поэтому я не могу импортировать их и выполнять над ними дальнейшие операции.

Может ли кто-нибудь помочь с решением?

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