Подключение SQL Server 2008 к Java: ошибка входа при ошибке пользователя - PullRequest
2 голосов
/ 19 июня 2011

Я пытаюсь подключить свой код Java к базе данных Microsoft SQL Server 2008 R2 Express.Я скачал драйвер JDBC 3.0 для Microsoft SQL Server и добавил файл sqljdbc4.jar в мой путь к классам.Я использую Netbeans и включил в свой проект файл sqljdbc4.jar.

Я создал базу данных в SQL Server Management Studio под названием TestDB1 и добавил некоторые столбцы и значения, которые я буду использовать для тестирования.Я перешел из режима аутентификации Windows, щелкнув правой кнопкой мыши на сервере JACOB = PC \ SQLEXPRESS-> Properties-> Secuity и изменив режим аутентификации Windows на SQL Server и режим аутентификации Windows.

Затем я создал новую учетную запись, щелкнув правой кнопкой мыши папку «Логин» в проводнике окон в разделе «JACOB-PC / SQLEXPRESS-> Папка Secuity-> Папка входа в систему» ​​и добавил новую учетную запись.Я дал ему имя jhaip2, переключился на аутентификацию SQL Server и установил пароль к jacob.Принудительная политика паролей и принудительное истечение срока действия пароля не проверяются.База данных по умолчанию установлена ​​в TestDB1.Затем в TestDB1-> Secuity-> Users-> jhaip2-> членство в роли базы данных я установил для jhaip2 значение db_owner (без этого я не мог войти в базу данных в студии управления, вероятно, не правильно?).Затем я перезапустил сервер.

Теперь для моего java-кода это в основном прямая копия примера кода драйвера JDBC 3.0, за исключением проверки подлинности Windows.

package databasetest1;

import java.sql.*;

public class connectURL {

   public static void main(String[] args) {

      // Create a variable for the connection string.
      String connectionUrl = "jdbc:sqlserver://localhost:1433;" + "databaseName=TestDB1;";

      // Declare the JDBC objects.
      Connection con = null;
      Statement stmt = null;
      ResultSet rs = null;

      try {
         // Establish the connection.
         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
         System.out.println("Driver okay");
         con = DriverManager.getConnection(connectionUrl,"jhaip2","jacob");
         System.out.println("Connection Made");

      }

      // Handle any errors that may have occurred.
      catch (Exception e) {
         e.printStackTrace();
      }
      finally {
         if (rs != null) try { rs.close(); } catch(Exception e) {}
         if (stmt != null) try { stmt.close(); } catch(Exception e) {}
         if (con != null) try { con.close(); } catch(Exception e) {}
      }
   }
}

Когда я запускаю, онвыводит «Драйвер в порядке», поэтому я предполагаю, что мой драйвер настроен правильно.Затем выводится ошибка:

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'jhaip2'.

Неважно, какое имя пользователя я использую, всегда происходит сбой.У меня такое чувство, что я неправильно настраиваю пользователя.Если бы кто-нибудь мог дать мне некоторую помощь о том, как правильно настроить пользователя или какие-либо рекомендации о том, как просто подключиться к базе данных SQL Server на Java, я был бы признателен.

Ответы [ 5 ]

10 голосов
/ 13 мая 2012
  1. запустите этот запрос, выбрав базу данных

     CREATE LOGIN aaron792 WITH PASSWORD='12345'
     USE BudgetAuthorization
     CREATE USER aaron792
    

    я использую aaron792, вы должны использовать свой

  2. В sql server management studio перейдите в обозреватель объектов и щелкните правой кнопкой мыши (локально) (sql server xxx), затем перейдите в свойства, откроются свойства сервера, а затем перейдите в режим безопасности и измените режим проверки подлинности сервера с окон только на SQL Server или Windows (2-й вариант)

  3. в свойствах сервера, перейдите к разрешениям и выберите вновь созданного пользователя в списке логинов или правил, затем под ним проверьте все параметры для предоставления в явном правиле

  4. открыть диспетчер конфигурации сервера SQL и -> службы сервера SQL в верхней строке SQL-сервера щелкните правой кнопкой мыши и откройте свойства, затем измените встроенную учетную запись на Local System

затем перезапустите все и убедитесь, что оно работает. тогда попробуйте свой код

9 голосов
/ 19 августа 2013

Я знаю, что на этот вопрос уже дан ответ, но хотел бы немного его изменить без необходимости переустанавливать всю SQLSERVER СУБД.Идея состоит в том, чтобы изменить свойства экземпляра sqlserver, к которому вы пытаетесь подключиться.

  1. Шаг первый .Откройте SQL Management Studio и выберите экземпляр сервера sql из проводника объектов.

    • Щелкните правой кнопкой мыши на экземпляре и выберите свойства из всплывающего меню, которое откроет окно свойств сервера.
    • выберите параметр безопасности, который находится в правой части страницы.Затем измените аутентификацию сервера с Windows Authentication mode на SQL SERVER and Windows Authentication mode (mixed mode).
    • Выберите опцию Permissions впоследствии.Затем с выбранными разрешениями выберите учетную запись, для которой вы хотите предоставить разрешение.(Учетная запись для входа должна быть создана до этого, ознакомьтесь с этим руководством http://www.blackthornesw.com/robo/projects/blackthornepro/HOWTO_-_Creating_a_SQL_Server_Database_Login_Account.htm. Редакция может отличаться от того, что у вас есть, но концепция или рабочий процесс остаются прежними.)Под разрешениями выберите вкладку Explicit, а в разделе Grant выберите все параметры.
    • Нажмите OK.
  2. ШагДва : для настройки СУБД на использование внутренних учетных записей.Поэтому:

    • Open / Start SQLSERVER configuration Manager.
    • Выберите SQL SERVER Services на левой панели.
    • С этим выбранным, перейдите на правую панель и вправощелкните по опции SQL Server (MSSQLSERVER) и затем выберите свойства из всплывающего меню.
    • Откроется окно свойств SQL Server (MSSQLSERVER), убедитесь, что выбрана вкладка Log On, затем установите переключатель с именем Built-in Account в опции Log on as:.Затем выберите в поле со списком Local System.
    • Нажмите ОК.Нажав на ОК, вам будет предложено перезапустить экземпляр, иди, чтобы перезапустить его.Если перезагрузка не запрашивается, перейдите к шагу 3 ниже.
  3. Шаг третий : для перезапуска СУБД SQLSERVER.

    • Перейдите на Control Panel> Administrative Tools> Component Services.
    • Выберите службы на левой панели
    • Затем выберите SQL Server (MSSQLSERVER) на правой панели, перезапустите щелчок, который только немного к верхней правой стороне.
3 голосов
/ 24 июня 2011

Когда я просматривал файлы журналов SQL Server, я говорил, что не могу войти, потому что SQL Server находился в режиме аутентификации Windows, хотя в программе он был установлен в режим смешанной аутентификации.

При установке я установил его в режиме аутентификации Windows, но изменение настроек в программе не изменит его из режима аутентификации Windows.

Я удалил SQL Server 2008 и все связанные с ним программы с моего компьютера и установил свежую копию, на этот раз с проверкой подлинности SQL Server.Теперь все работает правильно.Я не знаю, почему у SQL Server была проблема с изменением режима аутентификации, но теперь он работает, поэтому я счастлив.

1 голос
/ 20 июня 2011

Может быть, этот другой вопрос может быть такой же: MS SQL Server 2005 Express x86 - его порт недоступен - help .

Необходимо убедиться, что SQL Server прослушивает правильный порт, прежде чем вы сможете подключиться через TCP-соединение с использованием JDBC.

0 голосов
/ 08 декабря 2012

Я столкнулся с той же проблемой. Спасибо, jhaip, за то, что указали мне правильное направление: SQL Server находился в режиме аутентификации Windows.

Я хотел бы только добавить, что нет необходимости переустанавливать сервер SQL и все связанные программы. Нужно только сменить режим аутентификации. См. Этот ответ для получения более подробной информации: Попытка входа в систему с использованием аутентификации SQL не удалась

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...