我已经设置了一个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()
}
答案 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
命令。