带有Always Encrypted列的SqlBulkCopy

时间:2017-05-24 21:38:05

标签: always-encrypted

我通过.Net代码导入CSV并获取数据表中的数据并尝试使用SqlBulkCopy批量插入但我收到证书错误。当我尝试执行其他操作时,只有当我执行SqlBulkCopy时才会出现证书错误。这是错误描述

  

无法使用密钥库提供程序解密列加密密钥:   ' MSSQL_CERTIFICATE_STORE&#39 ;.加密列的最后10个字节   加密密钥是:' 7F-1D-20-E1-43-0B-B5-92-66-78'。证书   指纹' XXXXXXXXXXXXXXXXXXXXXXXXXX'在证书商店中找不到   '我'在证书位置' CurrentUser'。验证证书   数据库中列主密钥定义中的路径是否正确,   并且证书已正确导入证书   位置/存储。参数名称:masterKeyPath

我在本地计算机上导入了证书。下面是代码 我在dt datatable对象中有数据。从worksheet.Cells.ExportDataTableAsString返回。

Dim copy As New SqlBulkCopy(ConnString, SqlBulkCopyOptions.KeepIdentity Or SqlBulkCopyOptions.AllowEncryptedValueModifications)

copy.DestinationTableName = "Customer"
copy.ColumnMappings.Add("CustID", "CustID")
copy.ColumnMappings.Add("SSN", "SSN")
copy.WriteToServer(dt)

参考 - https://dba.stackexchange.com/questions/160577/is-it-possible-to-bulk-insert-data-into-a-table-that-has-columns-encrypted-with

如果按照上面的说法进行操作,我们需要进行2轮插入data.i具有Worksheet ExportDataTableAsString返回的datatable对象。当我直接使用数据表进行SQLbulkcopy时,我得到了证书缺失错误。

有人可以帮助我,并提出更好的方法。

1 个答案:

答案 0 :(得分:0)

右键单击证书 - 所有任务 - 管理私钥 - 添加用户

IIS AppPool [DefaultAppPool]为我工作。