Man*_*anu -2 sql-server always-encrypted sql-server-2017
我正在使用 SSMS 17.6 并且我正在尝试始终加密功能。我能够通过声明一个参数然后使用该参数来更新/插入/搜索日期时间字段,例如:
DECLARE @NewValue datetime
SET @NewValue = '19/05/2018'
update MyTable set my_ae_column = @NewValue
Run Code Online (Sandbox Code Playgroud)
我正在尝试对设置了 bin2 排序规则的 varchar(30) 字段执行相同的操作,但我仍然得到
操作数类型冲突问题
有什么建议吗?
我的猜测是您没有检查本指南中的以下内容,其中指出您不能单独使用DECLARE
和SET
:
在同一个语句中声明和初始化(内联初始化)。SSMS 不会参数化使用单独的 SET 语句声明的变量。
当我编写代码时遇到的错误与您在问题中遇到的错误相同。这就是为什么我们要求破坏的代码,而不是有效的代码(尽管我怀疑您在问题中编写的代码是否有效!):
DECLARE @column nvarchar(30);
SET @column = N'whatever';
UPDATE ...
Run Code Online (Sandbox Code Playgroud)
当我声明变量并立即分配它时,它工作得很好,如下所示:
DECLARE @column nvarchar(30) = N'whatever';
UPDATE ...
Run Code Online (Sandbox Code Playgroud)
当然,这种不匹配可能由于各种其他原因而发生。例如不将连接设置为column encryption setting = enabled
,不启用 SSMS 中的“启用参数化...”设置,在声明和分配变量时使用函数或表达式,使用错误的数据类型或长度或精度或小数位数等。我们可以如果您包含中断的代码,请帮助缩小范围。
归档时间: |
|
查看次数: |
950 次 |
最近记录: |