我正在尝试使用SSIS(Visual Studio 2017)将数据插入到Azure SQL表中,该表具有通过Always Encrypted加密的列以及存储在Azure Key Vault中的列主键,但是我一直遇到错误。 / p>
根据我在其他帖子中找到的建议,我正在将ADO.NET目标与ODBC数据提供程序一起使用。该用户是Azure SQL数据库中提供的Azure Active Directory用户,因此可以登录。它具有密钥库的访问策略中授予它的所有关键特权。
我的ODBC连接字符串如下:
DRIVER=ODBC Driver 17 for SQL Server;SERVER=[dbs].database.windows.net;UID=[uid@example.com];PWD=[password];Authentication=ActiveDirectoryPassword;DATABASE=[database];ColumnEncryption=Enabled;KeyStoreAuthentication=KeyVaultPassword;KeyStorePrincipalId=[uid@example.com];KeyStoreSecret=[password]
我希望将其插入表中,但是会导致此错误:
[ADO NET目标[2]]错误:数据期间发生异常 插入,从提供程序返回的消息是:错误[CE269] [Microsoft] [用于SQL Server的ODBC驱动程序17] [SQL Server]错误12038 发送请求到https://[keyvault].vault.azure.net:443错误 [CE263] [Microsoft] [用于SQL Server的ODBC驱动程序17] [SQL Server]错误 验证ECEK的签名。错误[CE202] [Microsoft] [ODBC驱动程序17 for SQL Server] [SQL Server]密钥库提供程序AZURE_KEY_VAULT 无法解密ECEK https://[keyvault].vault.azure.net:443/keys/[cmk]/[version]与 RSA_OAEP。
我能够通过SSMS以及自定义控制台应用程序成功插入表格中,并验证加密是否按预期工作。该错误仅发生于SSIS。
答案 0 :(得分:1)
我最近花了很多时间使这件事生效。如果在ECEK上收到错误12038,则需要在没有:443的情况下更新Azure SQL数据库中的主键。当ODBC连接尝试将URL与AKV中的URL匹配时,会产生错误。这是简短的答案。我打算花一点时间来提供整个解决方案。