【发布时间】:2018-10-31 15:06:34
【问题描述】:
我有一个场景,我需要通过“始终加密”来加密一些现有的列,但我需要通过 t-Sql 脚本来做(测试的脚本需要在生产环境中执行)。这怎么可能?
类似下面
ALTER TABLE testTable ALTER COLUMN StringColumn NVARCHAR(20) COLLATE
Latin1_General_BIN2 ENCRYPTED WITH (
ENCRYPTION_TYPE = DETERMINISTIC,
ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256',
COLUMN_ENCRYPTION_KEY = CEK_Auto4)
但是,上面的代码抛出如下错误
操作数类型冲突:nvarchar 与 nvarchar(20) 不兼容 用 (encryption_type = 'DETERMINISTIC', 加密算法名称 = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEKName', column_encryption_key_database_name = 'DBName')
注意:我没有执行 PowerShell 脚本的规定。我已经有了生成密钥的 t-SQL 脚本
【问题讨论】:
-
生成原始 SQL 的一种方法是使用向导进行操作,并使用通常位于窗口右上角的选项(?)按钮。
-
这应该在您使用Secure Enclaves 功能升级到 2019 年之后成为可能。他们使用此功能的第一个示例是“您可以使用 ALTER TABLE Transact-SQL 语句发出就地加密”
-
您使用的 SSMS 版本是什么?
-
我只有2017版...
-
@dfundako sql server 2017 中是否存在此功能..?
标签: sql-server sql-server-2017 always-encrypted