尝试使用 Polybase + 启用暂存 Blob 存储将数据从 Azure SQL 提取到 Azure DW 数据库时,我收到此错误消息。
此服务器上未启用托管服务标识。请启用托管服务标识并重试。
我尝试创建一个托管身份用户,将其分配给 Web 服务并授予其权限,将该用户链接到在数据库中具有所有者权限的 AAD 组,但它不起作用。
尝试使用 Polybase + 启用暂存 Blob 存储将数据从 Azure SQL 提取到 Azure DW 数据库时,我收到此错误消息。
此服务器上未启用托管服务标识。请启用托管服务标识并重试。
我尝试创建一个托管身份用户,将其分配给 Web 服务并授予其权限,将该用户链接到在数据库中具有所有者权限的 AAD 组,但它不起作用。
您的接收器、源和 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 Server。
设置-AzSqlServer -ResourceGroup -ServerName -AssignIdentity
您需要创建一个用户并使用 db_owner 权限登录。与用户登录以测试它是否真的有效。PS DF Polybase 并不像您想象的那么好...在后台,它将文件分片为较小的文件,将数据转储到 tempdb 表中,然后才将其加载到您的表中,如果您有数十亿个,这需要相当长的时间记录。我用它做了很多测试,最终我们直接使用了 CTAS,因为它的速度提高了 10 倍。 https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-develop-ctas