【问题标题】:U-SQL data source as SQL Server inside a UDFU-SQL 数据源作为 UDF 中的 SQL Server
【发布时间】:2017-05-05 21:00:50
【问题描述】:

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

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

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

【问题讨论】:

  • 您好,欢迎来到 Stack overflow- 如果您可以将问题集中在更严格、更具体的问题上,您可能会发现有人能够帮助您(因为这篇文章有两个 - 一个关于数据源功能,另一个关于连接到您的 SQL 服务器的与网络相关的问题。对于后者,如果您分享您尝试过的代码的“最小非工作示例”将会很有帮助,因此我们可以查看并尝试看看这是否是代码错误,或配置错误。
  • 我会的。谢谢。

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 实际上,加密列中的数据可以通过非常有限的方式解密,存储过程不是其中之一。我目前正在使用基于 .NET 的解决方案。原因可能是尝试解密数据的应用程序必须前往密钥库进行加密操作。
    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多