我有一个SQL Server 2012版。我在这台服务器上有两个数据库。其中一个名为BANKTEST的数据库几个月前从备份中恢复过来。我最近恢复了另一个名为NEWBANK的数据库。
以下是我为访问NEWBANK而编写的java程序
package com.example.myproject.client;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ConnectMSSQL {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1;user=sa;password=sa123;Database=NEWBANk");
System.out.println("test");
Statement sta = conn.createStatement();
String Sql = "select TOP 10 CodeType from D001002";
ResultSet rs = sta.executeQuery(Sql);
while (rs.next()) {
System.out.println(rs.getString("CodeType"));
}
}
}
不幸的是,我收到的错误已在下面列出
线程中的异常" main" com.microsoft.sqlserver.jdbc.SQLServerException:无法打开数据库" NEWBANK"登录请求。登录失败。 ClientConnectionId:69c57dd7-38b1-413c-b8ea-8d53824f74e1 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216) 在com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:254) 在com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:84) 在com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2908) 在com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234) 在com.microsoft.sqlserver.jdbc.SQLServerConnection.access $ 000(SQLServerConnection.java:41) 在com.microsoft.sqlserver.jdbc.SQLServerConnection $ LogonCommand.doExecute(SQLServerConnection.java:2220) 在com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696) 在com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715) 在com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326) 在com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991) 在com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827) 在com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) 在com.example.myproject.client.ConnectMSSQL.main(ConnectMSSQL.java:13)
如果我用BANKTEST替换数据库的名称,我不会收到任何错误。有人可以就此提出建议吗?
此致
萨钦
答案 0 :(得分:4)
错误显示您用于登录数据库NEWBANK
的用户名和密码无效或无法访问它。
您需要使用DBA检查登录详细信息,然后再次尝试登录。您还可以使用您在代码中使用的登录凭据来检查是否可以使用SQL Server Management Studio访问数据库。(您可能也会在那里找到相同的错误)
您还可以按照此处给出的步骤进行操作:SQL SERVER – FIX : ERROR : Cannot open database requested by the login.
转到SQL Server>>安全>>登录并右键单击NT AUTHORITY \ NETWORK SERVICE并选择属性
在新打开的登录属性屏幕中,转到“用户映射” 标签。然后,在“用户映射”选项卡上,选择所需的数据库 - 特别是显示此错误消息的数据库。上 在屏幕下方,检查角色db_owner。单击“确定”。