如何在Azure Databricks中用AD集成认证连接SQL Server
在Azure Databricks Notebook中通过AD集成认证连接SQL Server的Python实现
方法1:使用pyodbc库(纯Python原生查询)
适合执行小型SQL查询并直接处理结果集,需确保集群已安装pyodbc和SQL Server ODBC驱动(Databricks Runtime通常预装,若缺失可通过%pip install pyodbc安装,需确认自身是否有安装权限)。
代码示例:
import pyodbc # 配置SQL Server基础信息 server = "你的SQL服务器名称.database.windows.net" database = "目标数据库名称" # 构建AD集成认证的连接字符串 conn_str = f""" DRIVER={{ODBC Driver 17 for SQL Server}} SERVER={server} DATABASE={database} Authentication=ActiveDirectoryIntegrated """ # 建立连接 conn = pyodbc.connect(conn_str) # 创建游标并执行查询 cursor = conn.cursor() cursor.execute("SELECT * FROM 目标表名称") # 读取并输出查询结果 rows = cursor.fetchall() for row in rows: print(row) # 关闭资源 cursor.close() conn.close()
方法2:使用Spark JDBC(大数据场景适配)
适合处理大规模数据并与Databricks DataFrame集成,支持直接读取SQL表为DataFrame或写入数据到SQL表。
代码示例:
# 配置SQL Server基础信息 server = "你的SQL服务器名称.database.windows.net" database = "目标数据库名称" table_name = "目标表名称" # 构建JDBC连接URL jdbc_url = f"jdbc:sqlserver://{server}:1433;databaseName={database};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;" # 读取SQL表为Spark DataFrame df = spark.read \ .format("jdbc") \ .option("url", jdbc_url) \ .option("dbtable", table_name) \ .option("authentication", "ActiveDirectoryIntegrated") \ .option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver") \ .load() # 展示DataFrame数据 df.display()
关键注意事项
- 确认Databricks集群网络可访问目标SQL Server,需配置对应防火墙规则或VNet对等连接
- 当前操作的Databricks用户需通过Azure AD被授予目标SQL数据库的访问权限
- 使用Spark JDBC时,确保集群已预装SQL Server JDBC驱动,若未预装可通过集群库管理添加
内容的提问来源于stack exchange,提问作者Developer Rajinikanth
相关产品推荐
相关产品推荐

