Power BI连接Azure SQL数据源的服务主体凭据刷新配置及有效期问题
$UpdateUserCredential = @{ credentialDetails = @{ credentialType = "OAuth2" credentials = "{`\"credentialData`\":[{`\"name\":`\"accessToken\", `\"value\":`\"$token\"}]}" encryptedConnection = "Encrypted" encryptionAlgorithm = "None" privacyLevel = "None" } } | ConvertTo-Json
核心问题解答
1. 是否需要每次凭据到期时编程更新
是。你当前提交的是服务主体申请的Azure SQL OAuth2访问令牌,这类令牌本身有固定有效期,到期后Power BI执行计划刷新时会直接返回凭据失效错误,必须在令牌到期前通过编程方式更新Power BI数据源存储的凭据值,才能保证刷新正常执行。
2. 该访问令牌的有效期
Azure AD为服务主体颁发的、针对Azure SQL资源的OAuth2访问令牌默认有效期为1小时,最长可通过Azure AD策略配置延长到24小时,远短于你设置的10天刷新周期,所以现有方案下必须高频更新凭据,远不止10天一次。
3. 长期有效凭据方案
方案一:SQL Server基础身份认证(推荐,实现最简单)
你说的基础用户名密码认证完全可以实现需求,操作如下:
- 在Azure SQL数据库中创建SQL认证账号,分配对应表/视图的访问权限
- 进入Power BI数据源配置页面,认证方式选择
SQL Server 身份验证,填入创建好的用户名和密码保存即可
只要你不主动修改该SQL账号的密码,该凭据就长期有效,不需要反复更新,原生支持计划刷新,完全不需要你再写Powershell脚本维护令牌。
方案二:服务主体自动托管认证
如果你必须使用服务主体身份访问Azure SQL,不需要自己维护令牌更新:
- 确认服务主体已经被赋予Azure SQL的对应访问权限
- 在Power BI数据源配置中直接选择服务主体认证,填入服务主体的客户端ID、客户端密钥、租户ID即可
Power BI会自动为你申请、刷新访问令牌,不需要你手动调用接口更新凭据,也可以长期支持计划刷新。
内容的提问来源于stack exchange,提问作者puri
相关产品推荐
相关产品推荐

