在带有暂存Blob存储+ Polybase的Data Factory中运行管道到Azure DataWarehouse时运行管理器身份错误

时间:2019-12-08 23:30:13

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

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

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

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

enter image description here

3 个答案:

答案 0 :(得分: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": []
}

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

答案 1 :(得分:0)

您需要创建一个用户并使用db_owner权限登录。与用户登录以测试它是否确实有效。 PS DF Polybase并不像您想象的那么好...在引擎盖下将文件分片为较小的文件,将数据转储到tempdb表中,然后再将其加载到表中,如果您拥有数十亿个记录。 我对其进行了大量测试,结果最终直接使用CTAS,因为它的速度提高了10倍。 https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-develop-ctas

答案 2 :(得分:0)

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

Set-AzSqlServer -ResourceGroup -ServerName -AssignIdentity