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

错误:无法删除数据库加密密钥,因为它正在使用中。需要关闭数据库加密才能删除数据库加密密钥。但是我相信加密密钥会关闭,但密钥会丢失。
以下是屏幕截图,显示了首次运行代码后的样子

sql-server - 如何通过Powershell关闭数据库加密-LMLPHP

Below  is the code that I have written/used:

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

}

最佳答案

你很亲密将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

09-25 23:15