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

Fabric Notebook使用PySpark通过JDBC连接Fabric SQL数据库的连接问题求助

Fabric Notebook使用PySpark通过JDBC连接Fabric SQL数据库的连接问题求助

我之前在Fabric环境里折腾JDBC连接的时候也踩过几乎一模一样的坑,结合你的问题描述和我当时的排查经验,给你梳理几个关键的修复方向:

一、先修正连接字符串的核心参数

你目前的连接字符串有个致命细节错了:hostNameInCertificate应该用*.database.fabric.microsoft.com,而不是*.database.windows.net。Fabric SQL数据库的SSL证书是专属的,强行套用Azure SQL的证书域名会导致身份验证失败,这很可能是你AD认证报错的主要原因之一。

另外,Fabric云端Notebook环境不支持ActiveDirectoryInteractive的交互弹窗,所以建议换成ActiveDirectoryPassword模式,直接用账号密码完成认证。修正后的连接字符串示例:

jdbc_url = "jdbc:sqlserver://hit42n7mdsxgfsduxifea5jkpru-cxxbuh5gkjsllp42x2mebvpgzm.database.fabric.microsoft.com:1433;database=db_gold-333da4e5-5b90-459a-b455-e09dg8ac754c;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.fabric.microsoft.com;loginTimeout=60;authentication=ActiveDirectoryPassword"

二、权限必须到位,缺一不可

别小看权限问题,Fabric的权限逻辑是双层的:

  1. Fabric工作区权限:确保你的AAD账号(name.surname@company.com)是目标SQL数据库所在工作区的「参与者」及以上权限,没有工作区权限的话,数据库层面的权限再高也没用。
  2. 数据库用户权限:进入Fabric SQL数据库的「权限」面板,把你的AAD账号添加为数据库用户,并且分配db_datareader+db_datawriter(如果要写数据)的角色,或者直接给db_owner测试用(生产环境不建议)。

三、代码里的小bug要先改

你的write_df_to_sql_db函数里有个变量错误:参数传的是df,但你用df_swp来创建Spark DataFrame,这会直接导致变量未定义的报错,先改成:

def write_df_to_sql_db(df, trg_tbl_name='dbo.final'):
    spark_df = spark.createDataFrame(df)
    spark_df.write \
        .jdbc(
            url=jdbc_url,
            table=trg_tbl_name,
            mode="overwrite",
            properties=connection_properties
        )
    return True

四、先测试读操作,再尝试写

建议先简化场景,用读操作验证连接是否正常,比如找一个数据库里已有的小表测试:

test_df = spark.read.jdbc(url=jdbc_url, table="dbo.your_test_table", properties=connection_properties)
test_df.show(5)

如果读操作能成功,再去排查写操作的问题,这样能快速缩小范围。

最后补充

跳过认证的方式肯定行不通,Fabric SQL默认强制要求AAD身份验证,不支持匿名访问。如果你的公司启用了MFA,ActiveDirectoryPassword可能也会失效,这时候可以试试用Fabric的MSI(托管身份)认证,连接字符串改成authentication=ActiveDirectoryMSI,同时给工作区的MSI分配数据库权限,这种方式更适合生产环境的自动化场景。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 11:10:35