无法使用Java

时间:2015-10-01 08:34:50

标签: java sql-server-2012

我有一个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替换数据库的名称,我不会收到任何错误。有人可以就此提出建议吗?

此致

萨钦

1 个答案:

答案 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并选择属性

enter image description here

  

在新打开的登录属性屏幕中,转到“用户映射”   标签。然后,在“用户映射”选项卡上,选择所需的数据库 -   特别是显示此错误消息的数据库。上   在屏幕下方,检查角色db_owner。单击“确定”。

enter image description here