Azure Databricks への取り込みに使用する Microsoft SQL Server データベース ユーザーに付与する権限について説明します。
Databricks では、Databricks インジェストにのみ使用されるデータベース ユーザーを作成することをお勧めします。
データベース権限を付与する
このセクションの表では、データベースのバリエーションに応じて、データベース ユーザーが持つ必要がある権限を示します。 これらの特権は、変更データ キャプチャ (CDC) を使用するか変更の追跡を使用するかに関係なく必要です。 各特権を付与するコマンドも表に示されています。
Azure 以外のデータベース
| 必要な特権 | コマンドを実行する場所 | 付与するためのコマンド |
|---|---|---|
VIEW ANY DATABASE |
マスター データベース | マスター データベースで次の T-SQL コマンドを実行します。GRANT VIEW ANY DATABASE TO DATABASE_USER; |
マスター データベース内の次のシステム テーブルとビューへの読み取りアクセス。
|
マスター データベース | マスター データベースで次の T-SQL コマンドを実行します。GRANT SELECT ON object::sys.databases TO DATABASE_USER;GRANT SELECT ON object::sys.schemas TO DATABASE_USER;GRANT SELECT ON object::sys.tables TO DATABASE_USER;GRANT SELECT ON object::sys.columns TO DATABASE_USER;GRANT SELECT ON object::sys.key_constraints TO DATABASE_USER;GRANT SELECT ON object::sys.foreign_keys TO DATABASE_USER;GRANT SELECT ON object::sys.check_constraints TO DATABASE_USER;GRANT SELECT ON object::sys.default_constraints TO DATABASE_USER;GRANT SELECT ON object::sys.change_tracking_tables TO DATABASE_USER;GRANT SELECT ON object::sys.change_tracking_databases TO DATABASE_USER;GRANT SELECT ON object::sys.objects TO DATABASE_USER;GRANT SELECT ON object::sys.views TO DATABASE_USER;GRANT SELECT ON object::sys.triggers TO DATABASE_USER; |
マスター データベース内の次のシステム ストアド プロシージャに対してアクセス許可を実行します。
|
マスター データベース | 取り込むデータベースで次の T-SQL コマンドを実行します。GRANT EXECUTE ON object::sp_tables TO DATABASE_USER;GRANT EXECUTE ON object::sp_columns_100 TO DATABASE_USER;GRANT EXECUTE ON object::sp_pkeys TO DATABASE_USER;GRANT EXECUTE ON object::sp_statistics_100 TO DATABASE_USER; |
VIEW DATABASE STATE |
取り込むデータベース | 取り込むデータベースで次の T-SQL コマンドを実行します。USE DATABASE_NAME;GRANT VIEW DATABASE STATE TO DATABASE_USER;SQL Server 2022 以降では、より狭いスコープの VIEW DATABASE PERFORMANCE STATE アクセス許可を代わりに使用できます。USE DATABASE_NAME;GRANT VIEW DATABASE PERFORMANCE STATE TO DATABASE_USER; |
取り込むスキーマとテーブルに対する SELECT。 |
取り込むデータベース | 取り込むスキーマとテーブルごとに、次の T-SQL コマンドを実行します。GRANT SELECT ON schema::SCHEMA_NAME TO DATABASE_USER;GRANT SELECT ON object::TABLE_NAME TO DATABASE_USER; |
取り込むデータベース内の次のシステム テーブルとビューに対する SELECT 特権:
|
取り込むデータベース | 取り込むデータベースで次の T-SQL コマンドを実行します。USE DATABASE_NAME;GRANT SELECT ON object::sys.indexes TO DATABASE_USER;GRANT SELECT ON object::sys.index_columns TO DATABASE_USER;GRANT SELECT ON object::sys.columns TO DATABASE_USER;GRANT SELECT ON object::sys.tables TO DATABASE_USER;GRANT SELECT ON object::sys.fulltext_index_columns TO DATABASE_USER;GRANT SELECT ON object::sys.fulltext_indexes TO DATABASE_USER; |
Azure SQL Database
| 特権 | コマンドを実行する場所 | コマンド |
|---|---|---|
ユーザーがマスターにアクセスできるように、master データベースの次のサーバー ロールのメンバーシップ。
|
マスター データベース | マスター データベースで次の T-SQL コマンドを実行します。ALTER ROLE ##MS_DatabaseConnector## ADD MEMBER DATABASE_USER; |
取り込むデータベース内の次のシステム テーブルとビューに対する読み取りアクセス権:
|
取り込むデータベース | 取り込むデータベースで次の T-SQL コマンドを実行します。GRANT SELECT ON object::sys.schemas TO DATABASE_USER;GRANT SELECT ON object::sys.tables TO DATABASE_USER;GRANT SELECT ON object::sys.columns TO DATABASE_USER;GRANT SELECT ON object::sys.key_constraints TO DATABASE_USER;GRANT SELECT ON object::sys.foreign_keys TO DATABASE_USER;GRANT SELECT ON object::sys.check_constraints TO DATABASE_USER;GRANT SELECT ON object::sys.default_constraints TO DATABASE_USER;GRANT SELECT ON object::sys.change_tracking_tables TO DATABASE_USER;GRANT SELECT ON object::sys.objects TO DATABASE_USER;GRANT SELECT ON object::sys.triggers TO DATABASE_USER;GRANT SELECT ON object::sys.indexes TO DATABASE_USER;GRANT SELECT ON object::sys.index_columns TO DATABASE_USER;GRANT SELECT ON object::sys.fulltext_index_columns TO DATABASE_USER;GRANT SELECT ON object::sys.fulltext_indexes TO DATABASE_USER;GRANT SELECT ON schema::SCHEMA_NAME TO DATABASE_USER;GRANT SELECT ON object::TABLE_NAME TO DATABASE_USER; |
VIEW DATABASE STATE |
取り込むデータベース | 取り込むデータベースで次の T-SQL コマンドを実行します。GRANT VIEW DATABASE STATE TO DATABASE_USER;SQL Server 2022 以降では、より狭いスコープの VIEW DATABASE PERFORMANCE STATE アクセス許可を代わりに使用できます。GRANT VIEW DATABASE PERFORMANCE STATE TO DATABASE_USER; |
Azure SQL Managed Instance
| 特権 | コマンドを実行する場所 | コマンド |
|---|---|---|
取り込むデータベース内の次のシステム テーブルとビューに対する読み取りアクセス権:
|
取り込むデータベース | 取り込むデータベースで次の T-SQL コマンドを実行します。GRANT SELECT ON object::sys.schemas TO DATABASE_USER;GRANT SELECT ON object::sys.tables TO DATABASE_USER;GRANT SELECT ON object::sys.columns TO DATABASE_USER;GRANT SELECT ON object::sys.key_constraints TO DATABASE_USER;GRANT SELECT ON object::sys.foreign_keys TO DATABASE_USER;GRANT SELECT ON object::sys.check_constraints TO DATABASE_USER;GRANT SELECT ON object::sys.default_constraints TO DATABASE_USER;GRANT SELECT ON object::sys.change_tracking_tables TO DATABASE_USER;GRANT SELECT ON object::sys.objects TO DATABASE_USER;GRANT SELECT ON object::sys.triggers TO DATABASE_USER;GRANT SELECT ON object::sys.indexes TO DATABASE_USER;GRANT SELECT ON object::sys.index_columns TO DATABASE_USER;GRANT SELECT ON object::sys.fulltext_index_columns TO DATABASE_USER;GRANT SELECT ON object::sys.fulltext_indexes TO DATABASE_USER;GRANT SELECT ON schema::SCHEMA_NAME TO DATABASE_USER;GRANT SELECT ON object::TABLE_NAME TO DATABASE_USER; |
データベースへのアクセスの表示と読み取り:
|
マスター データベース | マスター データベースで次の T-SQL コマンドを実行します。GRANT VIEW ANY DATABASE TO DATABASE_USER;GRANT SELECT ON sys.databases TO DATABASE_USER;GRANT SELECT ON object::sys.change_tracking_databases TO DATABASE_USER; |
次のシステム ストアド プロシージャに対してアクセス許可を実行します。
|
マスター データベース | マスター データベースで次の T-SQL コマンドを実行します。GRANT EXECUTE ON object::sp_tables TO DATABASE_USER;GRANT EXECUTE ON object::sp_columns_100 TO DATABASE_USER;GRANT EXECUTE ON object::sp_pkeys TO DATABASE_USER;GRANT EXECUTE ON object::sp_statistics_100 TO DATABASE_USER; |
VIEW DATABASE STATE |
取り込むデータベース | 取り込むデータベースで次の T-SQL コマンドを実行します。USE DATABASE_NAME;GRANT VIEW DATABASE STATE TO DATABASE_USER;SQL Server 2022 以降では、より狭いスコープの VIEW DATABASE PERFORMANCE STATE アクセス許可を代わりに使用できます。USE DATABASE_NAME;GRANT VIEW DATABASE PERFORMANCE STATE TO DATABASE_USER; |
Amazon RDS for SQL Server
amazon RDS for SQL Serverでは、マスターデータベースの許可は必要ありません。 SQL Serverログインは、public ロールを使用して、マスターで必要なシステム ビューとストアド プロシージャへのアクセスを自動的に受け取ります。 Amazon RDS の master データベースにユーザーを作成することはできません。
| 必要な特権 | コマンドを実行する場所 | 付与するためのコマンド |
|---|---|---|
SELECT 取り込み対象のデータベース内の次のシステム ビューに対する特権:
|
取り込むデータベース | 取り込むデータベースで次の T-SQL コマンドを実行します。USE DATABASE_NAME;GRANT SELECT ON object::sys.indexes TO DATABASE_USER;GRANT SELECT ON object::sys.index_columns TO DATABASE_USER;GRANT SELECT ON object::sys.columns TO DATABASE_USER;GRANT SELECT ON object::sys.tables TO DATABASE_USER;GRANT SELECT ON object::sys.fulltext_index_columns TO DATABASE_USER;GRANT SELECT ON object::sys.fulltext_indexes TO DATABASE_USER; |
取り込むスキーマとテーブルに対する SELECT。 |
取り込むデータベース | 取り込むスキーマまたはテーブルごとに、次の T-SQL コマンドを実行します。GRANT SELECT ON SCHEMA::SCHEMA_NAME TO DATABASE_USER;-- Or for individual tables:GRANT SELECT ON object::TABLE_NAME TO DATABASE_USER; |
変更データ キャプチャ (CDC) の特権の要件
CDC が有効になっている場合は、DDL サポート オブジェクトに対して追加の特権が必要です。 ユーティリティ オブジェクト スクリプトを使用したインジェストのための SQL Server の準備を参照してください。
Note
Amazon RDS での CDC セットアップの場合、ユーティリティセットアップスクリプトを実行するユーザーは RDS マスターユーザーであるか、マスターユーザーがEXECUTEにmsdb.dbo.rds_cdc_enable_dbを付与する必要があります。 このアクセス許可を付与する前に、まず msdb でユーザーを作成する必要があります。
USE msdb;
CREATE USER SETUP_USER FOR LOGIN SETUP_USER;
GRANT EXECUTE ON dbo.rds_cdc_enable_db TO SETUP_USER;
GO
この追加のアクセス許可は、変更追跡のセットアップには必要ありません。
変更追跡権限要件
変更の追跡が有効になっている場合は、DDL サポート オブジェクトに対して追加の特権が必要です。 ユーティリティ オブジェクト スクリプトを使用したインジェストのための SQL Server の準備を参照してください。