Requisitos de usuário do banco de dados do Microsoft SQL Server

Saiba quais privilégios conceder ao usuário do banco de dados do Microsoft SQL Server que você planeja usar para ingerir no Azure Databricks.

O Databricks recomenda que você crie um usuário de banco de dados usado exclusivamente para ingestão do Databricks.

Conceder privilégios de banco de dados

As tabelas nesta seção listam os privilégios que o usuário do banco de dados deve ter, dependendo da variação do banco de dados. Esses privilégios são necessários se você usar a CDC (captura de dados de alteração) ou o controle de alterações. As tabelas também mostram os comandos para conceder cada privilégio.

Bancos de dados que não são do Azure

Privilégios necessários Onde executar os comandos Comandos a serem concedidos
VIEW ANY DATABASE Banco de dados mestre Execute o seguinte comando T-SQL no banco de dados mestre:
GRANT VIEW ANY DATABASE TO DATABASE_USER;
Leia o acesso às seguintes tabelas e exibições do sistema no banco de dados mestre:
  • 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
Banco de dados mestre Execute os seguintes comandos T-SQL no banco de dados mestre:
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;
Execute permissões nos seguintes procedimentos armazenados do sistema no banco de dados mestre:
  • sp_tables
  • sp_columns_100
  • sp_pkeys
  • sp_statistics_100
Banco de dados mestre Execute os seguintes comandos T-SQL no banco de dados que você deseja ingerir:
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 Banco de dados que você deseja processar Execute o seguinte comando T-SQL no banco de dados que você deseja ingerir:
USE DATABASE_NAME;
GRANT VIEW DATABASE STATE TO DATABASE_USER;
No SQL Server 2022 e posterior, você pode usar a permissão de VIEW DATABASE PERFORMANCE STATE com escopo mais estreito em vez disso:
USE DATABASE_NAME;
GRANT VIEW DATABASE PERFORMANCE STATE TO DATABASE_USER;
SELECT nos esquemas e tabelas que você deseja ingerir. Banco de dados que você deseja processar Execute os seguintes comandos T-SQL para cada esquema e tabela que você deseja ingerir:
GRANT SELECT ON schema::SCHEMA_NAME TO DATABASE_USER;
GRANT SELECT ON object::TABLE_NAME TO DATABASE_USER;
SELECT privilégios nas tabelas e exibições do sistema a seguir no banco de dados que você quer ingerir:
  • sys.indexes
  • sys.index_columns
  • sys.columns
  • sys.tables
  • sys.fulltext_index_columns
  • sys.fulltext_indexes
Banco de dados que você deseja processar Execute os seguintes comandos T-SQL no banco de dados que você deseja ingerir:
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;

Banco de Dados SQL do Azure

Privilégios Onde executar os comandos Comandos
Associação ao seguinte papel de servidor no banco de dados mestre para que o usuário possa acessar o banco de dados mestre:
  • ##MS_DatabaseConnector##
Banco de dados mestre Execute o seguinte comando T-SQL no banco de dados mestre:
ALTER ROLE ##MS_DatabaseConnector## ADD MEMBER DATABASE_USER;
Acesso de leitura para as seguintes tabelas e exibições do sistema no banco de dados que você quer ingerir:
  • 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
Banco de dados que você deseja processar Execute os seguintes comandos T-SQL no banco de dados que você deseja ingerir:
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 Banco de dados que você deseja processar Execute o seguinte comando T-SQL no banco de dados que você deseja ingerir:
GRANT VIEW DATABASE STATE TO DATABASE_USER;
No SQL Server 2022 e posterior, você pode usar a permissão de VIEW DATABASE PERFORMANCE STATE com escopo mais estreito em vez disso:
GRANT VIEW DATABASE PERFORMANCE STATE TO DATABASE_USER;

Instância Gerenciada de SQL do Azure

Privilégios Onde executar os comandos Comandos
Acesso de leitura para as seguintes tabelas e exibições do sistema no banco de dados que você quer ingerir:
  • 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
Banco de dados que você deseja processar Execute os seguintes comandos T-SQL no banco de dados que você deseja ingerir:
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;
Exibir e ler o acesso aos bancos de dados:
  • VIEW ANY DATABASE
  • sys.databases
  • sys.change_tracking_databases
Banco de dados mestre Execute os seguintes comandos T-SQL no banco de dados mestre:
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;
Execute permissões nos seguintes procedimentos armazenados do sistema:
  • sp_tables
  • sp_columns_100
  • sp_pkeys
  • sp_statistics_100
Banco de dados mestre Execute os seguintes comandos T-SQL no banco de dados mestre:
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 Banco de dados que você deseja processar Execute o seguinte comando T-SQL no banco de dados que você deseja ingerir:
USE DATABASE_NAME;
GRANT VIEW DATABASE STATE TO DATABASE_USER;
No SQL Server 2022 e posterior, você pode usar a permissão de VIEW DATABASE PERFORMANCE STATE com escopo mais estreito em vez disso:
USE DATABASE_NAME;
GRANT VIEW DATABASE PERFORMANCE STATE TO DATABASE_USER;

Amazon RDS para SQL Server

No Amazon RDS para SQL Server, as concessões de banco de dados mestre não são necessárias. SQL Server logons recebem automaticamente acesso aos modos de exibição do sistema necessários e procedimentos armazenados no mestre por meio da função public. Você não pode criar usuários no master banco de dados no Amazon RDS.

Privilégios necessários Onde executar os comandos Comandos a serem concedidos
SELECT privilégios nas seguintes visões do sistema no banco de dados do qual você deseja ingerir dados:
  • sys.indexes
  • sys.index_columns
  • sys.columns
  • sys.tables
  • sys.fulltext_index_columns
  • sys.fulltext_indexes
Banco de dados que você deseja processar Execute os seguintes comandos T-SQL no banco de dados que você deseja ingerir:
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 nos esquemas e tabelas que você deseja ingerir. Banco de dados que você deseja processar Execute o seguinte comando T-SQL para cada esquema ou tabela que você deseja ingerir:
GRANT SELECT ON SCHEMA::SCHEMA_NAME TO DATABASE_USER;
-- Or for individual tables:
GRANT SELECT ON object::TABLE_NAME TO DATABASE_USER;

Requisitos de privilégio de captura de dados de alterações (CDA)

Se o CDC estiver habilitado, privilégios adicionais serão necessários nos objetos de suporte de DDL. Consulte Preparar o SQL Server para ingestão usando o script de objetos do utilitário.

Note

Para a configuração do CDC no Amazon RDS, o usuário que executa o script de configuração do utilitário deve ser o usuário mestre do RDS ou deve receber EXECUTE em msdb.dbo.rds_cdc_enable_db do usuário mestre. Primeiro, você deve criar o usuário em msdb antes de conceder esta permissão:

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

Essa permissão extra não é necessária para a instalação do controle de alterações.

Requisitos de privilégio de controle de alterações

Se o controle de alterações estiver habilitado, privilégios adicionais serão necessários nos objetos de suporte DDL. Consulte Preparar o SQL Server para ingestão usando o script de objetos do utilitário.