连接到MSSQL服务器时用户登录失败

时间:2018-07-03 09:55:27

标签: java sql-server jdbc

尝试使用JDBC从Java连接到MS SQL服务器:

String url = "jdbc:sqlserver://GM\\SQLEXPRESS:1433;databaseName=Northwind";
connServer.dbConnect(url, "sa","sa");

连接时出现异常:

jdbc:sqlserver://GM\SQLEXPRESS:1433;databaseName=AdventureWorks
com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'sa'. ClientConnectionId:1157e4ca-ae88-4e41-b60c-d93b808ba990
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:217)
    at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:279)
    at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:99)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:4346)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3160)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$100(SQLServerConnection.java:43)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3123)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7505)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2445)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1981)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1628)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1459)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:773)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1168)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at Test.ConnectMSSQLServer.dbConnect(ConnectMSSQLServer.java:19)
    at Test.ConnectMSSQLServer.main(ConnectMSSQLServer.java:48)

我希望使用SQL Server身份验证进行连接。因此,我将sa用户的密码更改为sa。我可以使用sa用户从SQL Server管理控制台连接到SQL Server身份验证。但令我不安的是用户sa上的红叉:

enter image description here

为什么在那里。与我无法连接数据库的原因有某种联系吗?

UPD

我已经用密码tst创建了用户tst,并映射到NorthWind DB:

enter image description here

代码:

connServer.dbConnect(url, "tst","tst");

但是出现了同样的错误。顺便说一句,tstsa用户上的红叉现在不见了。

试图向系统管理员添加tst,但出现错误:

enter image description here

1 个答案:

答案 0 :(得分:0)

此处的最佳做法是创建一个特定的用户进行交互。

然后,该用户可以具有所需的特定权限。这样,即使连接详细信息确实以某种方式受到破坏,DBA仍可以限制帐户访问以限制任何损害。

许多DBA当然会禁用“ SA”,因为它是一个已知帐户。我当然会这样做,并建议我的客户也这样做(大多数会忽略建议)。这不是对安全性偏执的情况,更多的是,您足够的偏执。