尝试使用JDBC连接到SQL Server 2012(Express Edition)。
这是我的代码:
import java.sql.*;
public class MSSqlTestConnection {
public static void main(String[] args) {
try {
Connection con = DriverManager.getConnection (
"jdbc:jtds:sqlserver://localhost;instance=LOCALDB#B431115D;DatabaseName=foo","sa","my_password"
);
Statement stmt = con.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
我尝试了所有可能的组合。这是完整的堆栈跟踪:
java.sql.SQLException: Login failed for user 'sa'.
at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:372)
at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2988)
at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2421)
at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:632)
at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:371)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at MSSqlTestConnection.main(MSSqlTestConnection.java:10)
已启用管道和TCP / IP
启用混合身份验证模式
当我使用&#34; sa&#34;
登录时,与Management Studio一起使用我几乎尝试了一切。我似乎无法找到解决方案。我尝试更改instance = SQLExpress。删除实例属性。添加用户名和密码属性。添加databasename属性。什么都行不通。
任何帮助都将不胜感激。
解决方案:
我重新安装了SQL Server 2012.最后得到了工作连接字符串。事实证明,Microsoft SQL Server 2012已更改了默认实例的名称。它现在是MSSQLSERVER而不是SQLExpress。您可以在设置SQL Server 2012时选择自己的实例,即默认或命名。
Connection Connect = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433;instance=MSSQLSERVER;DatabaseName=Database_name",user,password);
在设置SQL Server时也不要忘记使用混合身份验证模式。
答案 0 :(得分:1)
将应用程序从MSSQL Server 2005移动到MSSQL Server 2012后,我遇到了相同的症状。
我的解决方法是从
更改连接字符串jdbc:jtds:sqlserver://a.example.com/xyz;user=bob;password=xxx
到
jdbc:jtds:sqlserver://a.example.com/xyz;instance=MSSQLSERVER;user=bob;password=xxx;TDS=7.0
简而言之,我在字符串的末尾添加了这两个属性:
;instance=MSSQLSERVER;TDS=7.0