【问题标题】:Manager Identity error when running a pipeline in Data Factory with Staging Blob Storage + Polybase to a Azure DataWarehouse在使用暂存 Blob 存储 + Polybase 到 Azure 数据仓库的数据工厂中运行管道时出现管理器身份错误
【发布时间】:2020-04-02 02:01:10
【问题描述】:

我在尝试使用 Polybase + 启用暂存 Blob 存储将数据从 Azure SQL 提取到 Azure DW 数据库时收到此错误消息。

未在此服务器上启用托管服务标识。请启用托管服务标识,然后重试。

我尝试创建一个托管身份用户,将其分配给 Web 服务并授予它权限,将该用户链接到在数据库中具有所有者权限的 AAD 组,但它不起作用。

【问题讨论】:

    标签: azure-data-factory staging azure-sql-data-warehouse polybase


    【解决方案1】:

    首先,使用您的用户名/密码登录 Azure PowerShell。 其次,运行以下命令来分配您的 DB DataWarehouse Server。

    Set-AzSqlServer -ResourceGroup -ServerName -AssignIdentity

    【讨论】:

      【解决方案2】:

      您的 sink 、 source 和 blob 是同一个订阅的一部分吗?由于错误是抱怨 SQDWH 访问,我认为您需要检查一下。

      https://docs.microsoft.com/en-us/azure/data-factory/connector-azure-sql-data-warehouse#managed-identity.

      请告诉我进展如何。

      我假设您在接收端使用身份验证类型 = 托管标识。

      我们需要给 ADF 足够的权限。导航到 Azure 门户上的以下内容。 仪表板->SQL 数据仓库-> - 查询编辑器(预览)

      CREATE USER [your ADF Name ] FROM EXTERNAL PROVIDER;
      EXEC sp_addrolemember db_owner, [your ADF Name];
      

      现在执行管道,它应该可以正常工作了。

      我想重现你的问题,所以我故意删除了 ADF 的权限

      EXEC sp_droprolemember db_owner, [your ADF Name];
      

      我看到以下错误(这不是您报告的原因)

      {
          "errorCode": "2200",
          "message": "ErrorCode=FailedDbOperation,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Error happened when loading data into SQL Data Warehouse.,Source=Microsoft.DataTransfer.ClientLibrary,''Type=System.Data.SqlClient.SqlException,Message=User does not have permission to perform this action.,Source=.Net SqlClient Data Provider,SqlErrorNumber=15247,Class=16,ErrorCode=-2146232060,State=1,Errors=[{Class=16,Number=15247,State=1,Message=User does not have permission to perform this action.,},],'",
          "failureType": "UserError",
          "target": "Copy data1",
          "details": []
      }
      

      我认为您的管道还有其他问题。

      【讨论】:

      • 嗨,伙计,感谢您的帮助。是的,source 和 blob 是同一个订阅的一部分。我已经完成了这些步骤,但仍然卡在此错误消息中。
      • 令人困惑的是,我只需要创建一个用户吗?还是我也需要创建一个登录名?我还在阅读有关存储防火墙配置的信息,因为这可能是 sql dw 没有到达 blob 存储以提取数据的问题。
      • 你需要有一个用户。我能够毫无问题地做你正在做的事情。我认为这个问题还有更多。如果您有支持计划,请与他们联系,一些机构将与您一起解决问题。如果您没有支持,请发送电子邮件至 azcommunity@microsoft.com,并提供以下详细信息,以便我们为您创建一次性免费支持票,以便您在此问题上密切合作。主题 URL:订阅 ID:完成后请告诉我
      • 我已经更新了我的答案,我希望它可以帮助你更接近你的分辨率。
      【解决方案3】:

      您需要创建一个用户并使用 db_owner 权限登录。与用户登录以测试它是否真的有效。 PS DF Polybase 并不像您想象的那么好...在后台,它将文件分片为较小的文件,将数据转储到 tempdb 表中,然后才将其加载到您的表中,如果您有数十亿个,这需要相当长的时间记录。 我用它做了很多测试,最终我们直接使用了 CTAS,因为它的速度提高了 10 倍。 https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-develop-ctas

      【讨论】:

        猜你喜欢
        • 2020-03-24
        • 2021-08-26
        • 1970-01-01
        • 1970-01-01
        • 2020-02-24
        • 2017-09-18
        • 2023-01-25
        • 2019-01-26
        • 2020-12-22
        相关资源
        最近更新 更多