Поделиться через


Analysis Services PowerShell

SQL Server 2014 Analysis Services (SSAS) включает в себя поставщик и командлеты Службы Analysis Services PowerShell (SQLAS), которые позволяют использовать Windows PowerShell для навигации, администрирования и запроса объектов Служб Analysis Services.

В состав Analysis Services PowerShell входит следующее.

  • Поставщик SQLAS, используемый для навигации по иерархии объектов AMO.

  • Командлет Invoke-ASCmd, используемый для выполнения скриптов многомерного анализа данных (MDX), расширений интеллектуального анализа данных (DMX) или XML для аналитики.

  • Командлеты для отдельных задач, выполняющие типовые операции, в частности, обработку, управление ролями, управление секциями, резервное копирование и восстановление.

В этой статье

Предварительные требования

Поддерживаемые версии и режимы служб Analysis Services

Требования проверки подлинности и соображения безопасности

Задачи Analysis Services PowerShell

Дополнительные сведения о синтаксисе и примерах см. в справочнике по PowerShell для служб Analysis Services.

Предварительные требования

Должна быть установлена оболочка Windows PowerShell 2.0. В последних версиях операционных систем Windows она устанавливается по умолчанию. Дополнительные сведения см. в статье Установка Windows PowerShell 2.0.

Необходимо установить компонент SQL Server, включающий модуль SQL Server PowerShell (SQLPS) и клиентские библиотеки. Проще всего это сделать, установив среду SQL Server Management Studio, которая уже включает компонент PowerShell и клиентские библиотеки. Модуль SQL Server PowerShell (SQLPS) содержит поставщики PowerShell и командлеты для всех компонентов SQL Server, включая модуль SQLASCmdlets и поставщик SQLAS, используемый для навигации по иерархии объектов служб Analysis Services.

Прежде чем использовать SQLAS поставщик и командлеты, необходимо импортировать модуль SQLPS. Поставщик SQLAS является расширением SQLServer поставщика. Имеется несколько способов импорта модуля SQLPS. Дополнительные сведения см. в разделе Импорт модуля SQLPS.

Для удаленного доступа к экземпляру служб Analysis Services требуется включить удаленное администрирование и общий доступ к файлам. Дополнительные сведения см. в разделе Включение удаленного администрирования этой статьи.

Поддерживаемые версии и режимы служб Analysis Services

В настоящее время PowerShell служб Analysis Services поддерживается в любом выпуске SQL Server 2014 Analysis Services под управлением Windows Server 2008 R2, Windows Server 2008 с пакетом обновления 1 (SP1) или Windows 7.

В следующей таблице приведены данные по доступности Analysis Services PowerShell в различных контекстах.

Контекст Доступность функций PowerShell
Многомерные экземпляры и базы данных Поддерживается локальное и удаленное администрирование.

Для слияния секций необходимо локальное соединение.
Табличные экземпляры и базы данных Поддерживается локальное и удаленное администрирование.

Дополнительные сведения см. в блоге за август 2011 г. об управлении табличными моделями с помощью PowerShell.
Экземпляры и базы данных PowerPivot для SharePoint Ограниченная поддержка. Для просмотра сведений об экземпляре и базе данных можно использовать соединения HTTP и поставщик SQLAS.

Однако использование командлетов не поддерживается. Надстройку PowerShell для служб Analysis Services не следует использовать для резервного копирования и восстановления хранящихся в памяти баз данных PowerPivot, а также для добавления и удаления ролей, обработки данных или запуска произвольных скриптов XMLA.

В целях настройки в PowerPivot для SharePoint имеется встроенная поддержка PowerShell, реализуемая отдельно. Дополнительные сведения см. в справочнике по PowerShell для PowerPivot для SharePoint.
Собственные соединения с локальными кубами

"Data Source=c:\backup\test.cub"
Не поддерживается.
Соединения HTTP с файлами соединений семантических моделей бизнес-аналитики (BISM-файлами) в SharePoint

"Data Source=https://server/shared_docs/name.bism"
Не поддерживается.
Встроенные соединения с базами данных PowerPivot

"Data Source=$Embedded$"
Не поддерживается.
Контекст локального сервера в хранимых процедурах служб Analysis Services

"Источник данных=*"
Не поддерживается.

Требования проверки подлинности и соображения безопасности

При соединении со службами Analysis Services необходимо использовать идентификатор пользователя Windows. В большинстве случаев соединение осуществляется с использованием встроенной проверки подлинности Windows, при этом идентификатор текущего пользователя задает контекст, в котором выполняются серверные операции. Однако после настройки доступа к службам Analysis Services по HTTP становятся доступными дополнительные методы проверки подлинности. В этом разделе описывается, как тип соединения влияет на возможные параметры проверки подлинности.

Соединение к службам Analysis Services может быть собственным либо соединением по HTTP. Собственное соединение — это прямое соединение клиентского приложения к серверу. В сеансе PowerShell клиент PowerShell использует поставщик OLE DB для служб Analysis Services для прямого подключения к экземпляру служб Analysis Services. Собственные соединения всегда осуществляются с использованием встроенной безопасности Windows, при этом PowerShell выполняется от имени текущего пользователя. Службы Analysis Services не поддерживают олицетворение. Если необходимо выполнить операцию от имени определенного пользователя, запустите сеанс PowerShell от имени этого пользователя.

HTTP-соединения производятся непрямым образом через IIS, что обеспечивает дополнительные возможности проверки подлинности, например использование обычной проверки подлинности при подключении к экземпляру служб Analysis Services. Поскольку службы IIS поддерживают олицетворение, в строке подключения можно указать учетные данные, которые будут использоваться IIS для олицетворения при соединении. Чтобы предоставить учетные данные, можно использовать параметр -Credential.

Использование параметра -Credential в PowerShell

Параметр -Credential принимает объект PSCredential, указывающий имя пользователя и пароль. В Analysis Services PowerShell параметр -Credential доступен для командлетов, которые делают запрос на подключение к службам Analysis Services, в отличие от командлетов, которые выполняются в контексте существующего подключения. К командлетам, осуществляющим запрос на соединение, относятся Invoke-ASCmd, Backup-ASDatabase и Restore-ASDatabase. Для этих командлетов можно использовать параметр -Credential при условии, что выполняются следующие условия:

  1. Сервер настроен на доступ по HTTP, то есть соединение обрабатывается сервером IIS, который считывает имя пользователя и пароль и олицетворяет соответствующий идентификатор пользователя при соединении со службами Analysis Services. Дополнительные сведения см. в статье Настройка http-доступа к службам Analysis Services в службах IIS 8.0.

  2. Виртуальный каталог IIS, созданный для доступа к службам Analysis Services по HTTP, настроен на обычную проверку подлинности.

  3. Имя пользователя и пароль, предоставляемые объектом учетных данных, разрешаются в идентификатор пользователя Windows. Службы Analysis Services используют этот идентификатор в качестве текущего пользователя. Если пользователь не является пользователем Windows или у него недостаточно прав для выполнения запрошенной операции, запрос завершается с ошибкой.

Чтобы создать объект учетных данных, можно воспользоваться командлетом Get-Credential для получения учетных данных от оператора. Затем этот объект учетных данных можно использовать в команде подключения к службам Analysis Services. В следующем примере показан один из подходов. В этом примере подключение выполняется к локальному экземпляру (SQLSERVER:\SQLAS\HTTP_DS), настроенного для доступа по протоколу HTTP.

$cred = Get-Credential adventureworks\dbadmin  
Invoke-ASCmd -Inputfile:"c:\discoverconnections.xmla" -Credential:$cred  

При использовании обычной проверки подлинности следует всегда использовать протокол HTTPS с включенным SSL, чтобы имя пользователя и пароль передавались по зашифрованному соединению. Дополнительные сведения см. в разделах Настройка уровня безопасных сокетов в IIS 7.0 и Настройка обычной проверки подлинности (IIS 7).

Не забывайте, что учетные данные, запросы и команды, вводимые в PowerShell, передаются на транспортный уровень без изменений. Включение конфиденциальных данных в скрипты повышает вероятность вредоносной атаки типа «инъекция».

Указание пароля в объекте Microsoft.Secure.String

Некоторые операции, например резервное копирование и восстановление, поддерживают параметры шифрования, которые включаются при указании в команде пароля. Указание пароля дает службам Analysis Services команду на шифрование или расшифровку файла резервной копии. В службах Analysis Services экземпляр этого пароля создается в виде объекта защищенной строки. В следующем примере показано, как получить пароль от оператора во время выполнения.

$pwd = read-host -AsSecureString -Prompt "Password"  
$pwd -is [System.IDisposable]  

Теперь можно создавать резервную копию зашифрованного файла базы данных и восстанавливать ее, передавая переменную $pwd в параметр пароля. Полный пример, объединяющий эту иллюстрацию с другими командлетами, см. в разделах Командлет Backup-ASDatabase и Командлет Restore-ASDatabase.

В качестве следующего шага удалите пароль и переменную из сеанса.

$pwd.Dispose()  
Remove-Variable -Name pwd  

Задачи Analysis Services PowerShell

Службы Analysis Services PowerShell можно запустить из консоли управления Windows PowerShell или командной строки Windows. Запуск PowerShell служб Analysis Services из SQL Server Management Studio не поддерживается.

В этом разделе описываются типичные задачи, для выполнения которых используется Analysis Services PowerShell.

Загрузка поставщика служб Analysis Services и командлетов

Поставщик Analysis Services — это расширение корневого поставщика SQL Server, которое становится доступным при импорте модуля SQLPS. Командлеты служб Analysis Services загружаются одновременно; их также можно загружать по отдельности, если вы хотите использовать их без поставщика.

  • Запустите командлет Import-module, чтобы загрузить SQLPS, включающий всю функциональность Analysis Services PowerShell. Если импортировать модуль невозможно, можно временно сменить политику выполнения на неограниченную, чтобы загрузить этот модуль. Дополнительные сведения см. в разделе Импорт модуля SQLPS.

    Import-Module "sqlps"  
    

    Вместо этого можно использовать команду import-module "sqlps" -disablenamechecking для подавления предупреждений о несоответствии имен команд утвержденным.

  • Чтобы загрузить лишь командлеты служб Analysis Services для определенной задачи, без поставщика служб Analysis Services или командлета Invoke-ASCmd, можно загрузить модуль SQLASCmdlets в рамках независимой операции.

    Import-Module "sqlascmdlets"  
    

Включение удаленного администрирования

Чтобы можно было использовать службы Analysis Services PowerShell с удаленным экземпляром служб Analysis Services, сначала необходимо включить удаленное администрирование и общий доступ к файлам. Следующая ошибка указывает на проблему с конфигурацией брандмауэра: "Сервер RPC недоступен. (Исключение HRESULT: 0x800706BA.)".

  1. Убедитесь, что на локальных и удаленных компьютерах установлены версии SQL Server 2014 Analysis Services (SSAS) клиентских и серверных средств.

  2. На удаленном сервере, на котором размещен экземпляр служб Analysis Services, откройте в брандмауэре Windows порт TCP 2383. Если службы Analysis Services установлены как именованный экземпляр или используют заданный пользователем порт, номер порта будет другим. Дополнительные сведения см. в статье Configure the Windows Firewall to Allow Analysis Services Access.

  3. На удаленном сервере убедитесь, что запущены следующие службы: служба удаленных вызовов процедур (RPC), вспомогающая служба NETBIOS TCP/IP, служба инструментария управления Windows (WMI), служба удаленного управления Windows (WS-Management).

  4. На удаленном сервере запустите оснастку редактора объектов групповой политики (gpedit.msc).

  5. Откройте последовательно следующие элементы: «Настройка компьютера»,«Административные шаблоны», «Сеть», «Сетевые подключения», «Брандмауэр Windows» и «Профиль домена».

  6. Дважды щелкните Брандмауэр Windows: разрешить входящее исключение удаленного администрирования, выберите Включено и нажмите кнопку ОК.

  7. Дважды щелкните брандмауэр Windows: разрешить входящее исключение общего доступа к файлам и принтерам, выберите Включено и нажмите кнопку ОК.

  8. На локальном компьютере с клиентскими инструментами используйте следующие командлеты для проверки удаленного администрирования, заменив фактическое имя сервера заполнителем remote-server-name . Пропустите имя экземпляра, если службы Analysis Services установлены как экземпляр по умолчанию. Чтобы эта команда работала, необходимо предварительно импортировать модуль SQLPS.

    PS SQLSERVER:\> cd sqlas
    PS SQLSERVER:\sqlas> cd <remote-server-name\instance-name>  
    PS SQLSERVER:\sqlas\<remote-server-name\instance-name> dir  
    

В некоторых случаях может понадобиться дополнительная настройка. Возможно, потребуется ввести на удаленном сервере следующую команду, прежде чем на нем можно будет выполнять команды с другого компьютера:

Enable-PSRemoting  

Подключение к объекту служб Analysis Services

Поставщик Analysis Services PowerShell поддерживает навигацию по иерархии объектов служб Analysis Services и задает контекст для выполнения команд. Поставщик является расширением корневого поставщика SQLSERVER, доступного в модуле SQLPS. После загрузки модуля SQLPS становится доступной навигация по пути.

Возможно подключение как к локальному, так и к удаленному экземпляру, но некоторые командлеты работают только на локальном экземпляре (например, merge-partition). Можно использовать собственное соединение или HTTP-соединение с серверами служб Analysis Services, настроенными на доступ по протоколу HTTP. На следующих рисунках показан путь навигации для собственных соединений и для соединений по протоколу HTTP. На следующих рисунках показан путь навигации для собственных соединений и для соединений по протоколу HTTP.

Собственные соединения со службами Analysis Services

Собственное подключение к службам Analysis Services

Следующий пример показывает использование собственного соединения для навигации по иерархии объектов. На поставщике можно воспользоваться командой dir для просмотра сведений об экземпляре. Команда cd позволяет просмотреть объекты на этом экземпляре.

PS SQLSERVER:> cd sqlas  
PS SQLSERVER\sqlas:> dir  
PS SQLSERVER\sqlas:> cd localhost\default  
PS SQLSERVER\sqlas\localhost\default:> dir  

Вы увидите следующие коллекции: Сборки, Базы данных, Роли и Трассировки. Продолжая использовать cd и dir, можно просмотреть содержимое всех коллекций.

Соединения по протоколу HTTP со службами Analysis Services

HTTP-подключение к службам Analysis Services

HTTP-подключения полезны, если вы настроили сервер для доступа по протоколу HTTP, следуя инструкциям в этой статье: Настройка http-доступа к службам Analysis Services в службах IIS 8.0

При условии https://localhost/olap/msmdpump.dll, что URL-адрес сервера имеет значение , подключение может выглядеть следующим образом:

PS SQLSERVER\sqlas:> cd http_ds  
PS SQLSERVER\sqlas\http_ds:> $Url=Encode-SqlName "https://localhost/olap/msmdpump.dll"  
PS SQLSERVER\sqlas\http_ds:> cd $Url  
PS SQLSERVER\sqlas\http_ds\http%3A%2F%2Flocalhost%2olap%2msmdpump%2Edll:> dir  

Вы увидите следующие коллекции: Сборки, Базы данных, Роли и Трассировки. Если просмотреть содержимое этих коллекций не удается, проверьте параметры проверки подлинности в виртуальном каталоге OLAP. Убедитесь, что анонимный доступ отключен. Если используется проверка подлинности Windows, убедитесь, что у учетной записи пользователя Windows имеются административные разрешения для экземпляра служб Analysis Services.

Администрирование службы

Убедитесь в том, что служба запущена. Возвращает состояние, имя и отображаемое имя служб SQL Server, включая службы Analysis Services (MSSQLServerOLAPService) и компонент Database Engine.

Get-Service mssql*  

Возвращает свойства процесса, включая идентификатор процесса, количество дескрипторов и объем используемой памяти:

Get-Process msmdsrv  

Перезапускает службу, когда пользователь выполняет следующий командлет из оболочки администратора:

Restart-Service mssqlserverolapservice  

Получение справки по Analysis Services PowerShell

Используйте любой из следующих командлетов, чтобы проверить доступность командлетов и получить дополнительные сведения о службах, процессах и объектах.

  1. Get-Help возвращает встроенную справку для командлета служб Analysis Services, включая примеры:

    Get-Help invoke-ascmd -Examples  
    
  2. Get-Command возвращает список из одиннадцати командлетов Analysis Services PowerShell:

    Get-Command -module SQLASCmdlets  
    
  3. Get-Member возвращает свойства или методы службы или процесса.

    Get-Service mssqlserverolapservice | Get-Member -Type Property  
    
    Get-Service mssqlserverolapservice | Get-Member -Type Method  
    
    Get-Process msmdsrv | Get-Member -Type Property  
    
  4. Get-Member также может использоваться для возвращения свойств или методов объекта (например, методов AMO у серверного объекта) с применением поставщика SQLAS, задающего экземпляр сервера.

    PS SQLSERVER:\sqlas\localhost\default > $serverObj = New-Object Microsoft.AnalysisServices.Server  
    PS SQLSERVER:\sqlas\localhost\default > $serverObj = | Get-Member -Type Method  
    
  5. Get-PSdrive возвращает список поставщиков, установленных в настоящий момент. Если модуль SQLPS импортирован, в списке отобразится поставщик SQLServer (SQLAS входит в состав поставщика SQLServer и никогда не появляется в списке отдельно от него):

    Get-PSDrive  
    

См. также:

Установка компонентов SQL Server PowerShell
Управление табличными моделями с помощью PowerShell (блог)
Настройка HTTP-доступа к службам Analysis Services в службах Internet Information Services (IIS) 8.0