Jon*_*han 8 sql-server sql-server-data-tools always-encrypted visual-studio-2017
使用 Visual Studio 数据库项目 (SSDT),我向现有表添加了一个新列。我正在使用 Always Encrypted 来加密各个列。当我添加列并尝试发布时,我在 Visual Studio 中看到一个弹出窗口,显示“值不能为空。参数名称:reportedElement”。
如果我不加密该列,它就可以工作。如果我从表中清除现有数据,它就可以工作。但是只是尝试添加一个新的可为空的加密列并不会发布。它甚至不会生成将应用的脚本。
我运行了 daxFX 和 SSDT 日志记录并使用 Windows 事件查看器查看了日志,但我只看到相同的错误“值不能为空。参数名称:reportedElement”。
这就是添加的列定义的样子。
[MyNewColumn] INT ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [DefaultColumnEncryptionKey], ENCRYPTION_TYPE = DETERMINISTIC, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NULL
Run Code Online (Sandbox Code Playgroud)
我希望 Visual Studio 能够成功发布,添加我新的可为空的加密列,但实际行为是一个弹出窗口,指出“值不能为空。参数名称:reportedElement”。
小智 4
我遇到了完全相同的问题,除了我已解密该列以基于它执行查找,而在加密时我无法执行查找(这是本地开发数据库)。
解决方案是通过 SSMS 手动执行加密,然后运行发布。我不确定为什么 VS 无法发布更改,加密密钥存储在本地证书存储中,并且 VS 以管理员身份运行,但它可能无法访问密钥来加密数据,但 SSMS 可以。
| 归档时间: |
|
| 查看次数: |
1127 次 |
| 最近记录: |