无法使用 jdbc 连接到 MS SQL 数据库
Posted
技术标签:
【中文标题】无法使用 jdbc 连接到 MS SQL 数据库【英文标题】:Unable to connect to MS SQL database using jdbc 【发布时间】:2014-03-24 09:59:30 【问题描述】:我正在尝试使用下面的 jdbc 连接到我的 MS SQL 2008 数据库,但它给出了错误
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con = DriverManager
.getConnection(
"jdbc:sqlserver://vermdbhqd01:1433;databaseName=irmreports",
"irm", "1234");
我的数据库名称是irmreports
,实例名称是irm_dev
。请告知我如何在 URL 中同时提供数据库实例名称和数据库名称。
它说
Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'irm'.
但是当我尝试从 DB GUI 使用相同的用户名和密码登录时,它会登录。想知道在 jdbc 设置中在哪里提供数据库实例详细信息的详细信息
我也试过下面的方法不起作用
Connection con = DriverManager
.getConnection("jdbc:sqlserver://vermdbhqd01:1433;instanceName=IRM_DEV;databaseName=irmreports;user=irm;password=1234");
【问题讨论】:
您在与管理工作室连接时实际上是在使用用户名和密码,还是在使用 Windows 身份验证(集成安全)? 我正在使用 SQL 身份验证 设法使用 odbc 连接使其正常工作,但 jdbc 4 的问题仍然存在 【参考方案1】:从连接字符串中删除端口详细信息后,我终于让它工作了,如下所示
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con = null;
con = DriverManager
.getConnection(
"jdbc:sqlserver://vermdbhqd01;databaseName=irmreports;instanceName=irm_dev;selectMethod=cursor;user=irm;password=1234");
【讨论】:
这表明您的机器上有多个 SQL Server 实例。如果您指定端口号,则指定的instanceName
将被忽略,并且驱动程序会连接到在指定端口上运行的实例。
是的。你说的对。我们在 SQL 服务器上运行了多个实例,正如你所说,我认为它在提到端口时忽略了 instanceName。遗憾的是,任何 Microsoft JDBC 文档中都没有提到这一点 :(以上是关于无法使用 jdbc 连接到 MS SQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章
我无法使用带有 Android Studio 的 JDBC 连接到 SQL Server Express