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

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

Databricks では、Databricks インジェストにのみ使用されるデータベース ユーザーを作成することをお勧めします。

データベース権限を付与する

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

Azure 以外のデータベース

必要な特権 コマンドを実行する場所 付与するためのコマンド
VIEW ANY DATABASE マスター データベース マスター データベースで次の T-SQL コマンドを実行します。
GRANT VIEW ANY DATABASE TO DATABASE_USER;
マスター データベース内の次のシステム テーブルとビューへの読み取りアクセス。
  • 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
マスター データベース マスター データベースで次の 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;
マスター データベース内の次のシステム ストアド プロシージャに対してアクセス許可を実行します。
  • sp_tables
  • sp_columns_100
  • sp_pkeys
  • sp_statistics_100
マスター データベース 取り込むデータベースで次の 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 特権:
  • sys.indexes
  • sys.index_columns
  • sys.columns
  • sys.tables
  • sys.fulltext_index_columns
  • sys.fulltext_indexes
取り込むデータベース 取り込むデータベースで次の 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 データベースの次のサーバー ロールのメンバーシップ。
  • ##MS_DatabaseConnector##
マスター データベース マスター データベースで次の T-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 コマンドを実行します。
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

特権 コマンドを実行する場所 コマンド
取り込むデータベース内の次のシステム テーブルとビューに対する読み取りアクセス権:
  • 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 コマンドを実行します。
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
マスター データベース マスター データベースで次の 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;
次のシステム ストアド プロシージャに対してアクセス許可を実行します。
  • sp_tables
  • sp_columns_100
  • sp_pkeys
  • sp_statistics_100
マスター データベース マスター データベースで次の 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 取り込み対象のデータベース内の次のシステム ビューに対する特権:
  • sys.indexes
  • sys.index_columns
  • sys.columns
  • sys.tables
  • sys.fulltext_index_columns
  • sys.fulltext_indexes
取り込むデータベース 取り込むデータベースで次の 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 マスターユーザーであるか、マスターユーザーがEXECUTEmsdb.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 の準備を参照してください。