Configuration requise pour l’utilisateur de base de données Microsoft SQL Server

Découvrez quels privilèges accorder à l’utilisateur de base de données Microsoft SQL Server que vous envisagez d’utiliser pour l’ingestion dans Azure Databricks.

Databricks recommande de créer un utilisateur de base de données qui est exclusivement utilisé pour l'ingestion par Databricks.

Accorder des privilèges de base de données

Les tables de cette section répertorient les privilèges dont l’utilisateur de base de données doit disposer, en fonction de la variation de la base de données. Ces privilèges sont requis, que vous utilisiez la capture de données modifiées (CDC) ou le suivi des modifications. Les tables affichent également les commandes pour accorder chaque privilège.

Bases de données non-Azure

Privilèges requis Où exécuter les commandes Commandes à accorder
VIEW ANY DATABASE Base de données master Exécutez la commande T-SQL suivante dans la base de données master :
GRANT VIEW ANY DATABASE TO DATABASE_USER;
Accès en lecture aux tables et vues système suivantes dans la base de données principale :
  • 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
Base de données master Exécutez les commandes T-SQL suivantes dans la base de données master :
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;
Exécutez des autorisations sur les procédures stockées système suivantes dans la base de données master :
  • sp_tables
  • sp_columns_100
  • sp_pkeys
  • sp_statistics_100
Base de données master Exécutez les commandes T-SQL suivantes dans la base de données que vous souhaitez ingérer :
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 Base de données que vous souhaitez ingérer Exécutez la commande T-SQL suivante sur la base de données que vous souhaitez ingérer :
USE DATABASE_NAME;
GRANT VIEW DATABASE STATE TO DATABASE_USER;
Dans SQL Server 2022 et versions ultérieures, vous pouvez utiliser l’autorisation VIEW DATABASE PERFORMANCE STATE plus étroite à la place :
USE DATABASE_NAME;
GRANT VIEW DATABASE PERFORMANCE STATE TO DATABASE_USER;
SELECT sur les schémas et les tables que vous souhaitez ingérer. Base de données que vous souhaitez ingérer Exécutez les commandes T-SQL suivantes pour chaque schéma et table que vous souhaitez ingérer :
GRANT SELECT ON schema::SCHEMA_NAME TO DATABASE_USER;
GRANT SELECT ON object::TABLE_NAME TO DATABASE_USER;
SELECT privilèges sur les tables et vues de système suivantes dans la base de données que vous souhaitez importer :
  • sys.indexes
  • sys.index_columns
  • sys.columns
  • sys.tables
  • sys.fulltext_index_columns
  • sys.fulltext_indexes
Base de données que vous souhaitez ingérer Exécutez les commandes T-SQL suivantes dans la base de données que vous souhaitez ingérer :
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

Privilèges Où exécuter les commandes Commandes
Appartenance au rôle serveur suivant dans la base de données master afin que l’utilisateur puisse accéder à master :
  • ##MS_DatabaseConnector##
Base de données master Exécutez la commande T-SQL suivante dans la base de données master :
ALTER ROLE ##MS_DatabaseConnector## ADD MEMBER DATABASE_USER;
Accès en lecture aux tables et vues système suivantes dans la base de données que vous souhaitez ingérer :
  • 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
Base de données que vous souhaitez ingérer Exécutez les commandes T-SQL suivantes sur la base de données que vous souhaitez ingérer :
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 Base de données que vous souhaitez ingérer Exécutez la commande T-SQL suivante sur la base de données que vous souhaitez ingérer :
GRANT VIEW DATABASE STATE TO DATABASE_USER;
Dans SQL Server 2022 et versions ultérieures, vous pouvez utiliser l’autorisation VIEW DATABASE PERFORMANCE STATE plus étroite à la place :
GRANT VIEW DATABASE PERFORMANCE STATE TO DATABASE_USER;

Azure SQL Managed Instance (Instance gérée Azure SQL)

Privilèges Où exécuter les commandes Commandes
Accès en lecture aux tables et vues système suivantes dans la base de données que vous souhaitez ingérer :
  • 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
Base de données que vous souhaitez ingérer Exécutez les commandes T-SQL suivantes sur la base de données que vous souhaitez ingérer :
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;
Afficher et lire l’accès aux bases de données :
  • VIEW ANY DATABASE
  • sys.databases
  • sys.change_tracking_databases
Base de données master Exécutez les commandes T-SQL suivantes sur la base de données master :
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;
Exécutez des autorisations sur les procédures stockées dans le système suivantes :
  • sp_tables
  • sp_columns_100
  • sp_pkeys
  • sp_statistics_100
Base de données master Exécutez les commandes T-SQL suivantes sur la base de données master :
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 Base de données que vous souhaitez ingérer Exécutez la commande T-SQL suivante sur la base de données que vous souhaitez ingérer :
USE DATABASE_NAME;
GRANT VIEW DATABASE STATE TO DATABASE_USER;
Dans SQL Server 2022 et versions ultérieures, vous pouvez utiliser l’autorisation VIEW DATABASE PERFORMANCE STATE plus étroite à la place :
USE DATABASE_NAME;
GRANT VIEW DATABASE PERFORMANCE STATE TO DATABASE_USER;

Amazon RDS pour SQL Server

Sur Amazon RDS pour SQL Server, les autorisations sur la base de données master ne sont pas nécessaires. Les connexions SQL Server reçoivent automatiquement l’accès aux vues système requises et aux procédures stockées dans master par le biais du rôle public. Vous ne pouvez pas créer d’utilisateurs dans la master base de données sur Amazon RDS.

Privilèges requis Où exécuter les commandes Commandes à accorder
SELECT privilèges sur les vues système suivantes dans la base de données que vous souhaitez ingérer :
  • sys.indexes
  • sys.index_columns
  • sys.columns
  • sys.tables
  • sys.fulltext_index_columns
  • sys.fulltext_indexes
Base de données que vous souhaitez ingérer Exécutez les commandes T-SQL suivantes dans la base de données que vous souhaitez ingérer :
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 sur les schémas et les tables que vous souhaitez ingérer. Base de données que vous souhaitez ingérer Exécutez la commande T-SQL suivante pour chaque schéma ou table que vous souhaitez ingérer :
GRANT SELECT ON SCHEMA::SCHEMA_NAME TO DATABASE_USER;
-- Or for individual tables:
GRANT SELECT ON object::TABLE_NAME TO DATABASE_USER;

Exigences relatives aux privilèges de capture des modifications de données (CDC)

Si CDC est activé, des privilèges supplémentaires sont requis sur les objets de support DDL. Consultez Préparer SQL Server pour l’ingestion à l’aide du script d’objets utilitaires.

Note

Pour la configuration de la capture des données modifiées (CDC) sur Amazon RDS, l’utilisateur qui exécute le script d’installation de l’utilitaire doit être l’utilisateur maître d’Amazon RDS, ou doit avoir reçu EXECUTE sur msdb.dbo.rds_cdc_enable_db de la part de l’utilisateur maître. Vous devez d’abord créer l’utilisateur dans msdb avant d’accorder cette autorisation :

USE msdb;
CREATE USER SETUP_USER FOR LOGIN SETUP_USER;
GRANT EXECUTE ON dbo.rds_cdc_enable_db TO SETUP_USER;
GO

Cette autorisation supplémentaire n’est pas nécessaire pour la configuration du suivi des modifications.

Exigences relatives au privilège de suivi des modifications

Si le suivi des modifications est activé, des privilèges supplémentaires sont requis sur les objets de prise en charge DDL. Consultez Préparer SQL Server pour l’ingestion à l’aide du script d’objets utilitaires.