You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Fabric REST API创建DirectQuery语义层的凭据传递问题

解决Fabric REST API创建DirectQuery语义层的数据源凭据问题

核心说明

Power BI/Fabric出于安全合规要求,不允许在model.bim的M表达式中明文存储数据库用户名和密码,这也是你直接在Sql.Database()中添加凭据无效的原因。以下是两种合规的解决方案:


方案一:通过REST API请求体直接传递凭据

调用create-semantic-model接口时,在请求体中同时定义dataSources字段,将数据源连接信息和凭据一并传入,无需修改model.bim的M表达式即可关联凭据。

  1. 完整请求体示例(关键部分):
{
  "displayName": "你的语义模型名称",
  "model": {
    /* 你的model.bim完整JSON内容 */
  },
  "dataSources": [
    {
      "name": "SqlDataSource",
      "type": "Sql",
      "connectionDetails": {
        "server": "xxx-xxxx..database.windows.net",
        "database": "database_name"
      },
      "credentialDetails": {
        "credentialType": "Basic",
        "credentials": {
          "username": "你的数据库用户名",
          "password": "你的数据库密码"
        },
        "encryptedConnection": "Encrypted",
        "privacyLevel": "Organizational"
      }
    }
  ]
}
  1. 对应的model.bim中M表达式可保持原样,Fabric会自动关联dataSources中定义的凭据。

方案二:先创建工作区数据源,再关联语义模型

  1. 先通过Fabric REST API创建工作区级别的SQL数据源,将用户名和密码凭据保存到工作区中。
  2. 修改model.bim的M表达式,引用已创建的工作区数据源:
let
    Source = DataSource.Sql("SqlDataSource"),
    dbo_Applications = Source{[Schema="dbo",Item="country"]}[Data]
in
    dbo_Applications

这样语义模型会自动复用工作区数据源中已保存的凭据,无需重复输入。


注意事项

  • 禁止在M表达式中明文写入用户名和密码,这不仅存在安全泄露风险,Power BI服务也会直接忽略此类明文凭据,仍提示缺少权限。
  • 若使用Basic认证,确保数据库服务器已开启加密连接(encryptedConnection设为Encrypted),符合Fabric的安全要求。

内容的提问来源于stack exchange,提问作者Umesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 01:38:12