尝试使用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
上的红叉:
为什么在那里。与我无法连接数据库的原因有某种联系吗?
UPD
我已经用密码tst
创建了用户tst
,并映射到NorthWind DB:
代码:
connServer.dbConnect(url, "tst","tst");
但是出现了同样的错误。顺便说一句,tst
和sa
用户上的红叉现在不见了。
试图向系统管理员添加tst
,但出现错误:
答案 0 :(得分:0)
此处的最佳做法是创建一个特定的用户进行交互。
然后,该用户可以具有所需的特定权限。这样,即使连接详细信息确实以某种方式受到破坏,DBA仍可以限制帐户访问以限制任何损害。
许多DBA当然会禁用“ SA”,因为它是一个已知帐户。我当然会这样做,并建议我的客户也这样做(大多数会忽略建议)。这不是对安全性偏执的情况,更多的是,您足够的偏执。