使用AZ CLI导出Azure SQL数据库时遇身份验证错误求助
问题详情
执行以下AZ CLI导出命令时触发错误:
az sql db export -s pds1 -n pdb1 -g resourcegroup --admin-password "password" --admin-user "username" --auth-type ADPassword --storage-key accesskey --storage-key-type StorageAccessKey --storage-uri "storage accname.blob.core.windows.net/folder1/myBacpac.bacpac"
报错内容:
Message: The ImportExport operation failed due to 'An error occurred while communicating with the SQL Server using AdPassword-login: Could not discover a user realm.'
已提前执行过以下SQL操作:
CREATE USER [testuser] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [testuser]; ALTER ROLE db_datawriter ADD MEMBER [testuser]; ALTER ROLE db_ddladmin ADD MEMBER [testuser];
解决步骤
修正用户名格式
使用ADPassword认证时,--admin-user必须填写完整的Azure AD用户主体名称(UPN),比如user@yourdomain.com,不能只用短用户名。检查命令中的用户名是否符合该格式要求。补充服务器级权限
导出操作需要服务器级权限,仅配置数据库角色(db_datareader等)不足以完成操作。给用于导出的Azure AD用户添加dbmanager服务器角色:ALTER SERVER ROLE dbmanager ADD MEMBER [你的AAD用户完整UPN];检查网络连通性
确保SQL服务器能正常连接到Azure AD服务。如果服务器配置了VNet防火墙,需允许出站访问Azure AD的相关端点。临时切换SQL认证排查
如果以上步骤无效,可以先切换为SQL认证执行导出命令,排查是否为Azure AD认证环节的问题:az sql db export -s pds1 -n pdb1 -g resourcegroup --admin-password "SQL管理员密码" --admin-user "SQL管理员账号" --auth-type SqlPassword --storage-key accesskey --storage-key-type StorageAccessKey --storage-uri "https://storageaccname.blob.core.windows.net/folder1/myBacpac.bacpac"修复存储URI格式
检查--storage-uri是否包含完整的https://前缀,正确格式应为https://存储账号名.blob.core.windows.net/文件夹名/备份文件名.bacpac,缺少协议前缀可能引发额外的认证或访问问题。
内容的提问来源于stack exchange,提问作者Melissa

