SSMS での DirectQuery モードの有効化
適用対象:
SQL Server Analysis Services Azure Analysis Services
Power BI Premium
既にデプロイされている表形式モデルのデータ アクセス プロパティを変更して、DirectQuery モードを有効にできます。このモードでは、キャッシュされたメモリ内に存在するデータではなく、バックエンド リレーショナル データ ソースに対してクエリが実行されます。
重要
データ ストレージ モードを切り替える場合は、SQL Server Management Studio (SSMS) ではなく、Visual Studio で表形式モデル デザイナーを使用する必要があります。 を使用Visual Studioモデル モードを変更し、その後サーバーへのデプロイを実行すると、モデルとデータベースの同期が続きます。さらに、モデルのストレージ モードを変更すると、発生した検証エラーを確認できます。 この記事SSMSを使用する場合、検証エラーは報告されません。
要件
表形式モデルで DirectQuery モードを使用するには、次の複数の手順を実行します。
モデルに DirectQuery モードで検証エラーが発生する可能性がある機能が存在しない場合は、モデルのデータ ストレージ モードをメモリ内から DirectQuery に変更します。
機能の制限事項の一覧については、「 DirectQuery モード」を参照してください。
デプロイされたデータベースがバックエンド外部データベースからデータを取得するために使用する接続文字列と資格情報を確認します。 接続は 1 つだけであること、また、設定がクエリの実行に適していることを確認します。
DirectQuery 用に特化して設計されていない表形式のデータベースには、複数の接続があることがあります。DirectQuery モードで必須となるため、接続を 1 つにする必要があります。
データの処理に最初に使用された資格情報が、データのクエリに使用されます。 DirectQuery 構成の一環として、アカウントを確認し、専用の操作用に別の資格情報を使用する場合はアカウントを変更します。
DirectQuery モードは、Analysis Services が信頼する委任の唯一のシナリオです。 ソリューションが委任を呼んで、ユーザー固有のクエリの結果を取得する場合は、バックエンド データベースへの接続に使用されているアカウントが、要求によりユーザー ID を委任する必要があります。また、ユーザー ID は、バックエンド データベースを読み取るアクセス許可を所有している必要があります。
最後の手順として、DirectQuery モードがクエリを実行して動作することを確認します。
DirectQuery モードに切り替える
このオブジェクト エクスプローラー、データベース PropertiesModelDefault>>>モードを右クリックします。
モードを [ DirectQuery] に設定します。
有効な値 説明 DirectQuery クエリは、モデルに定義されているデータ ソース接続を使用して、バックエンド リレーショナル データベースに対して実行されます。
モデルへのクエリは、ネイティブ データベース クエリに変換され、データ ソースにリダイレクトします。
モデル セットを DirectQuery モードで処理すると、メタデータのみがコンパイルされ、デプロイされます。 データ自体はモデルの外部にあり、稼動しているデータ ソースのデータベース ファイルに存在します。[インポート] クエリは、MDX または DAX の表形式データベースに対して実行されます。
モデル セットをインポート モードに処理すると、バックエンド データ ソースからデータが取得され、ディスクに格納されます。 データベースがロードされると、非常に高速のテーブル スキャンやクエリが実行され、データ全体がメモリにコピーされます。
これは表形式モデルの既定のモードで、特定の (非リレーショナル) データ ソースに適応する唯一のモードです。デュアル Import と DirectQuery の両方を許可します。 このモードは、このモードまたはAzure Analysis ServicesではPower BI Premium。
接続プロパティを確認する
データ ソース接続のセットアップ方法に応じて、DirectQuery を切り替えると、接続のセキュリティ コンテキストを変更することができます。 データ アクセス モードを変更するときに、偽装や接続文字列プロパティをチェックして、バックエンド データベースに接続しているログインが有効であることを確認してください。
「 Configure Analysis Services for Kerberos constrained delegation 」の「 信頼された委任用に Analysis Services を構成する 」セクションを確認します。こちらでは、DirectQuery シナリオのユーザー ID の委任について、その経緯を説明しています。
オブジェクト エクスプローラーで、 [接続] を展開し、[接続] をダブルクリックして、該当するプロパティを表示します。
DirectQuery モデルの場合は、データベースに定義されている接続は 1つのみです、また、データ ソースはリレーショナルで、サポートされているデータベース型にする必要があります。 サポート されているデータ ソースに関するページを参照してください。
[接続文字列 ] がサーバー、データベース名、および DirectQuery 操作で使用する認証方法を指定します。 SQL Server 認証を使用している場合は、こちらでデータベース ログインを指定できます。
[権限借用情報 ] は、Windows の認証に使用されます。 DirectQuery モードの表形式モデルで有効なオプションは次のとおりです。
サービス アカウントを使用します。 Analysis Services サービス アカウントがリレーショナル データベースの読み取りアクセス許可を所有している場合、このオプションを選べます。
特定のユーザー名とパスワードを使用します。 リレーショナル データベースの読み取りアクセス許可を持つ Windows のユーザー アカウントを指定します。
これらの資格情報は、リレーショナル データ ストアに対するクエリの応答にのみ使用されます。これらはハイブリッド モデルのキャッシュの処理に使用される資格情報と同じではありません。
モデルをメモリ内でのみ使用する場合は、権限借用を使用できません。 モデルで DirectQuery モードを使用していない限り、 ImpersonateCurrentUser設定は無効です。
DirectQuery アクセスの検証
Management Studio で、SQL Server のリレーショナル データベースに接続しながら、SQL Server Profiler または xEvents を使用して、トレースを開始します。
Oracle または Teradata を使用している場合は、これらのデータベース プラットフォームのトレース ツールを使用します。
Management Studio で、
select <some measure> on 0 from model.など、シンプルな MDX クエリを入力して、実行します。トレースすると、リレーショナル データベースでクエリが実行された証拠が表示されるはずです。