- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从应用程序传递参数以在存储过程中进行搜索。我这样传入参数:
SqlParameter param1 = new SqlParameter(@"@FilterCustomerPO", "G06756");
param1.DbType = DbType.AnsiString;
param1.Direction = ParameterDirection.Input;
param1.Size = 50;
sqlCmd.Parameters.Add(param1);
在存储过程中,定义如下:
ALTER PROCEDURE [dbo].[usp_POListing]
@FilterCustomerPO VARCHAR (50)
AS
BEGIN
SELECT *
FROM [Order]
WHERE PONumber = @FilterCustomerPO
END
PONumber
列使用 DETERMINISTIC
加密类型进行加密。
当我传入一个值时,出现错误:
Operand type clash: varchar is incompatible with varchar(50) encrypted with (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'ColumnEncryptionKey', column_encryption_key_database_name = 'DataPortal') collation_name = 'SQL_Latin1_General_CP1_CI_AS'
我见过很多其他人对此进行了报道,但这些解决方案都不适合我。正如您所看到的,我正在使用参数化查询,因此不确定我可能会丢失什么。
编辑:
我也尝试过以这种方式传递参数 - 同样的错误:
sqlCmd.Parameters.Add("FilterCustomerPO", SqlDbType.VarChar, 50);
sqlCmd.Parameters["FilterCustomerPO"].Value = "G06756"
订单表的定义如下:
CREATE TABLE [dbo].[Order]
(
[OrderID] [INT] IDENTITY(1,1) NOT NULL,
[CustomerID] [INT] NOT NULL,
[OrderNumber] [INT] NOT NULL,
[DBCOrderNumber] [VARCHAR](25) NOT NULL,
[PONumber] [VARCHAR](50) COLLATE Latin1_General_BIN2 ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [ColumnEncryptionKey], ENCRYPTION_TYPE = Deterministic, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL,
[BillingName] [VARCHAR](255) NOT NULL,
CONSTRAINT [PK_Order]
PRIMARY KEY CLUSTERED ([OrderID] ASC)
WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
我的客户端连接字符串还包括列加密设置=已启用
请注意:我能够很好地检索数据。当我将参数发送到查询中,并在收到错误时尝试进行比较/过滤时。
最佳答案
这是AlwaysEncrypted ,它仅使用客户端加密 key 。它旨在防止 SQL Server(或其管理员)解密数据。如果您想要使用服务器管理的 key 进行列加密,SQL Server 也有这个功能,但它是一个不同的功能。请参阅Encrypt a Column of Data .
在 Order.PONumber 的 AlwaysEncrypted 数据类型中,实际上并不只是 varchar(50)
。这是
[varchar](50) COLLATE Latin1_General_BIN2
ENCRYPTED WITH (
COLUMN_ENCRYPTION_KEY = [ColumnEncryptionKey],
ENCRYPTION_TYPE = Deterministic,
ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256')
这是列类型的全部部分,因此您不能使用varchar(50)
类型的参数。要搜索此列,客户端必须使用指定的 key 和算法加密参数值,以便 SQL Server 可以将确定性加密的列值与加密的参数值进行匹配。 SQL Server 没有列加密 key ,因此无法解密列值或加密参数值。
SQL Server 具有将加密表参数传播到存储过程或函数的能力。这个看起来效果很好。要检查存储过程参数是否已选择列加密,请检查 sys.parameters。 EG
select name, encryption_type_desc, encryption_algorithm_name
from sys.parameters
where object_id = object_id('usp_POListing')
我创建了一个简单的重现,并且能够像这样调用存储过程:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp27
{
class Program
{
static void Main(string[] args)
{
using (var con = new SqlConnection("server=localhost;database=testdb;integrated security=true;Column Encryption Setting=enabled"))
{
con.Open();
var sqlCmd = new SqlCommand("usp_POListing", con);
sqlCmd.CommandType = CommandType.StoredProcedure;
var param1 = new SqlParameter("@FilterCustomerPO", "G06756");
param1.SqlDbType = SqlDbType.VarChar;
param1.Size = 50;
param1.Direction = ParameterDirection.Input;
sqlCmd.Parameters.Add(param1);
var dt = new DataTable();
using (var rdr = sqlCmd.ExecuteReader())
{
dt.Load(rdr);
}
}
}
}
}
一般参见Develop using Always Encrypted with .NET Framework Data Provider
关于sql - varchar 与使用 (encryption_type = 'DETERMINISTIC' 加密) 的 varchar(50) 不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57740927/
我对确定性函数的理解是: always produces the same result for the same input parameters 根据我的理解,下面的函数是非确定性函数 CREAT
根据 Deterministic and Nondeterministic Functions 上的 MSDN SQL BOL(联机丛书)页面,非确定性函数可以“以确定性方式使用” The follo
我今天刚刚开始阅读更多关于马尔可夫链生成器的内容,并且对构建它的整个过程非常感兴趣。根据我的理解, future 状态取决于过去状态到现在的统计数据。 示例: Hello World. Hello D
有人能给我一个程序中确定性错误的例子吗? 谢谢。 最佳答案 void bug() { int *ptr = 0; ptr[0] = 10; } 访问空指针。总是发生。 关于determinis
它们(幂等函数和确定性函数)是否只是在给定相同输入的情况下返回相同结果的函数? 还是我遗漏了什么区别? (如果有区别,请你帮我理解它是什么) 最佳答案 用更简单的话来说: 纯确定性函数 :输出完全且仅
我处于一种情况,我需要生成一个非常大的(~10^16 个元素)具有特定随机稀疏模式的随机矩阵。显然存储所有这些元素是完全不可行的。在任何给定时间只需要少数元素,因此可以按需绘制它们 - 但是,一旦存储
让我们仔细看看Ticker example code在 Go 的时间包中: package main import ( "fmt" "time" ) func main() {
某些 Prolog 目标的确定性成功问题已经一次又一次地出现在 - 至少 - 以下问题: Reification of term equality/inequality Intersection an
我正在构建一个 Bitbake 配方并收到以下错误消息: ERROR: When reparsing virtual:native:/path/to/poky/meta/recipes-devtool
我在使用 Symfony2 时遇到了这个奇怪的错误。在本地主机中,一切正常,但是当我在服务器中尝试时,我收到此 PHP 错误: [06-Mar-2013 22:04:50 UTC] PHP Fatal
我正在使用 Scipy.stats.multivariate_normal从多元正态分布中抽取样本。像这样: from scipy.stats import multivariate_normal #
我正在开发一个 Groovy 应用程序,它必须为用户提供一个包含加密查询参数的链接。目前我们使用 AES 加密算法,所有链接都使用相同的 IV。我们知道这很糟糕(因此我们想要切换的原因),但这样做的原
在 DB2 V5R4 中,当您修改 DETERMINISTIC UDF 的功能时,它会返回缓存的响应一段时间... 有什么方法可以重置缓存的响应? 提前致谢。 最佳答案 它返回缓存的响应是什么?是通过
我目前正在尝试在 Keras 中实现 DDPG。我知道如何更新评论家网络(普通 DQN 算法),但我目前坚持更新 Actor 网络,它使用等式: 因此,为了将 Actor 网络 wrt 的损失减少到其
在数据访问限制方面,Oracle 函数中的确定性 和并行启用子句有什么区别? 最佳答案 如 documentation on the CREATE FUNCTION statement 中所述: DE
Oracle 函数中的deterministic 和parallel enable 子句 在数据访问限制方面有什么区别? 最佳答案 如 documentation on the CREATE FUNC
我使用 Stanford Core NLP 构建了一个 Java 解析器。我发现在使用 CORENLP 对象获得一致结果时存在问题。我正在为相同的输入文本获取不同的实体类型。对我来说,这似乎是 Cor
TL;DR:我非常希望 in_edges 的迭代顺序在我的图表上(adjacency_list 和 edge_list of setS)是确定性的,但据我所知,迭代的顺序是由只是指针的比较运算符确定比
我是 Rust 的新手,正在尝试了解 Cargo 的东西。我在他们的常见问题解答中读到关于 "why do binaries have Cargo.lock in version control, b
假设我有一个观点 MYVIEW COL1[CARCHAR2] SORTINGCOL[NUMBER] "itm1" 100 "itm2" 101 "it
我是一名优秀的程序员,十分优秀!