我已经建立了一个TDE加密的数据库。现在,我需要通过PowerShell禁用此加密。我能够取得一些突破,但是面临以下错误
错误:无法删除数据库加密密钥,因为它正在使用中。需要关闭数据库加密才能删除数据库加密密钥。但是我相信加密密钥会关闭,但密钥会丢失。
以下是屏幕截图,显示了首次运行代码后的样子
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