Sql Служба анализа сервера Adomd строка подключения с всегда шифрованной базой данных? - PullRequest
0 голосов
/ 05 мая 2020

У меня есть 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

...