在带有暂存Blob存储+ Polybase到Azure DataWarehouse的数据工厂中运行管道时,管理器身份错误

问题描述 投票:0回答:3

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

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

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

enter image description here

azure-data-factory staging azure-sql-data-warehouse polybase
3个回答
0
投票

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


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": []
}

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


0
投票

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

Set-AzSqlServer -ResourceGroup -ServerName -AssignIdentity

© www.soinside.com 2019 - 2024. All rights reserved.