如果我查询sys.dm_database_encryption_keys,它回来用encryption_state的3(加密)percent_complete的0.如果我查询sys.databases,该is_encrypted列的值为0(未加密).这两个似乎对我来说是相互对立的.
数据库是加密的吗? sys.dm_database_encryption_keys这么说,但is_encrypted在sys.databases不同意.
在数据库属性下,该属性Encryption Enabled为false.
我糊涂了.
Rod*_*Rod 18
一旦启用了透明数据加密(TDE),您似乎就有了自动加密数据库的情况,例如在tempdb的情况下.我在使用tempdb的SQL Server 2012测试实例中看到完全相同的情况. MSDN:如果使用TDE对SQL Server实例上的任何其他数据库进行加密,则tempdb系统数据库将被加密.
is_encrypted = 0我认为反映了DB是自动加密的事实,而不是通过发出ALTER命令.以下是MSDN对此参数的说明:指示数据库是否已加密(通过使用ALTER DATABASE SET ENCRYPTION子句反映最后设置的状态).
当没有正在进行的加密时,预计percent_complete = 0.从MSDN:完成数据库加密状态更改的百分比.如果没有状态变化,则该值为0.
encryption_state = 3看起来是回答问题的最终暗示.MSDN:指示数据库是加密还是未加密,3 =加密.
MSDN TDE页面本身建议使用sys.dm_database_encryption_keys来验证DB是否已加密.
最后,这是一个非常方便的脚本,来自John Magnabosco的帖子,显示哪些DB是用TDE加密的,哪些不是(encryption_state = 3是出纳员):
SELECT
db.name,
db.is_encrypted,
dm.encryption_state,
dm.percent_complete,
dm.key_algorithm,
dm.key_length
FROM
sys.databases db
LEFT OUTER JOIN sys.dm_database_encryption_keys dm
ON db.database_id = dm.database_id;
GO
Run Code Online (Sandbox Code Playgroud)
希望这使它现在不那么混乱.
| 归档时间: |
|
| 查看次数: |
26927 次 |
| 最近记录: |