SQL Server 2014 Analysis Services (SSAS) 包括 Analysis Services PowerShell (SQLAS) 提供程序和 cmdlet,以便可以使用 Windows PowerShell 来导航、管理和查询 Analysis Services 对象。
Analysis Services PowerShell 包括以下内容:
SQLAS
用于导航分析管理对象(AMO)层次结构的提供者。Invoke-ASCmd
用于执行 MDX、DMX 或 XMLA 脚本的 cmdlet。用于常规操作的任务专用 cmdlet,例如处理、角色管理、分区管理、备份和还原。
本文内容
Analysis Services PowerShell 任务
有关语法和示例的详细信息,请参阅 Analysis Services PowerShell 参考。
先决条件
必须安装 Windows PowerShell 2.0。 默认情况下,它安装在较新版本的 Windows作系统上。 有关详细信息,请参阅 安装 Windows PowerShell 2.0
必须安装包含 SQL Server PowerShell 模块和客户端库的 SQL Server 功能。 执行此操作的最简单方法是安装 SQL Server Management Studio,其中自动包含 PowerShell 功能和客户端库。 SQL Server PowerShell (SQLPS) 模块包含所有 SQL Server 功能的 PowerShell 提供程序和 cmdlet,包括用于导航 Analysis Services 对象层次结构的 SQLASCmdlet 模块和 SQLAS 提供程序。
必须先导入 SQLPS 模块,然后才能使用 SQLAS
提供程序和 cmdlet。 SQLAS 提供程序是 SQLServer
提供程序的扩展。 可通过多种方式导入 SQLPS 模块。 有关详细信息,请参阅 导入 SQLPS 模块。
远程访问 Analysis Services 实例需要启用远程管理和文件共享。 有关详细信息,请参阅本主题中的 “启用远程管理 ”。
Analysis Services 支持的版本和模式
目前,在 Windows Server 2008 R2、Windows Server 2008 SP1 或 Windows 7 上运行的任何 SQL Server 2014 Analysis Services 版本上都支持 Analysis Services PowerShell。
下表显示了 Analysis Services PowerShell 在不同上下文中的可用性。
上下文 | PowerShell 功能可用性 |
---|---|
多维实例和数据库 | 支持本地和远程管理。 合并分区需要本地连接。 |
表格实例和数据库 | 支持本地和远程管理。 有关详细信息,请参阅 2011 年 8 月博客,了解如何 使用 PowerShell 管理表格模型。 |
PowerPivot for SharePoint 实例和数据库 | 有限的支持。 可以使用 HTTP 连接和 SQLAS 提供程序查看实例和数据库信息。 但是,不支持使用 cmdlet。 不得使用 Analysis Services PowerShell 备份和还原内存中 PowerPivot 数据库,也不得添加或删除角色、处理数据或运行任意 XMLA 脚本。 出于配置目的,PowerPivot for SharePoint 具有单独提供的内置 PowerShell 支持。 有关详细信息,请参阅 PowerPivot for SharePoint 的 PowerShell 参考。 |
与本地多维数据集的原生连接 数据源=c:\备份\test.cub |
不支持。 |
与 SharePoint 中的 BI 语义模型 (.bism) 连接文件的 HTTP 连接 数据源=https://server/shared_docs/name.bism" |
不支持。 |
与 PowerPivot 数据库的嵌入式连接 “数据来源=$Embedded$” |
不支持。 |
Analysis Services 存储过程中的本地服务器上下文 数据源=* |
不支持。 |
身份验证要求和安全注意事项
连接到 Analysis Services 时,必须使用 Windows 用户标识建立连接。 在大多数情况下,连接是通过 Windows 集成安全性建立的,其中当前用户的标识设置了在其下执行服务器操作的安全上下文。 但是,配置对 Analysis Services 的 HTTP 访问时,可以使用其他身份验证方法。 本部分说明连接类型如何确定可以使用哪些身份验证选项。
与 Analysis Services 的连接被描述为本机连接或 HTTP 连接。 本机连接是客户端应用程序与服务器之间的直接连接。 在 PowerShell 会话中,PowerShell 客户端使用用于 Analysis Services 的 OLE DB 提供程序直接连接到 Analysis Services 实例。 始终使用 Windows 集成安全性进行本地连接,其中 Analysis Services PowerShell 以当前用户身份运行。 Analysis Services 不支持身份模拟。 如果要以特定用户身份执行作,则必须以该用户身份启动 PowerShell 会话。
HTTP 连接通过 IIS 间接建立,允许其他身份验证选项(如基本身份验证)连接到 Analysis Services 实例。 由于 IIS 支持模拟,因此可以提供包含 IIS 在建立连接时用于模拟的凭据的连接字符串。 若要提供凭据,可以使用 -Credential 参数。
在 PowerShell 中使用 -Credential 参数
-Credential 参数采用指定用户名和密码的 PSCredential 对象。 在 Analysis Services PowerShell 中,-Credential 参数适用于那些需要向 Analysis Services 发出连接请求的 cmdlet,而非在现有连接上下文中运行的 cmdlet。 发出连接请求的 Cmdlet 包括 Invoke-ASCmd、Backup-ASDatabase 和 Restore-ASDatabase。 对于这些 cmdlet,可以使用 -Credential 参数,前提是满足以下条件:
服务器配置为 HTTP 访问,这意味着 IIS 处理连接、读取用户名和密码,并在连接到 Analysis Services 时模拟该用户标识。 有关详细信息,请参阅 配置对 Internet Information Services (IIS) 8.0 上的 Analysis Services 的 HTTP 访问。
为 Analysis Services HTTP 访问创建的 IIS 虚拟目录配置为基本身份验证。
凭据对象提供的用户名和密码解析为 Windows 用户标识。 Analysis Services 将此身份用作当前用户。 如果用户不是 Windows 用户,或者没有足够的权限来执行请求的作,则请求将失败。
若要创建凭据对象,可以使用 Get-Credential cmdlet 从操作员收集凭据。 然后,可以在连接到 Analysis Services 的命令上使用凭据对象。 下面的示例演示了一种方法。 在此示例中,连接到一个已配置为 HTTP 访问的本地实例(SQLSERVER:\SQLAS\HTTP_DS
)。
$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变量传递给密码参数。 若要查看将此图与其他 cmdlet 组合的完整示例,请参阅 Backup-ASDatabase cmdlet 和 Restore-ASDatabase cmdlet。
作为后续步骤,请从会话中删除密码和变量。
$pwd.Dispose()
Remove-Variable -Name pwd
Analysis Services PowerShell 任务
可以从 Windows PowerShell 命令行管理程序或 Windows 命令提示符运行 Analysis Services PowerShell。 不支持从 SQL Server Management Studio 运行 Analysis Services PowerShell。
本部分介绍使用 Analysis Services PowerShell 的常见任务。
加载 Analysis Services 提供程序和 Cmdlet
Analysis Services 提供程序是导入 SQLPS 模块时可用的 SQL Server 根提供程序的扩展。 分析服务命令同时加载。您也可以在不使用提供程序的情况下单独加载这些命令。
运行 Import-module cmdlet 以加载包含所有 Analysis Services PowerShell 功能的 SQLPS。 如果无法导入模块,可以暂时将执行策略更改为不受限制,以便加载模块。 有关详细信息,请参阅 导入 SQLPS 模块。
Import-Module "sqlps"
或者,使用
import-module "sqlps" -disablenamechecking
抑制有关未经批准动词名称的警告。若要仅加载特定于任务的 Analysis Services cmdlet,而不使用 Analysis Services 提供程序或 Invoke-ASCmd cmdlet,可以将 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 安装为命名实例或使用自定义端口,端口号将有所不同。 有关详细信息,请参阅 配置 Windows 防火墙以允许 Analysis Services 访问。
在远程服务器上,验证是否已启动以下服务:远程过程调用(RPC)服务、TCP/IP NetBIOS 帮助程序服务、Windows Management Instrumentation (WMI) 服务、Windows 远程管理(WS-Management)服务。
在远程服务器上,启动组策略对象编辑器管理单元(gpedit.msc)。
打开计算机配置,打开管理模板,打开网络,打开网络连接,打开 Windows 防火墙,然后打开域配置文件。
双击 “Windows 防火墙:允许入站远程管理例外”,选择“ 已启用”,然后单击“ 确定”。
双击 Windows 防火墙:允许入站文件和打印机共享异常,选择“ 已启用”,然后单击“ 确定”。
在具备客户端工具的本地计算机上,使用以下 cmdlet 验证远程管理,并将 远程服务器名称 占位符替换为实际的服务器名称。 如果 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 对象层次结构的导航,并设置用于运行命令的上下文。 该提供程序是可通过 SQLPS 模块提供的 SQLSERVER 根提供程序的扩展。 加载 SQLPS 模块后,可以导航路径。
可以连接到本地或远程实例,但某些 cmdlet 仅在本地实例(即合并分区)上运行。 可以对为 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
可以查看每个集合的内容。
与 Analysis Services 的 HTTP 连接
如果使用本主题中的说明为服务器配置了 HTTP 访问,则 HTTP 连接非常有用: 在 Internet Information Services (IIS) 8.0 上配置对 Analysis Services 的 HTTP 访问
假设服务器 URL 为 https://localhost/olap/msmdpump.dll,则连接可能如下所示:
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)和数据库引擎。
Get-Service mssql*
返回有关进程的属性,包括进程 ID、句柄计数和内存使用情况:
Get-Process msmdsrv
从管理员 shell 发出以下 cmdlet 时重启服务:
Restart-Service mssqlserverolapservice
获取 分析服务 PowerShell 帮助
使用以下任一 cmdlet 验证 cmdlet 可用性,并获取有关服务、进程和对象的详细信息。
Get-Help
返回 Analysis Services cmdlet 的内置帮助,包括示例:Get-Help invoke-ascmd -Examples
Get-Command
返回 11 个 Analysis Services PowerShell cmdlet 的列表: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
还可用于使用 SQLAS 提供程序返回对象的属性或方法(例如,服务器对象上的 AMO 方法),以指定服务器实例。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 管理表格模型(博客)
在 Internet Information Services (IIS) 8.0 上配置 Analysis Services 的 HTTP 访问