2017-05-27 4 views
4

abstelle Ich habe eine Datenbank eingerichtet, die TDE verschlüsselt ist. Jetzt muss ich diese Verschlüsselung über PowerShell deaktivieren. Ich bin in der Lage, einige Durchbruch zu bekommen, aber mit der unten genannten FehlerWie man Datenbankverschlüsselung durch Powershell

Fehler: Kann nicht den Datenbank-Verschlüsselungsschlüssel fallen, weil es derzeit verwendet wird. Die Datenbankverschlüsselung muss deaktiviert werden, um den Datenbankverschlüsselungsschlüssel löschen zu können. allerdings wird der Verschlüsselungsschlüssel ausgeschaltet, aber der Schlüssel wird fallengelassen, glaube ich. Unten ist der Screenshot wie es aussieht, nach dem ersten Lauf des Codes

enter image description here

Below is the code that I have written/used: 

    function set-EncryptionOff($ExistingDB) 
{ 
    $ExistingDB.EncryptionEnabled=$false 
    $ExistingDB.Alter(); 
    $ExistingDB.DatabaseEncryptionKey.Refresh() 
    $ExistingDB.DatabaseEncryptionKey.Drop() 

} 

Antwort

3

Sie sind sehr nah dran. Nachdem Sie EncryptionEnabled auf false gesetzt haben, müssen Sie eine $ExistingDB.Alter() tun, um dem Server mitzuteilen, dass er das tatsächlich tun soll. Sobald Sie dies getan haben, können Sie den Datenbankverschlüsselungsschlüssel mit dem Befehl, den Sie bereits haben, sicher löschen.

Voll Skript:

$sqlServer = New-Object ('Microsoft.SqlServer.Management.Smo.Server') $sqlName 
$ExistingDB=$sqlServer.Databases.Item($dbname) 
$ExistingDB.EncryptionEnabled=$false 
$ExistingDB.Alter() 
$ExistingDB.DatabaseEncryptionKey.Refresh() 
$ExistingDB.DatabaseEncryptionKey.Drop() #should work now 
+0

Hallo Ben, Danke für die Eingabe .. Der Code funktioniert jetzt einwandfrei. + 1 – sanketh

+0

Gibt es einen Ereignis-Listener, der den Abschluss der DB-Entschlüsselung identifiziert, da die Datenbank riesig ist und nach Abschluss der Entschlüsselung automatisch gesichert werden muss? – sanketh

+0

Es sieht so aus, als hätten Sie das hier als Frage gestellt : https://stackoverflow.com/questions/44225996/event-handler-for-tde-decryption-process-in-powershell/44229087. Antwort dort gegeben. –

2

Es sieht aus wie Sie das Azure Powershell-Cmdlets Set-AzureRMSqlDatabaseTransparentDataEncryption dies tun können:

Enabling and Disabling TDE on SQL Database by Using PowerShell

Using the Azure PowerShell you can run the following command to turn TDE on/off. You must connect your account to the PS window before running the command. Customize the example to use your values for the ServerName, ResourceGroupName, and DatabaseName parameters. For additional information about PowerShell, see How to install and configure Azure PowerShell .

..

To disable TDE:

Set-AzureRMSqlDatabaseTransparentDataEncryption -ServerName "myserver" -ResourceGroupName "Default-SQL-WestUS" -DatabaseName 

"database1" -State "Disabled"

If using version 0.9.8 use the Set-AzureSqlDatabaseTransparentDataEncryption command.

Quelle: https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/transparent-data-encryption-with-azure-sql-database

+0

Set-AzureRMSqlDatabaseTransparentDataEncryption ist kein anerkanntes Cmdlets, können Sie mir bitte sagen, welches Paket aufgenommen werden? – sanketh

+0

Ich glaube, es ist Teil des AzureRM-Moduls https://docs.microsoft.com/en-gb/powershell/azure/install-azurerm-ps?view=azurermps-4.0.0 –

Verwandte Themen