Compartilhar via


sp_control_dbmasterkey_password (Transact-SQL)

Adiciona ou descarta uma credencial que contém a senha necessária para abrir uma chave mestra de banco de dados.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

sp_control_dbmasterkey_password @db_name = 'database_name' 
        , @password = 'master_key_password' 
        , @action = { 'add' | 'drop' }

Argumentos

  • @db_name = N'database_name'
    Especifica o nome do banco de dados associado a essa credencial. Não pode ser um banco de dados do sistema. database_name é nvarchar.

  • @password = N'password'
    Especifica a senha da chave mestra. password é nvarchar.

  • @action = N'add'
    Especifica que uma credencial para o banco de dados especificado será adicionada ao armazenamento de credenciais. A credencial conterá a senha da chave mestra de banco de dados. O valor passado para @action é nvarchar.

  • @action =N'drop'
    Especifica que uma credencial para o banco de dados especificado será descartada do armazenamento de credenciais. O valor passado para @action é nvarchar.

Comentários

Quando o SQL Server precisa de uma chave mestra de banco de dados para descriptografar ou criptografar uma chave, o SQL Server tenta descriptografar a chave mestra de serviço da instância. Se a descriptografia falhar, o SQL Server pesquisará credenciais de chave mestra no repositório de credenciais que tenham o mesmo GUID de família que o banco de dados para o qual precisa da chave mestra. Depois, o SQL Server tentará descriptografar a chave mestra de banco de dados com cada credencial correspondente até que a descriptografia tenha êxito ou não haja mais credenciais.

Observação sobre cuidadosCuidado

Não habilite a descriptografia de failover de um banco de dados que deva permanecer inacessível o sa e outros principais de servidor altamente privilegiados. É possível configurar um banco de dados de forma que sua hierarquia fundamental não possa ser descriptografada pela chave mestra de serviço. Essa opção tem suporte como uma defesa para bancos de dados contendo informações criptografadas que não devem estar acessíveis ao sa ou outros principais de servidor altamente privilegiados. A criação de uma credencial de chave mestra para esse banco de dados remove a defesa, permitindo que o sa e outros principais de servidor altamente privilegiados descriptografem o banco de dados.

As credenciais criadas com o uso de sp_control_dbmasterkey_password são visíveis na exibição do catálogo sys.master_key_passwords. Os nomes das credenciais que são criadas para chaves mestras de banco de dados têm o seguinte formato: ##DBMKEY_<database_family_guid>_<random_password_guid>##. A senha é armazenada como o segredo de credencial. Para cada senha adicionada ao repositório de credenciais há uma linha em sys.credentials.

Não é possível usar sp_control_dbmasterkey_password ao criar uma credencial para os seguintes bancos de dados do sistema: mestre, modelo, msdbou tempdb.

sp_control_dbmasterkey_password não verifica se a senha pode abrir a chave mestra 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á.

ObservaçãoObservação

Dois bancos de dados de instâncias de servidor diferentes podem compartilhar o mesmo GUID de família. Se isso acontecer, os bancos de dados compartilharão os mesmos registros de chave mestra no armazenamento de credenciais.

Os parâmetros passados a sp_control_dbmasterkey_password não são exibidos em rastreamentos.

ObservaçãoObservação

Quando você estiver usando a credencial que foi adicionada com o uso de sp_control_dbmasterkey_password para abrir a chave mestra do banco de dados, essa chave será criptografada novamente pela chave mestra de serviço. Se o banco de dados estiver no modo somente leitura, a operação de nova criptografia falhará e a chave mestra de banco de dados permanecerá não criptografada. Para o acesso subsequente à chave mestra de banco de dados, 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.

Permissões

Requer a permissão CONTROL no banco de dados.

Exemplos

A. Criando uma credencial para a chave mestra AdventureWorks2008R2

O exemplo a seguir cria uma credencial para a chave mestra de banco de dados AdventureWorks2008R2 e salva a senha de chave mestra como 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 caracteres são convertidas com o operador de conversão N.

EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks2008R2', 
    @password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'add';
GO

B. Descartando uma credencial para uma chave mestra de banco de dados

O exemplo a seguir remove a credencial criada no exemplo A. Observe que todos os parâmetros são necessários, inclusive a senha.

EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks2008R2', 
    @password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'drop';
GO