次の方法で共有


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、または XMLA スクリプトの実行に使用されるコマンドレット。

  • 処理、ロール管理、パーティション管理、バックアップ、復元などの日常的な操作用のタスク固有のコマンドレット。

この記事の内容

前提条件

Analysis Services のサポートされているバージョンとモード

認証要件とセキュリティに関する考慮事項

Analysis Services PowerShell タスク

構文と例の詳細については、「 Analysis Services PowerShell リファレンス」を参照してください。

[前提条件]

Windows PowerShell 2.0 をインストールする必要があります。 既定では、新しいバージョンの Windows オペレーティング システムにインストールされます。 詳細については、「Windows PowerShell 2.0 のインストール」を参照してください。

SQL Server PowerShell (SQLPS) モジュールとクライアント ライブラリを含む SQL Server 機能をインストールする必要があります。 これを行う最も簡単な方法は、PowerShell 機能とクライアント ライブラリを自動的に含む SQL Server Management Studio をインストールすることです。 SQL Server PowerShell (SQLPS) モジュールには、Analysis Services オブジェクト階層の移動に使用される SQLASCmdlets モジュールや SQLAS プロバイダーなど、すべての SQL Server 機能の PowerShell プロバイダーとコマンドレットが含まれています。

SQLAS プロバイダーとコマンドレットを使用するには、SQLPS モジュールをインポートする必要があります。 SQLAS プロバイダーは、 SQLServer プロバイダーの拡張機能です。 SQLPS モジュールをインポートするには、いくつかの方法があります。 詳細については、「 SQLPS モジュールのインポート」を参照してください。

Analysis Services インスタンスへのリモート アクセスでは、リモート管理とファイル共有を有効にする必要があります。 詳細については、このトピックの「 リモート管理を有効にする」 を参照してください。

Analysis Services のサポートされているバージョンとモード

現在、Analysis Services PowerShell は、Windows Server 2008 R2、Windows Server 2008 SP1、または Windows 7 で実行されている SQL Server 2014 Analysis Services の任意のエディションでサポートされています。

次の表は、さまざまなコンテキストでの Analysis Services PowerShell の可用性を示しています。

コンテキスト PowerShell 機能の可用性
多次元インスタンスとデータベース ローカルおよびリモート管理でサポートされます。

マージ パーティションにはローカル接続が必要です。
表形式のインスタンスとデータベース ローカルおよびリモート管理でサポートされます。

詳細については、 PowerShell を使用したテーブル モデルの管理に関する 2011 年 8 月のブログを参照してください。
PowerPivot for SharePoint インスタンスとデータベース 制限付きサポート。 HTTP 接続と SQLAS プロバイダーを使用して、インスタンスとデータベースの情報を表示できます。

ただし、コマンドレットの使用はサポートされていません。 Analysis Services PowerShell を使用してメモリ内の PowerPivot データベースをバックアップおよび復元したり、ロールの追加や削除、データの処理、任意の XMLA スクリプトの実行を行ったりしてはなりません。

構成目的で、PowerPivot for SharePoint には、個別に提供される PowerShell サポートが組み込まれています。 詳細については、「 PowerPivot for SharePoint の PowerShell リファレンス」を参照してください。
ローカル キューブへのネイティブ接続

"Data Source=c:\backup\test.cub"
サポートされていません。
SharePoint での BI セマンティック モデル (.bism) 接続ファイルへの HTTP 接続

"Data Source=https://server/shared_docs/name.bism"
サポートされていません。
PowerPivot データベースへの埋め込み接続

"データソース=$Embedded$"
サポートされていません。
Analysis Services ストアド プロシージャのローカル サーバー コンテキスト

"Data Source=*"
サポートされていません。

認証要件とセキュリティに関する考慮事項

Analysis Services に接続するときは、Windows ユーザー ID を使用して接続する必要があります。 ほとんどの場合、接続は Windows 統合セキュリティを使用して行われ、現在のユーザーの ID によって、サーバー操作が実行されるセキュリティ コンテキストが設定されます。 ただし、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 への接続要求を行うコマンドレットで使用できます。 接続要求を行うコマンドレットには、Invoke-ASCmd、Backup-ASDatabase、Restore-ASDatabase などがあります。 これらのコマンドレットでは、次の条件が満たされていると仮定して、-Credential パラメーターを使用できます。

  1. サーバーは HTTP アクセス用に構成されています。つまり、IIS は接続を処理し、ユーザー名とパスワードを読み取り、Analysis Services に接続するときにそのユーザー ID を偽装します。 詳細については、「 インターネット インフォメーション サービス (IIS) 8.0 で Analysis Services への HTTP アクセスを構成する」を参照してください。

  2. Analysis Services HTTP アクセス用に作成された IIS 仮想ディレクトリは、基本認証用に構成されています。

  3. 資格情報オブジェクトによって提供されるユーザー名とパスワードは、Windows ユーザー ID に解決されます。 Analysis Services では、この ID が現在のユーザーとして使用されます。 ユーザーが Windows ユーザーでない場合、または要求された操作を実行するための十分なアクセス許可がない場合、要求は失敗します。

資格情報オブジェクトを作成するには、Get-Credential コマンドレットを使用してオペレーターから資格情報を収集します。 その後、Analysis Services に接続するコマンドで資格情報オブジェクトを使用できます。 次の例は、1 つの方法を示しています。 この例では、HTTP アクセス用に構成されたローカル インスタンス (SQLSERVER:\SQLAS\HTTP_DS) への接続です。

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

基本認証を使用する場合は、暗号化された接続経由でユーザー名とパスワードが送信されるように、常に SSL で HTTPS を使用する必要があります。 詳細については、「 IIS 7.0 での Secure Sockets Layer の構成 」および「 基本認証の構成 (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 コマンド プロンプトから実行できます。 SQL Server Management Studio からの Analysis Services PowerShell の実行はサポートされていません。

このセクションでは、Analysis Services PowerShell を使用するための一般的なタスクについて説明します。

Analysis Services プロバイダーおよびコマンドレットをロードする

Analysis Services プロバイダーは、SQLPS モジュールをインポートするときに使用できる SQL Server ルート プロバイダーの拡張機能です。 Analysis Services コマンドレットは同時に読み込まれます。プロバイダーなしで使用する場合は、それらを個別に読み込むこともできます。

  • Import-module コマンドレットを実行して、Analysis Services PowerShell のすべての機能を含む SQLPS を読み込みます。 モジュールをインポートできない場合は、モジュールの読み込みのために実行ポリシーを一時的に無制限に変更できます。 詳細については、「 SQLPS モジュールのインポート」を参照してください。

    Import-Module "sqlps"  
    

    または、 import-module "sqlps" -disablenamechecking を使用して、未承認の動詞名に関する警告を抑制します。

  • Analysis Services プロバイダーまたは Invoke-ASCmd コマンドレットを使用せずにタスク固有の Analysis Services コマンドレットのみを読み込むには、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 を名前付きインスタンスとしてインストールした場合、またはカスタム ポートを使用している場合、ポート番号は異なります。 詳細については、「 Analysis Services アクセスを許可するように Windows ファイアウォールを構成する」を参照してください。

  3. リモート サーバーで、リモート プロシージャ コール (RPC) サービス、TCP/IP NetBIOS ヘルパー サービス、Windows Management Instrumentation (WMI) サービス、Windows リモート管理 (WS-Management) サービスの各サービスが開始されていることを確認します。

  4. リモート サーバーで、グループ ポリシー オブジェクト エディター スナップイン (gpedit.msc) を起動します。

  5. [コンピューターの構成] を開き、[管理用テンプレート] を開き、[ネットワーク] を開き、[ネットワーク接続] を開き、[Windows ファイアウォール] を開き、[ドメイン プロファイル] を開きます。

  6. [Windows ファイアウォール: 受信リモート管理の例外を許可する] をダブルクリックし、[有効] を選択し、[OK] をクリックします

  7. [Windows ファイアウォール: 受信ファイルとプリンター共有の例外を許可する] をダブルクリックし、[有効] を選択し、[OK] をクリックします

  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 オブジェクト階層のナビゲーションをサポートし、コマンドを実行するためのコンテキストを設定します。 プロバイダーは、SQLPS モジュールで使用できる SQLSERVER ルート プロバイダーの拡張機能です。 SQLPS モジュールを読み込んだ後、パスを移動できます。

ローカル インスタンスまたはリモート インスタンスに接続できますが、一部のコマンドレットはローカル インスタンス (つまり、マージ パーティション) でのみ実行されます。 HTTP アクセス用に構成した Analysis Services サーバーには、ネイティブ接続または HTTP 接続を使用できます。 次の図は、ネイティブ接続と HTTP 接続のナビゲーション パスを示しています。 次の図は、ネイティブ接続と HTTP 接続のナビゲーション パスを示しています。

Analysis Services へのネイティブ接続

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  

アセンブリ、データベース、ロール、トレースのコレクションが表示されます。 cddirを引き続き使用すると、各コレクションの内容を表示できます。

Analysis Services への HTTP 接続

Analysis Services への HTTP 接続)

HTTP 接続は、「インターネット インフォメーション サービス (IIS) 8.0 で Analysis Services への HTTP アクセスを構成する」の手順を使用して HTTP アクセス用にサーバーを構成した場合に便利です。

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 インスタンスに対する管理アクセス許可があることを確認してください。

サービスの管理

サービスが実行されていることを確認します。 Analysis Services (MSSQLServerOLAPService) やデータベース エンジンなど、SQL Server サービスの状態、名前、および表示名を返します。

Get-Service mssql*  

プロセス ID、ハンドル数、メモリ使用量など、プロセスに関するプロパティを返します。

Get-Process msmdsrv  

管理者シェルから次のコマンドレットを発行すると、サービスを再起動します。

Restart-Service mssqlserverolapservice  

Analysis Services PowerShell のヘルプを表示する

コマンドレットの可用性を確認し、サービス、プロセス、オブジェクトに関する詳細情報を取得するには、次のいずれかのコマンドレットを使用します。

  1. Get-Help は、例を含む Analysis Services コマンドレットの組み込みヘルプを返します。

    Get-Help invoke-ascmd -Examples  
    
  2. Get-Command は、11 個の 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 は、SQLAS プロバイダーを使用してサーバー インスタンスを指定するオブジェクトのプロパティまたはメソッド (サーバー オブジェクトの AMO メソッドなど) を返すためにも使用できます。

    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 を使用した表形式モデルの管理 (ブログ)
インターネット インフォメーション サービス (IIS) 8.0 で Analysis Services への HTTP アクセスを構成する