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.
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. Wenn beim Entschlüsseln ein Fehler auftritt, wird der Anmeldeinformationsspeicher von SQL Server nach Anmeldeinformationen des Hauptschlüssels durchsucht, die dieselbe Familien-GUID wie die Datenbank aufweisen, für die der Hauptschlüssel benötigt wird. Anschließend versucht SQL Server, 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.
Vorsicht |
---|
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.
Sie können mit sp_control_dbmasterkey_password keine Anmeldeinformationen für die folgenden Systemdatenbanken erstellen: master, model, msdb und tempdb.
sp_control_dbmasterkey_password überprüft nicht, ob der Hauptschlüssel der angegebenen Datenbank mit dem Kennwort geöffnet werden kann.
Wenn Sie ein Kennwort angeben, das bereits in Anmeldeinformationen für die angegebene Datenbank gespeichert ist, erzeugt sp_control_dbmasterkey_password einen Fehler.
Hinweis |
---|
Zwei Datenbanken aus unterschiedlichen Serverinstanzen können denselben Familien-GUID verwenden. In diesem Fall verwenden die Datenbanken dieselben Hauptschlüssel-Datensätze im Anmeldeinformationenspeicher. |
An sp_control_dbmasterkey_password übergebene Parameter werden nicht in Ablaufverfolgungen angezeigt.
Hinweis |
---|
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 erneut 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 AdventureWorks2012-Hauptschlüssel
Im folgenden Beispiel werden Anmeldeinformationen für den Hauptschlüssel der AdventureWorks2012-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'AdventureWorks2012',
@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'AdventureWorks2012',
@password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'drop';
GO
Siehe auch
Verweis
Gespeicherte Sicherheitsprozeduren (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)
sys.credentials (Transact-SQL)