SQL 服务器 TDE - 使用 T-SQL 显示是否有数据库键
SQL Server TDE - use T-SQL to show if there is a database key
我可以通过此 T-SQL 查询判断 SQL 服务器 TDE 主密钥是否存在:
if not exists (SELECT name FROM sys.symmetric_keys WHERE symmetric_key_id = 101) begin
-- Master Key does not exist. Create one here.
end;
是否有查询来确定 [mydb] 的数据库键是否存在?例如:
use [mydb];
if .... begin
-- database encryption key does not exist. Create one here
end;
您正在寻找 sys.dm_database_encryption_keys
。来自 the docs:
Returns information about the encryption state of a database and its associated database encryption keys.
此外,它是一个 server-level 视图,因此无需在您的用户数据库的上下文中 运行 它(尽管这样做没问题;您可以在任何地方 运行 它在服务器上)。这样的东西应该可以工作
declare @db sysname = 'mydb';
if exists (
select *
from sys.dm_database_encryption_keys
where database_id = db_id(@db)
and encryption_state = 3 /* encrypted */
)
begin
print concat(quotename(@db), ' is encrypted.')
end
else
begin
print concat(quotename(@db), ' is not encrypted.')
end
我可以通过此 T-SQL 查询判断 SQL 服务器 TDE 主密钥是否存在:
if not exists (SELECT name FROM sys.symmetric_keys WHERE symmetric_key_id = 101) begin
-- Master Key does not exist. Create one here.
end;
是否有查询来确定 [mydb] 的数据库键是否存在?例如:
use [mydb];
if .... begin
-- database encryption key does not exist. Create one here
end;
您正在寻找 sys.dm_database_encryption_keys
。来自 the docs:
Returns information about the encryption state of a database and its associated database encryption keys.
此外,它是一个 server-level 视图,因此无需在您的用户数据库的上下文中 运行 它(尽管这样做没问题;您可以在任何地方 运行 它在服务器上)。这样的东西应该可以工作
declare @db sysname = 'mydb';
if exists (
select *
from sys.dm_database_encryption_keys
where database_id = db_id(@db)
and encryption_state = 3 /* encrypted */
)
begin
print concat(quotename(@db), ' is encrypted.')
end
else
begin
print concat(quotename(@db), ' is not encrypted.')
end