[尝试使用Polybase +启用暂存Blob存储将数据从Azure SQL提取到Azure DW数据库时,我收到此错误消息。
此服务器上尚未启用托管服务身份。请启用托管服务身份,然后重试。
我试图创建一个受管理的身份用户,将其分配给Web服务,并授予它将该用户链接到在数据库中具有所有者权限的AAD组的权限,但是它不起作用。
您需要创建一个用户并以db_owner权限登录。与用户登录以测试它是否确实有效。PS DF Polybase并不像您想象的那么好...在引擎盖下将文件分片为较小的文件,将数据转储到tempdb表中,然后再将其加载到表中,如果您拥有数十亿个记录。我用它做了很多测试,最终我们直接使用了CTAS,结果证明它快了10倍。https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-develop-ctas
您的接收器,源和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": []
}
我认为您的管道还有其他问题。
首先,使用您的用户名/密码在Azure PowerShell中登录。其次,运行以下命令来分配您的DB DataWarehouse服务器。
Set-AzSqlServer -ResourceGroup -ServerName -AssignIdentity