У меня есть SQL серверная база данных с включенным Always Encryption в некоторых столбцах таблицы в базе данных. Указав свойство Column Encryption Setting = Enabled
в экземпляре подключения SQL, я смог получить доступ к зашифрованным данным.
Используя ту же базу данных, у меня запущен проект службы анализа. У меня есть куб, который я запрашиваю с помощью запроса многомерных выражений, возвращающего набор данных в клиентское веб-приложение. Имеющийся у меня проект API C# работает нормально. Он извлекает данные из куба, в котором выполняется запрос многомерных выражений.
Вот код, который я пробовал до сих пор:
public DBModel()
{
Microsoft.AnalysisServices.AdomdClient.AdomdConnection con = new AdomdConnection("Data Source=DESKTOP-12HU22V;Password=abc@123;User ID=ABC;Initial Catalog=Multi-Dimensional-Project");
try
{
con.Open();
CubeCollection cubeCollection = con.Cubes;
Console.WriteLine("CUBE STATE: "+ con.State);
string commandText = @" SELECT NON EMPTY { [Measures].[Lobby Count] } ON COLUMNS, NON EMPTY { ([Lobby].[Status].[Status].ALLMEMBERS * [Lobby].[Lobby Id].[Lobby Id].ALLMEMBERS * [Lobby].[Last Name].[Last Name].ALLMEMBERS * [Lobby].[First Name].[First Name].ALLMEMBERS * [Lobby].[Added Local Time].[Added Local Time].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION ON ROWS FROM ( SELECT ( { [Lobby].[Status].&[6] } ) ON COLUMNS FROM ( SELECT ( { [Branch].[Branch Id].&[1] } ) ON COLUMNS FROM ( SELECT ( Filter( [Lobby].[Added Local Time].[Added Local Time].ALLMEMBERS, Instr( [Lobby].[Added Local Time].currentmember.Properties( 'Member_Caption' ), '2020' ) > 0 ) ) ON COLUMNS FROM [LTS KROI DEMO]))) WHERE ( [Branch].[Branch Id].&[1] ) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS";
AdomdCommand cmd = new AdomdCommand(commandText, con);
DataTable dt = new DataTable();
AdomdDataAdapter da = new AdomdDataAdapter(commandText, con);
da.Fill(dt);
this.returnDataTable = dt;
con.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
Он возвращает набор данных примерно так:
[
{
"status": 6,
"lobbyId": 2755278,
"lastName": "012EB5AFEF68986E5401A90F3352ED81A3DBAB17BCAF8D43F",
"firstName": "01956E7649D57D2FC09F37913DF68734A2349FD51A7BED32",
"addedLocalTime": "2020-01-02 10:32:37.807",
"lobbyCount": 1
},
{
"status": 6,
"lobbyId": 2754287,
"lastName": "01CF0CF149809A76FF553910E20029F20742B01764ABE47643",
"firstName": "018DB3C293F60FE53F093667E3CDFF604B5B9339A7AE69565C",
"addedLocalTime": "2020-01-07 18:12:12.313",
"lobbyCount": 1
},
{
"status": 6,
"lobbyId": 2852279,
"lastName": "015DDFB087838C379938EC3A48271B96B1CE90D35248F32955765006551AA",
"firstName": "011F6000CD0C4A258AE0C1030E9B87EE838BC2B2ABA58ADB941DA6D744C5",
"addedLocalTime": "2020-01-14 08:38:34.550",
"lobbyCount": 1
}
]
Вопрос:
Как вы можете видеть в результате набора данных фамилия и имя значения зашифрованы. Это поля, которые шифруются с использованием метода шифрования AE в базе данных сервера SQL. Как расшифровать эти зашифрованные данные на стороне клиента с помощью строки подключения, предоставленной для строки AdomdConnection?
Мне нужны эти данные в виде простого текста при их получении API.
PS: - Я использую SQL Server 2016 с Visual Studio 2019 с C# API