web-dev-qa-db-fra.com

"Impossible d'ouvrir la base de données utilisateur par défaut. La connexion a échoué." après avoir installé SQL Server Management Studio Express

J'ai une base de données dans un fichier local qui est utilisé par un programme. Le programme a des fonctionnalités limitées et j'avais besoin d'exécuter quelques requêtes rapides. J'ai installé SQL Server Management Studio Express 2005 (SSMSE), connecté à l'instance SQL Server, attaché le fichier de base de données et exécuté les requêtes. Maintenant, le programme d'origine ne se connectera plus à la base de données. Je reçois l'erreur:

Impossible d'ouvrir la base de données par défaut de l'utilisateur. Échec de la connexion. Échec de la connexion pour l'utilisateur 'MyComputer\MyUserName'.

Je suis retourné dans SSMSE et j'ai essayé de définir la base de données par défaut. J'ai ouvert Sécurité, Connexions, BUILTIN\Administrateurs et BUILTIN\Utilisateurs . Sous Général , j'ai défini la base de données par défaut sur la base de données du programme. Sous User Mappings , je me suis assuré que la base de données est cochée et que db_datareader et db_datawriter sont cochés.

Le programme utilise la chaîne de connexion:

Serveur = (local)\Instance; AttachDbFilename = C:\PathToDatabase\Database.mdf; Sécurité intégrée = True; Instance utilisateur = True;

Je sais tout savoir sur l'administration de base de données. Que manque-t-il d'autre?

11
Hand-E-Food

Tout d’abord, essayez d’isoler votre problème:

  1. Faites une sauvegarde du fichier! Certaines des étapes ci-dessous peuvent, apparemment, entraîner la disparition du fichier dans certaines circonstances.
  2. Êtes-vous sûr de vous connecter à la même instance via Management Studio que le programme?
  3. Si possible, essayez de fermer l'instance que vous ne vous attendez pas à utiliser.
  4. Définissez la base de données par défaut de l'utilisateur sur maître et essayez de connecter le programme.
  5. Essayez de vous connecter en tant qu'utilisateur via Management Studio. Puisque vous avez intégré la sécurité, vous devez ouvrir Management Studio en tant qu'utilisateur du programme.
  6. Utilisez-vous des "instances utilisateur" - peut-être sans le savoir? Si c'est le cas, cela peut être utile: http://blogs.msdn.com/b/sqlexpress/archive/2006/11/22/connecting-to-sql-express-user-instances-in-management-studio. aspx

Je n'ai pas beaucoup travaillé avec les fichiers joints de la même manière que votre programme - mais vous écrivez que vous avez également joint la base de données dans Management Studio. Avez-vous essayé de le détacher là avant de lancer votre programme? Vous voyez peut-être Management Studio et votre programme en compétition pour un accès exclusif au fichier MDF?

EDIT: J'ai ajouté le point 6 ci-dessus - ceci est nouveau dans ma propre liste de TODO lorsque le dépannage de ce type de connexion a échoué. Mais cela ressemble beaucoup à ce que vous vivez.

EDIT2: lors de la première édition, un nouvel élément a été ajouté à la liste. Les chiffres dans les commentaires ne correspondent donc pas à ceux de la réponse.

6
user806549

Cela ne répond peut-être pas spécifiquement à votre question, mais cela aidera d'autres personnes ayant un problème similaire.

Le problème est que votre utilisateur est configuré par défaut sur une base de données qui n’est pas accessible pour une raison quelconque (peut être renommée, supprimée, corrompue ou ...) Pour résoudre le problème, suivez simplement les instructions suivantes

  1. Essayez de vous reconnecter sur la page de connexion. Les autres onglets sélectionnent "Propriétés de la connexion". 
  2. sous l'onglet, localisez "Connect to database" et sélectionnez une base de données existante à laquelle vous avez accès, telle que tempdb ou master
  3. Une fois que vous êtes connecté à l’instance SQL Server, exécutez la procédure TSQL ci-dessous pour attribuer à la connexion une nouvelle base de données par défaut.

    Use master
    GO
    
    ALTER LOGIN [yourloginname] WITH DEFAULT_DATABASE = TempDB
    GO
    

Une fois que vous êtes connecté, changez également le nom de votre base de données par défaut en maître via l'interface utilisateur.

Article tiré de: http://www.mytechmantra.com/LearnSQLServer/Fix-cannot-open-user-default-database-Login-failed-Login-failed-for-user-SQL-Server -Erreur/

6
Kiarash

J'ai finalement compris cela et ma situation est différente de celle de tous les autres que j'ai lus ce soir.

J'ai restauré ma base de données à partir d'une sauvegarde. Je savais qu'il y avait un utilisateur en particulier que j'avais utilisé pour la connexion. J'ai donc créé cet utilisateur dans SSMS. Cependant, il y avait déjà un utilisateur de ce nom sous la base de données qui était entré avec la sauvegarde.

Comme j'avais tellement essayé de résoudre ce problème, je ne pouvais pas supprimer facilement l'utilisateur de la base de données. J'ai supprimé la base de données et restauré à nouveau. Ensuite:

  1. Supprimer l'utilisateur sous les bases de données -> [ma base de données] -> Utilisateurs
  2. Créez à nouveau l'utilisateur dans Security-> Logins (pas sous votre base de données, bien que cela fonctionne probablement aussi.
  3. Aller à l'utilisateur nouvellement créé. Sélectionnez les propriétés. Ensuite, sous Mappages utilisateur, indiquez-lui de faire de votre base de données la valeur par défaut. Donnez-lui un accès en lecture et en écriture.

Résumé: j'ai eu deux utilisateurs. Celui qui est venu avec la base de données, et celui que j'avais créé. Supprimez celui fourni avec la base de données et créez le vôtre.

2
DustinA

Ce problème s'est manifesté lorsque j'ai mis hors ligne ma base de données par défaut. La prochaine chose que je sais, je ne pouvais pas me connecter. Le basculement vers l'onglet Propriétés de la connexion et la sélection du menu déroulant pour modifier la base de données à laquelle je souhaite me connecter ont également échoué.

Il m’a laissé entrer immédiatement une fois que j’ai saisi manuellement maître en tant que base de données à laquelle je voulais me connecter (dans l’onglet Propriétés de la connexion).

1
Mike Cheel

Cliquez d'abord sur Option >> Bouton de l'invite «Se connecter au serveur».

Maintenant, changez la connexion à la base de données en une base de données existante sur votre serveur, comme maître ou msdb.

Plus de détails

https://blog.sqlauthority.com/2008/11/04/sql-server-fix-error-4064-cannot-open-user-default-database-login-failed-login-failed-failed-for-user/

1
Sundar

J'ai également eu le même problème. Il s'est avéré que j'essayais d'accéder aux classes d'appartenance intégrées (dans une vue) et que .Net essayait de créer la base de données dans le dossier App_Data:

@Membership.GetUser().ProviderUserKey

Cela incitera le système à essayer de créer une base de données basée sur le système d’appartenance intégré, ce qui peut ne pas correspondre à la configuration de votre système.

0
Terry Kernan

J'ai eu un problème similaire à simplement télécharger SQL Express Utility qui est capable de démarrer des instances utilisateur. SSEUtil est un outil conçu par l'équipe de Visual Studio pour vous aider à résoudre les problèmes d'instance utilisateur. Pour en savoir plus, consultez le fichier Lisez-moi installé avec l'utilitaire. http://www.Microsoft. fr/downloads/details.aspx? FamilyID = fa87e828-173f-472e-a85c-27ed01cf6b02 & DisplayLang = fr .

J'espère que cela aidera.

0
Benson Makoni

Dans mon cas, je devais définir le bon chemin "se connecter à n'importe quelle base de données":

Dans votre cas, accédez à Security, puis à Logins

Faites un clic droit dessus, vous verrez properties et vous devrez cliquer sur Securables.

Là, il est possible de se connecter à n’importe quelle base de données.

0
wookee80