La connexion de SQL Server 2008 pour Java: échec de la Connexion pour l'utilisateur d'erreur
J'essaie de connecter mon code Java de Microsoft SQL Server 2008 R2 Express de la base de données. J'ai téléchargé Microsoft SQL Server, un Pilote JDBC 3.0 et a ajouté l'sqljdbc4.jar à mon classpath. Je suis à l'aide de Netbeans et ont inclus le sqljdbc4.jar dans mon projet.
J'ai créé une base de données dans SQL Server Management Studio appelé TestDB1 et ajouté quelques colonnes et les valeurs que je vais utiliser pour le test. J'ai changé de Mode d'Authentification Windows, clic droit sur le serveur JACOB=PC\SQLEXPRESS->Propriétés->Secuity et de ce changement de Mode d'Authentification Windows pour SQL Server et le Mode d'Authentification Windows.
Ensuite, j'ai créé une nouvelle connexion, clic droit sur la Connexion de dossier dans la fenêtre de l'explorateur de JACOB-PC/SQLEXPRESS->Secuity Dossier->Dossier Connexions et ajout d'une nouvelle connexion. Je lui ai donné le nom jhaip2, sont passés à l'authentification SQL Server et le mot de passe à jacob. Appliquer la stratégie de mot de passe et de faire respecter expiration du mot de passe ne sont pas cochées. La base de données par défaut est définie à TestDB1. Alors, en vertu de TestDB1->Secuity->Utilisateurs->jhaip2->appartenance au rôle de Base de données j'ai mis jhaip2 à db_owner (je ne pouvais pas se connecter à la base de données dans la gestion de studio sans cela, n'est probablement pas la bonne chose à faire?). J'ai ensuite redémarré le serveur.
Maintenant, pour mon code java, il s'agit d'une copie directe du Pilote JDBC 3.0 code de l'Échantillon à l'exception sans authentification 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) {}
}
}
}
Quand je le lance, il imprime Pilote "ok" donc je suis en supposant que mon pilote est mis en place correctement. Puis il imprime le message d'erreur:
com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'jhaip2'.
Il n'importe pas quel nom d'utilisateur que j'utilise, il échoue toujours. J'ai le sentiment que je suis de la configuration de l'utilisateur de mal. Si quelqu'un pouvait me donner un peu d'aide sur la façon d'installer correctement un utilisateur ou toute orientation dans la façon de simplement se connecter à une base de données SQL Server en Java, je l'apprécierais.
- êtes-vous correctement ajoutée en tant qu'Utilisateur, le béton de la base de données du moteur de Bases de données
- Avez-vous essayé de vous connecter avec ce nom d'utilisateur et mot de passe dans le SQL Server Management Console? Peut-être que votre sql server est configuré pour utiliser le windows authenification au lieu de l'authentification sql server.
- J'ai oublié que, d'accord avec le changement des Fenêtres Autentifications pour le Mode Mixte, +1 et SQL2008R2 a par défaut des Réseaux fermés Tuyaux de trop...
- Est-il obligatoire pour être répertorié comme un utilisateur sous
Server Properties -> Permission -> Login/roles
? Actuellement ma boîte n'est pas indiquée dans la rubrique "Login/rôles" et je reçois égalementLogin failed for user sa
erreur - Check this out: stackoverflow.com/a/50106764/3371954 , qui pourraient vous aider.
Vous devez vous connecter pour publier un commentaire.
exécuter cette requête en sélectionnant votre base de données
- je utiliser aaron792 vous devez utiliser le vôtre
Dans sql server management studio aller à l'objet de l'explorateur et cliquez droit sur (local)(sql server xxx) puis allez dans les propriétés il va ouvrir les propriétés du serveur, puis aller à la sécurité et à changer de mode d'authentification du serveur de windows uniquement pour sql server ou windows (2ème option)
dans les propriétés du serveur , aller à des autorisations et sélectionnez utilisateur nouvellement créé à partir des Connexions ou des règles de la liste ci-dessous, il vérifie toutes les options de la subvention en règle explicite
ouvrir le gestionnaire de configuration SQL server et -> services de sql server
au haut de la ligne de SQL server, cliquez droit et ouvrir les propriétés de changer alors construite en compte Système Local
puis redémarrer à chaque chose et assurez-vous qu'il est en cours d'exécution. alors tentez votre code
Je sais que cela a déjà répondu, mais voudrais donner un petit twist pour cela sans avoir à réinstaller l'ensemble de la
SQLSERVER
SGBDR.Le concept est de modifier les propriétés de l'instance de sql server que vous essayez de vous connecter.
La première étape. Ouvrir
SQL Management Studio
et sélectionnez l'instance de sql server à partir de l'explorateur d'objets.Windows Authentication mode
àSQL SERVER and Windows Authentication mode (mixed mode)
.Permissions
option par la suite. Puis, avec les Autorisations sélectionné, sélectionnez le Compte d'utilisateur que vous souhaitez accorder l'autorisation d'. (Connexion Compte doit être créé avant cela, vérifiez ce tutoriel hors http://www.blackthornesw.com/robo/projects/blackthornepro/HOWTO_-_Creating_a_SQL_Server_Database_Login_Account.htm . L'édition pourrait être différent de ce que vous avez, mais le concept ou le flux de travail reste le même.). Sous les autorisations, sélectionnez leExplicit
onglet, et en vertu deGrant
, sélectionnez toutes les options.Étape Deux: pour configurer le SGBDR d'utiliser l'créées en interne des Comptes de Connexion. Donc:
SQLSERVER configuration Manager
.SQL SERVER Services
dans le volet de gauche.SQL Server (MSSQLSERVER)
option, puis sélectionnez propriétés dans le menu contextuel.Log On
onglet est sélectionné, puis sélectionnez le bouton radio nomméBuilt-in Account
sousLog on as:
Option. Puis sélectionnez dans la liste déroulante,Local System
.Étape Trois: pour redémarrer le SQLSERVER SGBDR.
Control Panel
>Administrative Tools
>Component Services
.SQL Server (MSSQLSERVER)
dans le volet de droite, cliquez sur redémarrer, qui est juste un peu en haut à droite.Quand j'ai regardé dans le journal de SQL Server fichiers, il disait que je ne pouvais pas se connecter car le Serveur SQL server est en mode d'Authentification Windows, même si, dans le programme, il a été mis à la Mode d'Authentification Mixte.
Lors de l'installation, j'ai eu le configurer en mode d'Authentification Windows, mais en changeant les paramètres dans le programme ne serait pas changer de mode d'Authentification Windows.
J'ai enlevé SQL Server 2008 et tous les programmes de mon ordinateur et installé une nouvelle copie, cette fois avec l'Authentification SQL Server. Tout fonctionne correctement maintenant. Je ne sais pas pourquoi SQL Server eu un problème avec la modification du mode d'authentification, mais il fonctionne maintenant donc, je suis heureux.
Serait cette autre question peut-être le même problème: MS SQL Server 2005 Express x86 - son port est inaccessible - aider.
Vous avez à faire assurez-vous que SQL Server écoute sur le port correct avant de vous pouvez vous connecter via une connexion TCP à l'aide de JDBC.
Je suis tombé sur le même problème. Merci, jhaip, pour m'indiquer la bonne direction: SQL Server est en mode d'Authentification Windows.
Je voudrais seulement ajouter qu'il n'est pas nécessaire de réinstaller le serveur SQL server et tous les programmes connexes. Ce qui est nécessaire, c'est de changer le mode d'authentification. Voir cette réponse pour plus de détails: Une tentative de connexion à l'aide de l'authentification SQL a échoué