メインコンテンツまでスキップ

Microsoft SQL Server データベースのユーザー要件

Databricks への取り込みに使用する予定の Microsoft SQL Server データベース ユーザーに付与する権限について説明します。

Databricks では、Databricks 取り込みにのみ使用されるデータベース ユーザーを作成することをお勧めします。

データベース権限の付与

このセクションの表は、データベースのバリエーションに応じて、データベース・ユーザーが持つ必要がある権限をリストしています。これらの権限は、チェンジデータキャプチャ (CDC) と変更追跡のどちらを使用する場合でも必要です。 表には、各権限を付与するコマンドも示されています。

Azure 以外のデータベース

必要な権限

コマンドを実行する場所

付与するコマンド

VIEW ANY DATABASE

マスターデータベース

マスター データベースで次の T-SQL コマンドを実行します。

SQL
GRANT VIEW ANY DATABASE TO DATABASE_USER;

master データベース内の次のシステムテーブルとビューへの読み取りアクセス。

  • sys.databases
  • sys.schemas
  • sys.tables
  • sys.columns
  • sys.key_constraints
  • sys.foreign_keys
  • sys.check_constraints
  • sys.default_constraints
  • sys.change_tracking_tables
  • sys.change_tracking_databases
  • sys.objects
  • sys.views
  • sys.triggers

マスターデータベース

master データベースで次の T-SQL コマンドを実行します。

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;

master データベース内の次のシステムストアドプロシージャに対する実行権限:

  • sp_tables
  • sp_columns_100
  • sp_pkeys
  • sp_statistics_100

マスターデータベース

取り込むデータベースで次の T-SQL コマンドを実行します。

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 コマンドを実行します。

SQL
USE DATABASE_NAME;
GRANT VIEW DATABASE STATE TO DATABASE_USER;

SQL Server 2022以降では、より範囲の狭いVIEW DATABASE PERFORMANCE STATE権限を代わりに使用できます。

SQL
USE DATABASE_NAME;
GRANT VIEW DATABASE PERFORMANCE STATE TO DATABASE_USER;

SELECT 取り込むスキーマとテーブル。

取り込むデータベース

取り込むスキーマとテーブルごとに次の T-SQL コマンドを実行します。

SQL
GRANT SELECT ON schema::SCHEMA_NAME TO DATABASE_USER;
GRANT SELECT ON object::TABLE_NAME TO DATABASE_USER;

SELECT 取り込むデータベース内の次のシステムテーブルとビューに対する権限:

  • sys.indexes
  • sys.index_columns
  • sys.columns
  • sys.tables
  • sys.fulltext_index_columns
  • sys.fulltext_indexes

取り込むデータベース

取り込むデータベースで次の T-SQL コマンドを実行します。

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 データベース

権限

コマンドを実行する場所

コマンド

ユーザーがマスターにアクセスできるように、マスター データベース内の次のサーバー ロールのメンバーシップ:

  • ##MS_DatabaseConnector##

マスターデータベース

マスター データベースで次の T-SQL コマンドを実行します。

SQL
ALTER ROLE ##MS_DatabaseConnector## ADD MEMBER DATABASE_USER;

取り込むデータベース内の次のシステムテーブルとビューへの読み取りアクセス:

  • sys.schemas
  • sys.tables
  • sys.columns
  • sys.key_constraints
  • sys.foreign_keys
  • sys.check_constraints
  • sys.default_constraints
  • sys.change_tracking_tables
  • sys.objects
  • sys.triggers
  • sys.indexes
  • sys.index_columns
  • sys.fulltext_index_columns
  • sys.fulltext_indexes

取り込むデータベース

取り込むデータベースで次の T-SQL コマンドを実行します。

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 コマンドを実行します。

SQL
GRANT VIEW DATABASE STATE TO DATABASE_USER;

SQL Server 2022以降では、より範囲の狭いVIEW DATABASE PERFORMANCE STATE権限を代わりに使用できます。

SQL
GRANT VIEW DATABASE PERFORMANCE STATE TO DATABASE_USER;

Azure SQL Managed Instance

権限

コマンドを実行する場所

コマンド

取り込むデータベース内の次のシステムテーブルとビューへの読み取りアクセス:

  • sys.schemas
  • sys.tables
  • sys.columns
  • sys.key_constraints
  • sys.foreign_keys
  • sys.check_constraints
  • sys.default_constraints
  • sys.change_tracking_tables
  • sys.objects
  • sys.triggers
  • sys.indexes
  • sys.index_columns
  • sys.fulltext_index_columns
  • sys.fulltext_indexes

取り込むデータベース

取り込むデータベースで次の T-SQL コマンドを実行します。

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 ANY DATABASE
  • sys.databases
  • sys.change_tracking_databases

マスターデータベース

master データベースで次の T-SQL コマンドを実行します。

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;

次のシステムストアドプロシージャに対する実行権限:

  • sp_tables
  • sp_columns_100
  • sp_pkeys
  • sp_statistics_100

マスターデータベース

master データベースで次の T-SQL コマンドを実行します。

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 コマンドを実行します。

SQL
USE DATABASE_NAME;
GRANT VIEW DATABASE STATE TO DATABASE_USER;

SQL Server 2022以降では、より範囲の狭いVIEW DATABASE PERFORMANCE STATE権限を代わりに使用できます。

SQL
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 取り込みたいデータベース内の以下のシステムビューに対する権限が必要です。

  • sys.indexes
  • sys.index_columns
  • sys.columns
  • sys.tables
  • sys.fulltext_index_columns
  • sys.fulltext_indexes

取り込むデータベース

取り込むデータベースで次の T-SQL コマンドを実行します。

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 コマンドを実行します。

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 の取り込みを準備する」を参照してください。

注記

Amazon RDS で CDC をセットアップする場合、ユーティリティセットアップスクリプトを実行するユーザーは RDS マスターユーザーであるか、マスターユーザーによってmsdb.dbo.rds_cdc_enable_dbに対してEXECUTE権限が付与されている必要があります。この権限を付与する前に、まずmsdbでユーザーを作成する必要があります。

SQL
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 の取り込みを準備する」を参照してください。