SQL Server 2012 ne peut pas se connecter avec un compte d'ordinateur

11

Nous migrons un site IIS / SQL Server de 2008 à 2012 et j'ai un problème d'authentification. Nous utilisons l'authentification Windows pour authentifier en tant que DOMAIN\COMPUTER$, mais cela ne fonctionne pas, ce qui donne une erreur disant:

La connexion a échoué pour l'utilisateur «DOMAIN \ COMPUTER $». Motif: impossible de trouver une connexion correspondant au nom fourni. [CLIENT: <machine locale>]

J'ai vérifié que le compte existe, et même supprimé et recréé

create login "DOMAIN\COMPUTER$" from windows

Si je recommence, j'obtiens la réponse:

Msg 15025, niveau 16, état 2, ligne 1
Le principal du serveur 'DOMAIN \ COMPUTER $' existe déjà.

( DOMAIN\COMPUTERremplace le vrai domaine et le nom de l'ordinateur)

Il semble donc que le site interroge le serveur SQL, mais le serveur SQL ne regarde pas très attentivement ses connexions.

Qu'est-ce que j'ai raté?

alt
la source

Réponses:

6

Ce n'est probablement pas du tout le DOMAINE \ ordinateur $. Ce message est connu pour être trompeur. Je pense que tout ce qu'il veut, c'est que "NT AUTHORITY \ NETWORK SERVICE" soit autorisé à accéder au serveur. Ouvrez les propriétés de connexion SQL Server et ajoutez ce compte. Vérifiez également quel utilisateur est utilisé dans IIS pour usurper l'identité d'un utilisateur anonyme, il doit s'agir de "IUSR_ServerName". Accordez également l'accès à cet utilisateur

cha
la source
1
"NT AUTHORITY \ NETWORK SERVICE" dispose déjà d'un accès au serveur. IIS emprunte l'identité de "IUSR" (pas de _ServerName). Pour autant que je sache, ce n'est pas un vrai compte - et je ne peux pas autoriser l'accès à "DOMAIN \ IUSR" ou "DOMAIN \ IUSR" car ces comptes n'existent pas.
alt
Cela a fonctionné pour moi pour un service Windows
user919426
Après avoir lutté une longue matinée avec l'assistant de copie de base de données et l'assistant d'exportation-importation SQL, c'est la seule réponse qui l'a fait fonctionner. Merci!
Zalakain
6

@Cha et @alt ont tous deux de bons indices - le message d'erreur est trompeur et Application Pool Identityest impliqué (enfin, du moins c'était dans mon cas).

Si le pool d'applications de votre application IIS utilise Application Pool Identity, le compte d'utilisateur que vous devez ajouter à SQL Server est IIS APPPOOL\your_app_pool_name. Remarque: n'utilisez pas le Search...bouton dans les propriétés de connexion pour trouver cet utilisateur - il le trouvera, mais le remplacera par celui MACHINE_NAME\your_app_pool_namequi ne fonctionnera pas - saisissez simplement IIS APPPOOL\your_app_pool_namele nom de connexion.

Jakub Januszkiewicz
la source
1
Cela ne fonctionne que lorsque votre serveur Web et votre serveur SQL sont dans la même boîte.
maxisam
1
Bien sûr, les comptes d'identité du pool d'applications sont locaux sur la machine AFAIK, vous ne pouvez donc pas les utiliser sur d'autres machines. Dans ce cas, utilisez simplement l'authentification SQL Server ou exécutez l'application Web sur un compte de domaine.
Jakub Januszkiewicz
3

Ce problème doit être traité différemment selon la configuration du serveur.

  1. Le serveur SQL et IIS sont sur la même machine.

    une. changer l'identité du pool d'applications enNetwork Service

    b. ajoutez NT AUTHORITY\NETWORK SERVICEà votre connexion au serveur SQL

  2. Le serveur SQL et IIS sont sur une machine différente.

    une. ajoutez un compte DOMAIN\computer-name$d'ordinateur,, à votre connexion au serveur SQL.

    b. l'identité du pool d'applications resteApplication Pool Identity

maxisam
la source
1

J'ai réussi à le faire fonctionner en modifiant le site dans IIS pour utiliser le Application Pool Identity, puis en changeant l'identité du pool d'applications en Network Service. N'hésitez pas à commenter tout problème de sécurité que cela pourrait soulever.

alt
la source
Pourquoi ne pas utiliser un utilisateur de domaine pour le pool d'applications car vous avez AD en place ou encore mieux un compte de service géré?
Spörri
0

J'obtenais la même erreur. Erreur d'ouverture de session: 18456, gravité: 14, état: 5. La désactivation de CEIP à partir de SQL Server et des rapports d'utilisation a résolu le problème pour moi.

Ayan Mullick
la source
1
Pourriez-vous développer un peu votre réponse? Pouvez-vous citer des ressources pertinentes? Votre réponse est apparue comme de faible qualité en raison de sa longueur et de son contenu et pourrait être supprimée à cause de cela.
John aka hot2use