使用服务主体从数据库连接到Azure SQL数据库
我需要通过服务主体从Azure Databricks连接到Azure SQL数据库。尝试搜索论坛,但找不到正确的方法。非常感谢您的帮助 在JDBC连接中使用SQL用户ID和密码尝试了类似的方法,结果成功。现在研究服务主体方法使用服务主体从数据库连接到Azure SQL数据库,azure,azure-sql-database,azure-databricks,service-principal,Azure,Azure Sql Database,Azure Databricks,Service Principal,我需要通过服务主体从Azure Databricks连接到Azure SQL数据库。尝试搜索论坛,但找不到正确的方法。非常感谢您的帮助 在JDBC连接中使用SQL用户ID和密码尝试了类似的方法,结果成功。现在研究服务主体方法 注意:SP ID和密钥应该放在Azure密钥库中,需要在DataRicks上访问。也许您可以参考本教程: 摘要: Azure SQL是一项很棒的服务——您可以将数据库放入云中,而不必管理所有讨厌的服务器内容。然而,Azure SQL的一个问题是您必须使用SQL身份验证进行身
注意:SP ID和密钥应该放在Azure密钥库中,需要在DataRicks上访问。也许您可以参考本教程: 摘要: Azure SQL是一项很棒的服务——您可以将数据库放入云中,而不必管理所有讨厌的服务器内容。然而,Azure SQL的一个问题是您必须使用SQL身份验证进行身份验证—用户名和密码。但是,您也可以通过Azure Active Directory(AAD)令牌进行身份验证。这类似于使用Windows身份验证的集成登录,但您使用的不是Active Directory,而是AAD AAD身份验证有许多优点:
仍然希望本教程能有所帮助。Azure密钥保管库支持Azure Databricks 您可以使用 关于在Databricks中必须执行的操作的示例,请参见 如您所见,我们不是直接与服务主体连接,而是使用服务主体生成访问令牌,稍后在指定连接参数时将使用该令牌:
jdbc_df = spark.read.format("com.microsoft.sqlserver.jdbc.spark") \
.option("url", url) \
.option("dbtable", db_table) \
.option("accessToken", access_token) \
.option("encrypt", "true") \
.option("databaseName", database_name) \
.option("hostNameInCertificate", "*.database.windows.net") \
.load()
但如果您不能或不想使用以前的库,也可以使用Spark的本机Azure SQL JDBC连接器:
jdbc_df = spark.read.format("com.microsoft.sqlserver.jdbc.SQLServerDriver")\
.option("url", url) \
.option("dbtable", db_table) \
.option("accessToken", access_token) \
.option("encrypt", "true") \
.option("databaseName", database_name) \
.option("hostNameInCertificate", "*.database.windows.net") \
.load()
请编辑您的答案,并将解释与代码块正确分开。如果您能提供完整的解决方案,请使用@GauravGangwar!Thanks@SDR你找到解决办法了吗?如果是,请与我们分享?
jdbc_df = spark.read.format("com.microsoft.sqlserver.jdbc.SQLServerDriver")\
.option("url", url) \
.option("dbtable", db_table) \
.option("accessToken", access_token) \
.option("encrypt", "true") \
.option("databaseName", database_name) \
.option("hostNameInCertificate", "*.database.windows.net") \
.load()