如何通过PowerShell关闭数据库加密

时间:2017-05-27 18:01:35

标签: sql-server powershell encryption azure-sql-database

我已经设置了一个TDE加密的数据库。现在我需要通过PowerShell禁用此加密。我能够取得一些突破,但面临以下错误

错误:无法删除数据库加密密钥,因为它当前正在使用中。需要关闭数据库加密才能删除数据库加密密钥。但是加密密钥被关闭但密钥丢失我相信。 下面是截图首次运行代码后的截图

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()

}

2 个答案:

答案 0 :(得分:3)

你非常接近。将EncryptionEnabled设置为false后,您需要执行$ExistingDB.Alter()告诉服务器实际执行此操作。完成后,您可以使用已有的命令安全地删除数据库加密密钥。

完整脚本:

$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

答案 1 :(得分:2)

看起来您可以使用Azure PowerShell cmdlet Set-AzureRMSqlDatabaseTransparentDataEncryption执行此操作:

  

使用PowerShell在SQL数据库上启用和禁用TDE

     

使用Azure PowerShell,您可以运行以下命令来转向   TDE开/关。您必须先将帐户连接到PS窗口   运行命令。自定义示例以使用您的值   ServerName,ResourceGroupName和DatabaseName参数。对于   有关PowerShell的其他信息,请参阅How to install and configure Azure PowerShell

...

  

禁用TDE:

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

“database1” - 状态“已禁用”

     

如果使用0.9.8版本,请使用   Set-AzureSqlDatabaseTransparentDataEncryption命令。

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