Возможно ли удаленно обработать сценарий куба SSAS?
У меня есть куб службы анализа SQL Server (SSAS) (разработанный с BIDS 2012), и я хотел бы предоставить возможность пользователям (которые используют куб через PowerPivot) обрабатывать куб на своих локальных компьютерах.
Я нашел некоторый материал о том, как выполнить запланированное задание на сервере с помощью Powershell, агента SQL или службы SSIS, но не дал материала об удаленной обработке куба. Любой совет?
1 ответ
Есть несколько возможностей для запуска обработки куба. Низкоуровневый метод заключается в выдаче оператора XMLA в базу данных, содержащую куб. Чтобы увидеть, как это выглядит, откройте SQL Server Management Studio, подключитесь к экземпляру AS, щелкните правой кнопкой мыши базу данных AS и выберите "Процесс". Настройте параметры обработки, но вместо нажатия кнопки "ОК" выберите "Сценарий на верхней панели инструментов, чтобы создать для вас команду процесса XMLA. Выйдите из диалогового окна с помощью кнопки" Отмена ". Все методы, которые так или иначе обрабатывают конец куба, при отправке такая команда для базы данных AS.
Есть несколько вариантов запуска обработки куба:
- В Management Studio, нажав кнопку ОК в вышеупомянутом диалоговом окне.
- В PowerShell (см. http://technet.microsoft.com/en-us/library/hh510171.aspx).
- В службах Integration Services есть задача обработки служб Analysis Services ( http://msdn.microsoft.com/en-us/library/ms141779.aspx).
- Можно настроить задание агента SQL Server, этапы задания могут быть либо прямым шагом XMLA, либо этапом служб Integration Services, содержащим задачу процесса (среди, возможно, других задач).
Вопрос, однако, заключается в том, как конечные пользователи могут получить доступ к описанным выше установкам. Важной проблемой здесь, конечно, является то, что пользователь, выполняющий задачу процесса, должен иметь разрешение на обработку куба. Поскольку вы, возможно, не захотите давать это разрешение напрямую, возможно, имеет смысл использовать какое-то подражание для его вызова. С Management Studio - и, насколько мне известно, с PowerShell - это не может быть легко достигнуто.
Интеграционные услуги и агентские задания предлагают возможность подражания. Пакеты служб интеграции выполняются с помощью инструмента командной строки dtexec (входит в состав клиентских инструментов SQL Server), также есть инструмент dtexecui (доступен как "Утилита выполнения пакета" в стандартной установке клиентского инструмента SQL Server), который позволяет вам использовать диалоговое окно для настройки всех параметров, а затем выполнения пакета, но в нем также может отображаться командная строка для dtexec в соответствии с вашими настройками.
А для вызова задания агента SQL Server простым интерфейсом являются хранимые процедуры ( http://msdn.microsoft.com/en-us/library/ms187763.aspx), особенно sp_start_job
(Обратите внимание, что это асинхронно, вы вызываете его, он запускает задание и возвращается. Он не ожидает завершения задания, прежде чем вернуться.) И sp_help_jobactivity
просить о статусе работы, а также sp_help_jobhistory
для деталей рабочих мест, которые были запущены.
В общем, я думаю, что окончательного решения не существует, но я упомянул некоторые строительные блоки, которые вы могли бы использовать для написания своего собственного решения, в зависимости от предпочтений в вашей среде.