C # asp.net ne peut pas ouvrir la base de données utilisateur par défaut .ldf peut être incorrect

StackOverflow https://stackoverflow.com/questions/476797

  •  20-08-2019
  •  | 
  •  

Question

Je rencontre un problème étrange avec ma base de données SQL Server express 2005. Il fonctionne sur un serveur 2003. Avec VS2005, je peux accéder à la base de données sans problème. Mais lorsque j'essaie d'exécuter l'application, je reçois:

 Cannot open user default database. Login failed.  Login failed for user 'NT AUTHORITY\NETWORK SERVICE'......... .ldf may be incorrect.

Je me suis assuré que NETWORK SERVICE dispose d'un accès complet au dossier du site Web et à tous ses sous-dossiers.

J'ai remarqué que lorsque je regarde les propriétés de App_Data, une coche grise apparaît en lecture seule. Le fichier .MDF n'est pas en lecture seule mais je ne peux pas supprimer cette coche grise. J'ai essayé de cliquer dessus jusqu'à ce que les modifications soient appliquées et j'ai appliqué ATTRIB . -r mais rien ne semble pouvoir le changer.

Je suis très confus.

Jon

Était-ce utile?

La solution

La différence ne concerne pas les ACL du dossier, mais bien le fait que le contexte de sécurité est mappé sur un utilisateur de la base de données. Votre base de données aura probablement un mappage pour votre compte utilisateur sur dbo.

Si le compte de service réseau doit utiliser la base de données, vous devez créer un utilisateur dans la base de données pour le mapper sur le compte d'ordinateur.

Autres conseils

Utilisez-vous réellement une instance de SQL Server Express ou utilisez-vous simplement un fichier de base de données dans le dossier App_Data?

Si vous utilisez une instance de SQL Server et que vous avez SQL Server Management Studio Express installé, vous feriez quelque chose comme ceci pour donner le "Service réseau". accès au compte de la base de données (à bien y penser, vous devriez également être en mesure de pointer Management Studio vers le fichier mdf situé dans le dossier App_Data et de faire de même):

  1. Ouvrez SQL Management Studio, connectez-vous à votre base de données et ouvrez-la dans l'explorateur d'objets.
  2. Au niveau du serveur (Nom_ordinateur \ SQL Express), développez le fichier "Sécurité". section: vérifiez que l'utilisateur ne figure pas déjà dans la liste "Connexions". section ci-dessous.
  3. Si ce n'est pas le cas, cliquez avec le bouton droit de la souris sur "Connexions", "Nouvelle connexion ..."
  4. .
  5. Assurez-vous que le type de connexion est défini sur "Authentification Windows", vous pouvez alors:
    1. Appuyez sur "Recherche ...", puis sur "Avancé ...". puis "Rechercher maintenant", cliquez deux fois sur "Service NT", "Ok". la boîte de dialogue suivante.
    2. Tapez simplement "NT Authority \ Network Service". dans le " Nom de connexion: " boîte.
  6. Ensuite, dans le "Mappage de l'utilisateur" page (Sélectionné dans le volet de gauche), cochez la base de données à laquelle vous souhaitez que cet utilisateur ait accès.
  7. Si vous avez des rôles de base de données (par exemple, si cette base de données contient les tables d'appartenance ASP.NET / rôles / profil, etc. par défaut), assurez-vous de donner à l'utilisateur le rôle correct - par exemple, "aspnet_Membership_BasicAccess".

J'espère que cela aide.

Je viens d'avoir ce problème. Nous utilisions un fichier de base de données dans le dossier App_Data.

"Il semble que la base de données soit toujours ouverte dans mon IDE (Visual Web Developer Express), dans l'explorateur de base de données. Cliquez avec le bouton droit de la souris sur la base de données et sélectionnez "Fermer la connexion". corrigé. "

(merci aux forums asp.net )

Je suppose que vous utilisez un système d'exploitation autre que l'anglais.

D'une manière ou d'une autre, pour une raison quelconque, le nom de connexion du service réseau est parfois localisé lorsque le système d'exploitation est traduit dans d'autres langues.

Désormais, de nombreux programmes s’attendent à ce que le nom de connexion soit codé en dur en "NT AUTHORITY \ NETWORK SERVICE". - dans une version allemande de Windows, par exemple, le nom du compte est "NT-AUTORIT & # 196; T \ NETZWERKDIENST". Ainsi, votre programme recherche le nom anglais, ne le trouve pas et affiche une erreur.

Même certains programmes Microsoft se heurtent à cette interruption et affichent des erreurs de ce type lors de l'installation!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top