sp_control_dbmasterkey_password (Transact-SQL)

Wird zum Hinzufügen oder Löschen von Anmeldeinformationen verwendet, die das zum Öffnen des Datenbank-Hauptschlüssels benötigte Kennwort enthalten.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

  • @db_name = N'database_name'
    Gibt den Namen der Datenbank an, die diesen Anmeldeinformationen zugeordnet ist. Es darf sich nicht um eine Systemdatenbank handeln. database_name ist vom Datentyp nvarchar.

  • @password = N'password'
    Gibt das Kennwort des Hauptschlüssels an. password ist vom Datentyp nvarchar.

  • @action = N'add'
    Gibt an, dass dem Anmeldeinformationenspeicher Anmeldeinformationen für die angegebene Datenbank hinzugefügt werden. In den Anmeldeinformationen ist das Kennwort für den Datenbank-Hauptschlüssel enthalten. Der an @action übergebene Wert ist vom Datentyp nvarchar.

  • @action =N'drop'
    Gibt an, dass Anmeldeinformationen für die angegebene Datenbank aus dem Anmeldeinformationenspeicher gelöscht werden. Der an @action übergebene Wert ist vom Datentyp nvarchar.

Hinweise

Wenn von SQL Server ein Datenbank-Hauptschlüssel zum Entschlüsseln oder Verschlüsseln eines Schlüssels benötigt wird, wird von SQL Server versucht, den Datenbank-Hauptschlüssel mit dem Diensthauptschlüssel der Instanz zu entschlüsseln. Tritt beim Entschlüsseln ein Fehler auf, wird der Anmeldeinformationenspeicher von SQL Server nach Anmeldeinformationen des Hauptschlüssels durchsucht, die denselben Familien-GUID wie die Datenbank aufweisen, für die der Hauptschlüssel benötigt wird. Anschließend wird von SQL Server versucht, den Datenbank-Hauptschlüssel mit allen übereinstimmenden Anmeldeinformationen zu entschlüsseln, bis die Entschlüsselung erfolgreich ausgeführt wurde oder keine Anmeldeinformationen mehr vorhanden sind.

VorsichtshinweisVorsicht

Wenn von sa und anderen Serverprinzipalen mit hohen Privilegien nicht auf eine Datenbank zugegriffen werden soll, ist das Erstellen von Hauptschlüssel-Anmeldeinformationen nicht empfehlenswert. Eine Datenbank kann so konfiguriert werden, dass die Schlüsselhierarchie nicht mit dem Diensthauptschlüssel entschlüsselt werden kann. Diese Option wird als sicherer Schutz für Datenbanken mit verschlüsselten Informationen unterstützt, auf die von sa oder anderen Serverprinzipalen mit hohen Privilegien nicht zugegriffen werden soll. Durch das Erstellen eines Hauptschlüssels für eine Datenbank dieser Art wird der sichere Schutz entfernt, sodass sa und andere Serverprinzipale mit hohen Privilegien die Datenbank entschlüsseln können.

Die mit sp_control_dbmasterkey_password erstellten Anmeldeinformationen sind in der sys.master_key_passwords-Katalogsicht sichtbar. Die Namen der für Datenbank-Hauptschlüssel erstellten Anmeldeinformationen besitzen das folgende Format: ##DBMKEY_<database_family_guid>_<random_password_guid>##. Das Kennwort wird als geheimer Eintrag in den Anmeldeinformationen gespeichert. Für jedes dem Anmeldeinformationenspeicher hinzugefügte Kennwort ist eine Zeile in sys.credentials vorhanden.

sp_control_dbmasterkey_password kann nicht verwendet werden, um Anmeldeinformationen für die folgenden Systemdatenbanken zu erstellen: master, model, msdb oder tempdb.

sp_control_dbmasterkey_password überprüft nicht, ob der Hauptschlüssel der angegebenen Datenbank mit dem Kennwort geöffnet werden kann.

Falls Sie ein Kennwort angeben, das bereits in Anmeldeinformationen für die angegebene Datenbank gespeichert ist, erzeugt sp_control_dbmasterkey_password einen Fehler.

HinweisHinweis

Zwei Datenbanken aus unterschiedlichen Serverinstanzen können denselben Familien-GUID verwenden. In diesem Fall verwenden die Datenbanken dieselben Hauptschlüssel-Datensätze im Anmeldeinformationenspeicher.

Die an sp_control_dbmasterkey_password übergebenen Parameter werden in Ablaufverfolgungen nicht angezeigt.

HinweisHinweis

Wenn Sie zum Öffnen des Datenbank-Hauptschlüssels die Anmeldeinformationen verwenden, die mit sp_control_dbmasterkey_password hinzugefügt wurden, wird der Datenbank-Hauptschlüssel mit dem Diensthauptschlüssel neu verschlüsselt. Wenn sich die Datenbank im schreibgeschützten Modus befindet, schlägt die Neuverschlüsselung fehl, und der Datenbank-Hauptschlüssel bleibt unverschlüsselt. Für den anschließenden Zugriff auf den Datenbank-Hauptschlüssel müssen Sie die OPEN MASTER KEY-Anweisung und ein Kennwort verwenden. Sie können die Verwendung eines Kennworts vermeiden, wenn Sie die Anmeldeinformationen erstellen, bevor Sie die Datenbank in den schreibgeschützten Modus versetzen.

Berechtigungen

Erfordert die CONTROL-Berechtigung in der Datenbank.

Beispiele

A. Erstellen von Anmeldeinformationen für den AdventureWorks2008R2-Hauptschlüssel

Im folgenden Beispiel werden Anmeldeinformationen für den Hauptschlüssel der AdventureWorks2008R2-Datenbank erstellt, und das Kennwort für den Hauptschlüssel wird als geheimer Eintrag in den Anmeldeinformationen gespeichert. Da alle an sp_control_dbmasterkey_password übergebenen Parameter vom Datentyp nvarchar sein müssen, werden die Textzeichenfolgen mit dem Umwandlungsoperator N konvertiert.

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

B. Löschen von Anmeldeinformationen für einen Datenbank-Hauptschlüssel

Im folgenden Beispiel werden die in Beispiel A erstellten Anmeldeinformationen entfernt. Beachten Sie, dass alle Parameter einschließlich des Kennworts erforderlich sind.

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