Ajouter un utilisateur de SQL Server 2008 - autorisation refusée
J'ai récemment eu certains problèmes que je pense que peut être aidé par le débogage mon ASP.NET application MVC dans IIS
au lieu de la valeur par défaut ASP.NET Serveur de Développement. Cependant, lorsque j'essaie de cela, l'application ne peut pas accéder au serveur de base de données (MS SQL Server 2008 Express) - il fonctionne très bien sur le Serveur de Développement.
L'erreur que j'obtiens est
Cannot open database 'myDbName' requested by the login. The login failed.
Login failed for user 'NT INSTANCE/NETWORK SERVICE'.
Je suppose qu'il a travaillé avant parce que le serveur de développement consulté la base de données par le biais de mon compte d'utilisateur, et non pas via le service de réseau comme IIS
.
J'ai essayé d'ajouter l'utilisateur NETWORK SERVICE
à la base de données, mais il s'avère que je n'ai pas les privilèges d'utilisateur pour le faire - il n'est pas question que mon compte Windows que je me connecte sur le serveur avec est admin, ou que je lance le programme, dans un contexte d'administrateur. Je ne peux pas ajouter un autre utilisateur à la DB.
Comment puis-je résoudre ce problème?
OriginalL'auteur Tomas Aschan | 2009-02-10
Vous devez vous connecter pour publier un commentaire.
Vous pouvez modifier l'utilisateur qu'IIS s'exécute sous: c'est un paramètre dans les propriétés du pool d'applications que votre site web s'exécutant sous.
Nous le faisons tout le temps qu'il nous donne un meilleur contrôle sur les accès de l'utilisateur - NT INSTANCE/compte SERVICE RÉSEAU est un peu trop magique à mon goût...
OriginalL'auteur teedyay
SERVICE RÉSEAU est un compte spécial. Si votre serveur de base de données est sur un autre appareil à partir de votre serveur IIS, vous devez ajouter le compte:
\$ en tant qu'utilisateur de la base de données. Donc, si vous êtes sur un Serveur IIS appelle LISA sur le SPRINGFIELD de réseau, vous devez accorder l'accès à SPRINGFIELD\LISA$ à votre base de données. Remarque le signe dollar, ce qui dénote de votre utilisateur d'un compte d'ordinateur et pas une personne réelle.
Si votre serveur de base de données et votre serveur IIS sont un et le même, d'accorder l'accès au compte "NT AUTHORITY\NETWORK SERVICE". C'est le nom du compte. Et cela devrait fonctionner.
Non, tant que vous gérez correctement, c'est une bonne solution. Dommage que vous n'avez pas de DBA qui pourrait le faire pour vous si vous n'avez pas accès!
Le truc, c'est que c'est mon ordinateur portable que j'utilise pour hobby de développement. Je suis le seul accès au site, et il n'est accessible qu'en local - je veux juste cela pour être en mesure de tester le truc dans un environnement dans lequel il est vraiment censé être en mesure d'exécuter.
OriginalL'auteur Dave Markle
Vous exécutez un non-anglais Système d'Exploitation?
Pour certaines raisons, le nom de compte "NT Authority\Network Service" a été traduit dans d'autres langues.
Malheureusement, beaucoup de programmes ont le nom de compte codé en dur le nom anglais, et de ne pas trouver le Service de Réseau lors de l'exécution à l'étranger des versions de Windows.
Je ne parle pas du message d'erreur: quelqu'un de chez MS a décidé de traduire le compte des noms de connexion - problème est que certains logiciels a les anglais, les noms de compte codé en dur, et ne fonctionne pas sur les versions localisées de Windows. Rappelez-vous, ils n'ont pas juste de traduire les noms d'affichage, ils ont traduit les noms de connexion, qui sont utilisés par le logiciel pour identifier les comptes.
OriginalL'auteur Sam