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 при условии, что выполняются следующие условия:
Сервер настроен на доступ по HTTP, то есть соединение обрабатывается сервером IIS, который считывает имя пользователя и пароль и олицетворяет соответствующий идентификатор пользователя при соединении со службами Analysis Services. Дополнительные сведения см. в статье Настройка http-доступа к службам Analysis Services в службах IIS 8.0.
Виртуальный каталог IIS, созданный для доступа к службам Analysis Services по HTTP, настроен на обычную проверку подлинности.
Имя пользователя и пароль, предоставляемые объектом учетных данных, разрешаются в идентификатор пользователя 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.)".
Убедитесь, что на локальных и удаленных компьютерах установлены версии SQL Server 2014 Analysis Services (SSAS) клиентских и серверных средств.
На удаленном сервере, на котором размещен экземпляр служб Analysis Services, откройте в брандмауэре Windows порт TCP 2383. Если службы Analysis Services установлены как именованный экземпляр или используют заданный пользователем порт, номер порта будет другим. Дополнительные сведения см. в статье Configure the Windows Firewall to Allow Analysis Services Access.
На удаленном сервере убедитесь, что запущены следующие службы: служба удаленных вызовов процедур (RPC), вспомогающая служба NETBIOS TCP/IP, служба инструментария управления Windows (WMI), служба удаленного управления Windows (WS-Management).
На удаленном сервере запустите оснастку редактора объектов групповой политики (gpedit.msc).
Откройте последовательно следующие элементы: «Настройка компьютера»,«Административные шаблоны», «Сеть», «Сетевые подключения», «Брандмауэр Windows» и «Профиль домена».
Дважды щелкните Брандмауэр Windows: разрешить входящее исключение удаленного администрирования, выберите Включено и нажмите кнопку ОК.
Дважды щелкните брандмауэр Windows: разрешить входящее исключение общего доступа к файлам и принтерам, выберите Включено и нажмите кнопку ОК.
На локальном компьютере с клиентскими инструментами используйте следующие командлеты для проверки удаленного администрирования, заменив фактическое имя сервера заполнителем 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
Следующий пример показывает использование собственного соединения для навигации по иерархии объектов. На поставщике можно воспользоваться командой 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-подключения полезны, если вы настроили сервер для доступа по протоколу 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
Используйте любой из следующих командлетов, чтобы проверить доступность командлетов и получить дополнительные сведения о службах, процессах и объектах.
Get-Help
возвращает встроенную справку для командлета служб Analysis Services, включая примеры:Get-Help invoke-ascmd -Examples
Get-Command
возвращает список из одиннадцати командлетов Analysis Services PowerShell:Get-Command -module SQLASCmdlets
Get-Member
возвращает свойства или методы службы или процесса.Get-Service mssqlserverolapservice | Get-Member -Type Property
Get-Service mssqlserverolapservice | Get-Member -Type Method
Get-Process msmdsrv | Get-Member -Type Property
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
Get-PSdrive
возвращает список поставщиков, установленных в настоящий момент. Если модуль SQLPS импортирован, в списке отобразится поставщикSQLServer
(SQLAS входит в состав поставщика SQLServer и никогда не появляется в списке отдельно от него):Get-PSDrive
См. также:
Установка компонентов SQL Server PowerShell
Управление табличными моделями с помощью PowerShell (блог)
Настройка HTTP-доступа к службам Analysis Services в службах Internet Information Services (IIS) 8.0