Настроить доступ к определенным мерам куба совсем несложно. Для этого нужно использовать существующую роль или создать новую в проекте Visual Studio\Analysis Services. Далее заходим в настройку роли (двойной клик). Допустим, нужно настроить доступ пользователю на чтение данных из куба, но не по всем мерам, а только по определенным. Делаем так:

  1. На закладке "Общие" включаем флаг "Считывание определения"
  2. На закладке "Членство" добавляем пользователей или группы пользователей из домена
  3. На закладке "Кубы" отмечаем тип доступа для каждого куба, входящего в проект. Для нужного куба нужно поставить "Чтение". Остальные параметры не трогаем
  4. На закладке "Данные ячейки" ставим флаг "Включить разрешения на чтение", далее кнопку "Изменить". В поле "Выражение" перечисляем меры, к которым мы хотим запретить или разрешить доступ. Для этого используется MDX-выражение вида (названия мер перетягиваем из дерева): 
    1. Запрет: (NOT Measures.CurrentMember IS [Measures].[УдельныеЗатраты Руб-м3]) AND (NOT Measures.CurrentMember IS [Measures].[Объем м3])
    2. Разрешение: (Measures.CurrentMember IS [Measures].[Reseller Sales Amount]) OR (Measures.CurrentMember IS [Measures].[Reseller Total Product Cost])
  5. Нажимаем "Проверка". 
  6. Сохраняем проект. Закрываем настройку роли. Обрабатываем куб.

Более подробно о доступе к мерам здесь: MSDN

Более подробно о доступе к измерениям здесь: MSDN

Для БД, в которых находятся OLAP-кубы, нельзя создать план обслуживания, как это делается для OLTP БД. Соответственно, БД SQL Server Analysis Services можно скопировать двумя способами:

  1. однократно: в SSMS подключиться к серверу Analysis Services, найти нужную БД. Правый клик - "Создать резервную копию". "Разрешить перезапись файлов" = Нет, "Выполнить сжатие" = Да, "Зашифровать" = Нет (это по желанию). Далее указать название файла, нажать ОК.
  2. автоматически с помощью простого скрипта: зайти в диалог создания резервной копии, как в способе 1. Выставить нужные параметры. Нажать Скрипт\.. в буфер обмена. Далее в агенте SQL создать новое задание и в качестве шага указать этот скрипт. Остальные действия выполнить как в заметке про Автоматический процессинг куба. Внимание: пользователь NT SERVICE\SQLSERVERAGENT должен иметь для данной БД членство в группе доступа с флагом "полный доступ (администратор)". 

Восстановить БД можно, выполнив действия: подключиться в SSMS, правый клик по папке "Базы данных"-Восстановить. Далее указать название файла и БД, в которую будем восстанавливать (новую или существующую). При указании файла важно убедиться, что файл .ABF лежит в папке, которая настроена в свойстве Analysis Services "AllowedBrowsingFolders". Если бэкап сделан в папку по умолчанию, о настройке этого свойства можно не беспокоиться.

Чтобы сделать правильную сортировку по названиям месяцев и датам, необходимо:

  1. добавить в куб измерение времени "Календарь" , которое бы содержало дату, порядковый номер месяца и название месяца, а также цифры года. Измерение времени может быть добавлено при создании куба средствами SSAS либо это может быть физическая таблица в БД. Я использую готовую таблицу в БД, которая содержит даты на много лет вперед и назад.
  2. создать связи между таблицами источника данных по датам, через текстовое поле "Дата". Для этого при создании представления источника данных, заменяем таблицы БД на view (команда в контекстном меню "Заменить таблицу именованным запросом"). Далее в тексте  именованного запроса, добавляем новое поле, получаемое из обычной даты с типом date через функцию CONVERT:

    SELECT     QUARTER, MONTHNAME, [YEAR], TRANSDATE, [MONTH], WEEKOFMTH, RECVERSION, RECID, CONVERT(VARCHAR(15), TRANSDATE, 104) AS ДатаТ

    FROM         OLAPDATETABLE

  3. указать свойства для атрибута "Номер месяца" (в моем примере Month) в измерении: Order by - Key, Key - выбрать атрибут "Номер месяца", NameColumn - выбрать атрибут "Название месяца"
  4. то же самое проделать для атрибута "Название месяца" (в моем примере MonthName)
  5. обработать куб.

Свойства атрибутов и конечный результат см.на картинках.

 

 

 

После разработки и отладки куба приходит время отпустить его в свободное плавание. Это предполагает автоматическое включение в куб новых данных, которое происходит при обработке куба. Проще всего настроить автоматический процессинг куба с помощью агента SQL Server. Задание агента представляет собой последовательность шагов, выполняемых по расписанию от имени выбранного пользователя (в частности, службы агента MS SQL Server. Чтобы настроить новое задание, нужно: 1. Открыть SQL Server Management Studio (SSMS), подключить Сервер анализа данных. Найти базу данных куба, в ней в папке "Кубы" - нужный Куб. Щелкнуть "Обработка" на кубе, и в появившемся окне нажать кнопку Скрипт\Записать скрипт в новом окне запроса" (либо в буфер и далее вставить в блокнот). Таким же образом нужно сделать для всех кубов, которые будут включены в автоматическую обработку, а также для измерений этих кубов. Папка "Измерения" находится под папкой "Кубы". Процессинг куба без процессинга измерений, скорее всего, выдаст ошибку. 2. Открыть SQL Server Management Studio (SSMS), подключить Database engine. Открыть папку "Задания" в разделе "Агент SQL Server". Агент должен быть предварительно установлен для данного экземпляра SQL Server. 3. Создать новое задание. Указать имя задания. 4. На вкладке "Шаги" создать шаги для обновления всех измерений, а затем и самого куба. Последним шагом должно быть обновление куба. 5. На вкладке "Расписание" необходимо создать новое расписание и настроить его. 6. Нажать ОК для сохранения нового задания. 7. Если пользователь NT SERVICE\SQLSERVERAGENT не имеет доступа к БД куба, необходимо добавить его к одной из ролей, допускающих обработку куба, либо создать отдельную роль для этого.

Привожу ссылку MSDN на все возможные форматы данных, которые можно использовать в MS SSAS: 

https://msdn.microsoft.com/ru-ru/library/ms146084(v=sql.110)

 

Мой формат для денежных значений в кубе: 

#,###;-#,### - отображается как цифры с разделителем групп разрядов "пробел", без разрядов после запятой. Достаточно указать это выражение в свойстве FormatString, в свойствах меры. При использовании вычислений, в свойстве FormatString нужно прописать то же выражение, но в двойных кавычках.