Condividi tramite


sp_control_dbmasterkey_password (Transact-SQL)

Aggiunge o rimuove una credenziale contenente la password necessaria per aprire una chiave master del database.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

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

Argomenti

  • @db_name=N'database_name'
    Specifica il nome del database associato alla credenziale. Non è possibile specificare un database di sistema. database_name è di tipo nvarchar.
  • @password= N'password'
    Specifica la password della chiave master. password è di tipo nvarchar.
  • @action=N'add'
    Specifica che una credenziale per il database specificato verrà aggiunta all'archivio delle credenziali. La credenziale conterrà la password della chiave master del database. Il valore passato ad @action è di tipo nvarchar.
  • @action= N'drop'
    Specifica che una credenziale per il database specificato verrà rimossa dall'archivio delle credenziali. Il valore passato ad @action è di tipo nvarchar.

Osservazioni

Quando SQL Server deve utilizzare una chiave master del database per decrittografare o crittografare una chiave, SQL Server esegue un tentativo di decrittografia della chiave master del database con la chiave master del servizio dell'istanza. Se il tentativo non riesce, SQL Server esegue una ricerca nell'archivio delle credenziali per individuare le credenziali di chiave master con lo stesso GUID del database per cui è necessaria la chiave master. SQL Server tenta quindi di decrittografare la chiave master del database con ogni credenziale corrispondente fino a quando non riesce a completare l'operazione o non sono disponibili altre credenziali da provare.

ms182754.Caution(it-it,SQL.90).gifAttenzione:
Non creare una credenziale per la chiave master di un database che non deve essere accessibile per l'account sa e altre entità server con privilegi elevati. È possibile configurare un database in modo che la gerarchia di chiavi corrispondente non possa essere decrittografata con la chiave master del servizio. Questa opzione è supportata come difesa in profondità per i database contenenti informazioni crittografate che non devono essere accessibili per l'account sa o altre entità server con privilegi elevati. La creazione di una credenziale per la chiave master di un database con queste esigenze annulla questa difesa in profondità, consentendo all'account sa e ad altre entità server con privilegi elevati di decrittografare il database.

Le credenziali create con sp_control_dbmasterkey_password sono visibili nella vista del catalogo sys.master_key_passwords. I nomi delle credenziali create per le chiavi master dei database hanno il formato seguente: ##DBMKEY_<database_family_guid>_<random_password_guid>##. La password viene archiviata come parte segreta della credenziale. Per ogni password aggiunta all'archivio delle credenziali esiste una riga in sys.credentials.

Non è possibile utilizzare sp_control_dbmasterkey_password per creare una credenziale per i database di sistema seguenti: master, model, msdb o tempdb.

sp_control_dbmasterkey_password non verifica che la password consenta effettivamente di aprire la chiave master del database specificato.

Se si specifica una password già archiviata in una credenziale per il database specificato, l'esecuzione di sp_control_dbmasterkey_password avrà esito negativo.

[!NOTA] Due database disponibili in istanze diverse del server possono condividere lo stesso GUID. In questo caso, per i database verranno utilizzati gli stessi record di chiave master nell'archivio delle credenziali.

I parametri passati a sp_control_dbmasterkey_password non sono visibili nelle tracce.

Autorizzazioni

È richiesta l'autorizzazione CONTROL per il database.

Esempi

A. Creazione di una credenziale per la chiave master di AdventureWorks

Nell'esempio seguente viene creata una credenziale per la chiave master del database AdventureWorks e la password della chiave master viene salvata come segreto nella credenziale. Poiché tutti i parametri passati a sp_control_dbmasterkey_password devono essere di tipo nvarchar, le stringhe di testo vengono convertite con l'operatore di casting N.

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

B. Rimozione di una credenziale per una chiave master del database

Nell'esempio seguente viene rimossa la credenziale creata nell'esempio A. Si noti che tutti i parametri sono obbligatori, inclusa la password.

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

Vedere anche

Riferimento

Stored procedure di protezione (Transact-SQL)
Stored procedure di sistema (Transact-SQL)
sys.credentials (Transact-SQL)

Altre risorse

Impostazione di un database mirror crittografato
Credenziali

Guida in linea e informazioni

Assistenza su SQL Server 2005