0

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

此服务器上未启用托管服务标识。请启用托管服务标识并重试。

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

在此处输入图像描述

4

3 回答 3

0

您的接收器、源和 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": []
}

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

于 2019-12-11T21:37:11.703 回答
0

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

设置-AzSqlServer -ResourceGroup -ServerName -AssignIdentity

于 2019-12-17T23:18:47.637 回答
0

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

于 2019-12-16T14:11:54.620 回答