Synapse Notebook连接Azure SQL Database报错:缺少connectionstring属性
解决Synapse中系统分配托管标识的Azure SQL链接服务令牌获取错误
当使用系统分配托管标识认证的Azure SQL数据库链接服务时,调用TokenLibrary.getConnectionString()会触发Missing required property 'connectionstring'错误——因为该方法仅适用于存储了显式连接字符串的链接服务,而系统托管标识类型的链接服务不会保存连接字符串,需改用专属的令牌获取方法。
正确代码示例
jdbcUrl = "jdbc:sqlserver://my_server_name.database.windows.net:1433;database=my_db_name;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30" # 针对Azure SQL资源获取托管标识令牌 token = TokenLibrary.getAccessToken("https://database.windows.net/") pushdown_query = "(SELECT col1 FROM my_table_name) as tbl" connectionProperties = { "driver": "com.microsoft.sqlserver.jdbc.SQLServerDriver", "accessToken": token } df = spark.read.jdbc(url=jdbcUrl, table=pushdown_query, properties=connectionProperties) display(df)
关键注意事项
- 确认Synapse工作区的系统分配托管标识已被授予目标Azure SQL数据库的权限(如
db_datareader) - 链接服务的认证类型必须设置为系统分配托管标识,且已正确关联到目标SQL服务器/数据库
getAccessToken的资源参数固定为https://database.windows.net/,不可修改或省略
内容的提问来源于stack exchange,提问作者Balbeer Singh
相关产品推荐
相关产品推荐

