下面的代码成功执行解密,但如果数据库很大,则需要一段时间来解密数据库
$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()
我想在解密完成后执行备份。是否有用于识别数据库解密完成的事件处理程序?
答案 0 :(得分:1)
我没有看到在对象模型中发生加密/解密进程时发生事件的任何事情。但是,你有两种选择。
$ExistingDB.DatabaseEncryptionKey.EncryptionState
是一个枚举,详细说明数据库是否正在转换为加密/解密,实际加密/解密等。
您可以查看sys.dm_database_encryption_keys
系统视图。它具有与上面提供的相同的加密状态信息,但也有一个percent_complete列,用于指示转换期间的进度。