当尝试使用Polybase +启用暂存Blob存储将数据从Azure SQL提取到Azure DW数据库时,我收到此错误消息。
此服务器上尚未启用托管服务标识。请启用托管服务身份,然后重试。
我试图创建一个托管身份用户,将其分配给Web服务,并授予其将该用户链接到在数据库中具有所有者权限的AAD组的权限,但是它不起作用。
答案 0 :(得分:0)
您的接收器,源和Blob是同一预订的一部分吗?由于错误抱怨SQDWH访问,我认为您需要检查一下。
让我知道进展如何。
我假设您在接收器端使用身份验证类型=托管身份。
我们需要给予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