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?
Tout d’abord, essayez d’isoler votre problème:
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.
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
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/
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:
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.
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).
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
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.
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.
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.