SSMS でのロールの作成と管理
適用対象: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
この記事では、SQL Server Management Studio (SSMS) を使用してロールを作成し、ロールのアクセス許可を定義し、デプロイされた表形式モデルまたはPower BI Premiumセマンティック モデルのユーザーを追加する方法について説明します。 Visual Studio を使用して表形式モデル プロジェクトのロールを作成および管理する方法については、「 Visual Studio でのロールの作成と管理」を参照してください。
SSMS を使用する
新しいロールを作成するには
SQL Server Management Studioで、新しいロールを作成する表形式モデル データベースを展開し、[ロール] を右クリックし、[新しいロール] をクリックします。
[ロールの作成] ダイアログ ボックスの [ページの選択] ウィンドウで [全般]をクリックします。
全般設定のウィンドウの [名前] フィールドにロールの名前を入力します。
メンバーの種類 (Finance Manager や人事スペシャリストなど) を明確に識別する名前を使用し、名前にコンマが含まれていないことを確認します。 既定では、既定ロールの名前に番号が付き、新しいロールを作成するたびにその番号が増加します。
[このロールにデータベースの権限を設定します]で、次の権限オプションのいずれかを選択します。
権限 説明 フル コントロール (管理者) メンバーは、モデル スキーマを変更したり、すべてのデータを表示したりできます。 データベースの処理 メンバーは、処理およびすべて処理の各操作を実行できます。 モデル スキーマを変更することはできませんし、データを表示することもできません。 読み取り メンバーは、データを表示できますが (行フィルターに従って)、モデル スキーマを変更することはできません。 [ロールの作成] ダイアログ ボックスの [ページの選択] ウィンドウで [メンバーシップ]をクリックします。
メンバーシップ設定ウィンドウで [ 追加] をクリックし、[ ユーザーまたはグループの選択 ] ダイアログ ボックスで、メンバーとして追加するユーザーまたはグループを追加します。
作成するロールに読み取りアクセス許可がある場合は、DAX 数式を使用して任意のテーブルの行フィルターを追加できます。 行フィルターを追加するには、[ ロールのプロパティ - <ロール名> ] ダイアログ ボックスの [ ページの選択] で、[ 行フィルター] をクリックします。
行フィルター ウィンドウでテーブルを選択し、[DAX フィルター] フィールドをクリックし、[DAX フィルター - <テーブル名>] フィールドに DAX 数式を入力します。
注意
DAX フィルター - <テーブル名> フィールドには、オートコンプリート クエリ エディターまたは関数の挿入機能が含まれていません。
[ OK] を クリックしてロールを保存します。
ロールをコピーするには
- SQL Server Management Studioで、コピーするロールを含む表形式モデル データベースを展開し、[ロール] を展開してから、ロールを右クリックして、[複製] をクリックします。
ロールを編集するには
SQL Server Management Studioで、編集するロールを含む表形式モデル データベースを展開し、[ロール] を展開してから、ロールを右クリックし、[プロパティ] をクリックします。
[ ロールのプロパティ<ロール名> ] ダイアログ ボックスでは、アクセス許可の変更、メンバーの追加または削除、行フィルターの追加/編集を行うことができます。
ロールを削除するには
- SQL Server Management Studioで、削除するロールを含む表形式モデル データベースを展開し、[ロール] を展開してから、ロールを右クリックして、[削除] をクリックします。
スクリプト
デプロイされたモデルとセマンティック モデルのロールは、 表形式モデル スクリプト言語 (TMSL) を使用して Roles オブジェクトを作成または変更することでスクリプト化できます。 TMSL スクリプトは、SSMS で、または Invoke-ASCmd PowerShell コマンドレットを使用して実行できます。
データベース オブジェクト>>スクリプト スクリプト データベースをCREATE または REPLACE To>New クエリ エディター Windowとして>右クリックします。 ロールは、次のように roles オブジェクトで定義されます。
"roles": [
{
"name": "Sales Manager",
"modelPermission": "read"
},
{
"name": "Sales Analyst US",
"modelPermission": "read",
"tablePermissions": [
{
"name": "DimGeography",
"filterExpression": "DimGeography[CountryRegionCode] = \"US\" "
}
]
}
],