U-SQL数据源作为UDF中的SQL Server

时间:2017-05-05 21:00:51

标签: c# azure-data-lake u-sql

我需要从SQL表中提取行,其中某些列使用SQL Server的新“始终加密”功能进行加密。我看到我无法使用'AZURESQLDB'数据源功能,需要在以纯文本格式读取数据之前完成解密。是否有计划添加此功能?同时,我尝试编写一个用户定义的函数,它将在已注册的程序集中执行相同的操作(连接,解密数据和返回对象),但是当它运行时,我收到以下错误:

  

用户表达式的内部异常:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)

我检查了代码,一切似乎都正确。连接字符串由SqlConnection对象使用,在所有其他应用程序中都可以正常工作。我猜测来自UDF内部与外部数据源的连接被阻止。有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:2)

您是否在U-SQL中使用DATA SOURCE来表示您的SQL Server实例,而您却无法读取加密数据?如果是,请在http://aka.ms/adlfeedback提交功能请求。

由于here解释的原因,您无法直接从U-SQL用户代码中调用网络资源。

答案 1 :(得分:0)

解决这个问题的一种方法可能是创建一个执行艰苦工作的存储过程,解密然后呈现数据。然后使用带有Stored Proc Task的Azure Data Factory访问解密数据并将所需内容移动到Data Lake - 不包括安全数据。然后,您可以使用U-SQL脚本访问它。一个想法?如果您需要我提供更多示例,请告诉我。