Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Managed Instance
Adiciona ou descarta uma credencial que contém a senha necessária para abrir uma chave mestra de banco de dados (DMK).
Transact-SQL convenções de sintaxe
Sintaxe
sp_control_dbmasterkey_password @db_name = 'db_name'
, @password = 'password'
, @action = { N'add' | N'drop' }
Argumentos
Importante
Os argumentos para procedimentos armazenados estendidos devem ser inseridos na ordem específica, conforme descrito na seção de sintaxe. Se os parâmetros forem inseridos fora de ordem, ocorrerá uma mensagem de erro.
@db_name = N'db_name'
Especifica o nome do banco de dados associado a essa credencial. Não pode ser um banco de dados do sistema. @db_name é nvarchar.
@password = N'senha'
Especifica a senha do DMK. @password é nvarchar.
@action = { N'add' | N'drop' }
Especifica uma ação para uma credencial para o banco de dados especificado no repositório de credenciais. O valor passado para @action é nvarchar.
| Ação | Descrição |
|---|---|
add |
Especifica que uma credencial para o banco de dados especificado será adicionada ao repositório de credenciais. A credencial contém a senha do DMK. |
drop |
Especifica que uma credencial para o banco de dados especificado será descartada do repositório de credenciais. |
Comentários
Quando o SQL Server precisa de um DMK para descriptografar ou criptografar uma chave, o SQL Server tenta descriptografar o DMK com a chave mestra de serviço (SMK) da instância. Se a descriptografia falhar, o SQL Server procurará no repositório de credenciais credenciais que tenham o mesmo GUID da família que o banco de dados para o qual ele precisa da chave. Em seguida, o SQL Server tenta descriptografar o DMK com cada credencial correspondente até que a descriptografia seja bem-sucedida ou não haja mais credenciais.
Atenção
Não crie uma credencial de chave mestra para um banco de dados que deve estar inacessível para sa e outras entidades de servidor altamente privilegiadas. Você pode configurar um banco de dados para que sua hierarquia de chaves não possa ser descriptografada pelo SMK. Essa opção é suportada como uma defesa profunda para bancos de dados que contêm informações criptografadas que não devem ser acessíveis a sa ou outras entidades de servidor altamente privilegiadas. A criação de uma credencial para esse banco de dados remove essa defesa profunda, permitindo que sa e outras entidades de servidor altamente privilegiadas descriptografem o banco de dados.
As credenciais criadas usando sp_control_dbmasterkey_password são visíveis na exibição de catálogo sys.master_key_passwords. Os nomes das credenciais criadas para DMKs têm o seguinte formato: ##DBMKEY_<database_family_guid>_<random_password_guid>##. A senha é armazenada como o segredo de credencial. Cada senha adicionada ao repositório de credenciais tem uma linha correspondente em sys.credentials.
Não é possível usar sp_control_dbmasterkey_password para criar uma credencial para os seguintes bancos de dados do sistema: master, model, msdbou tempdb.
sp_control_dbmasterkey_password não verifica se a senha pode abrir o DMK do banco de dados especificado.
Se você especificar uma senha que já esteja armazenada em uma credencial para o banco de dados especificado, sp_control_dbmasterkey_password falhará.
Dois bancos de dados de instâncias de servidor diferentes podem compartilhar o mesmo GUID da família. Se isso ocorrer, os bancos de dados compartilham os mesmos registros DMK no armazenamento de credenciais.
Os parâmetros passados para sp_control_dbmasterkey_password não aparecem em rastreamentos.
Quando você estiver usando a credencial que foi adicionada usando sp_control_dbmasterkey_password para abrir o DMK, o DMK é criptografado novamente pelo SMK. Se o banco de dados estiver no modo somente leitura, a operação de recriptografia falhará e o DMK permanecerá não criptografado. Para acesso posterior ao DMK, você deve usar a instrução OPEN MASTER KEY e uma senha. Para evitar o uso de uma senha, crie a credencial antes de mover o banco de dados para o modo somente leitura.
Potencial problema de compatibilidade com versões anteriores
Atualmente, o procedimento armazenado não verifica se existe uma chave. Essa funcionalidade é permitida para compatibilidade com versões anteriores, mas exibe um aviso. Esse comportamento foi preterido. Em uma versão futura, a chave deve existir e a senha usada no procedimento armazenado sp_control_dbmasterkey_password deve ser a mesma senha que uma das senhas usadas para criptografar o DMK.
Permissões
Requer associação ao sysadmin função de servidor fixa ou permissão de execução diretamente neste procedimento armazenado.
Exemplos
Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que você pode baixar da home page Microsoft SQL Server Samples and Community Projects.
Um. Criar uma credencial para a chave mestra do AdventureWorks
O exemplo a seguir cria uma credencial para o AdventureWorks2025 DMK e salva a senha da chave mestra como o segredo na credencial. Como todos os parâmetros que são passados para sp_control_dbmasterkey_password devem ser do tipo de dados nvarchar, as cadeias de texto são convertidas com o operador de transmissão N.
EXECUTE sp_control_dbmasterkey_password
@db_name = N'AdventureWorks2022',
@password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4',
@action = N'add';
GO
B. Soltar uma credencial para uma chave mestra de banco de dados
O exemplo a seguir remove a credencial criada no exemplo A. Todos os parâmetros são necessários, incluindo a senha.
EXECUTE sp_control_dbmasterkey_password
@db_name = N'AdventureWorks2022',
@password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4',
@action = N'drop';
GO