从databricks到sqlserver的jdbc连接

jdzmm42g  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(529)

我有一个场景,需要从databricks触发sql服务器中的存储过程。使用sparksql连接器,我可以选择但不触发存储过程。
我正在尝试连接java jdbc,但每当我执行它时,它都会显示“找不到驱动程序”
我已经将驱动程序(mssql\ujdbc\u8\u2\ujre11.jar)上传到databricks集群。
试用代码:
导入java.sql.{connection,drivermanager,resultset}
drivermanager.registerdriver(新com.microsoft.sqlserver.jdbc.sqlserverdriver());
class.forname(“com.microsoft.sqlserver.jdbc.sqlserverdriver”)
val conn=drivermanager.getconnection(“jdbc:x.database.windows.net;数据库名称=yyyy db;用户=管理员;密码=pwd;useunicode=真;characterencoding=utf-8“)
错误:java.sql.sqlexception:找不到合适的驱动程序
是否有一种使用scala/java从databricks执行存储过程的方法。

3df52oht

3df52oht1#

我已经将驱动程序(mssql\ujdbc\u8\u2\ujre11.jar)上传到databricks集群。
这不应该是必要的,可能是你的问题的原因。它已经包含在databricks运行时中,如发行说明中所述。
或者更可能是你的网址搞砸了。您可以从azure门户中的连接字符串设置复制和粘贴。应该是这样的: jdbc:sqlserver://.database.windows.net .. . 这对我很有用:

%scala
import java.util.Properties
import java.sql.DriverManager

val jdbcUsername = dbutils.secrets.get(scope = "kv", key = "sqluser")
val jdbcPassword = dbutils.secrets.get(scope = "kv", key = "sqlpassword")
val driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver"

// Create the JDBC URL without passing in the user and password parameters.
val jdbcUrl = s"jdbc:sqlserver://xxxxxx.database.windows.net:1433;database=AdventureWorks;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;"

val connection = DriverManager.getConnection(jdbcUrl, jdbcUsername, jdbcPassword)
val stmt = connection.createStatement()
val sql = """

exec usp_someproc ...

"""

stmt.execute(sql)

connection.close()

还有这个

%scala
import java.sql.{Connection, DriverManager, ResultSet}

DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver());

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")

相关问题