2009-05-27 7 views
4

Je suis en mesure d'exécuter une procédure stockée qui interroge directement un serveur lié, mais lorsque j'appelle le même sproc avec ASP.NET puis j'obtiens l'erreur suivante:Erreur "ASP.NET": L'accès au serveur distant est refusé car aucun mappage de connexion n'existe

Access to the remote server is denied because no login-mapping exists.

Lorsque je l'exécute via SSMS, je suis connecté via mon compte de domaine Windows.

Le site est ASP.NET avec l'authentification par formulaires sur IIS 7 et SQL 2008 sur ma machine locale.

Le serveur lié est configuré pour être configuré avec ce contexte de sécurité pour toutes les connexions.

Répondre

8

La connexion avec laquelle vous vous connectez à votre base de données initiale n'a pas accès à la base de données liée. Pourquoi n'utilisez-vous pas le compte que l'application emprunte pour se connecter à la base de données dans Management Studio et diagnostiquer le problème de cette façon? Si vous connaissez la connexion, créez-la simplement dans la base de données liée avec les autorisations requises.

Si la création d'une nouvelle connexion sur le serveur lié n'est pas une option, créez un mappage. Si vous lisez les petits caractères sur l'assistant, il est écrit "pour les connexions non définies dans la liste ci-dessus, les connexions seront établies" en utilisant le contexte de sécurité actuel. Ce qui signifie que si vous ne définissez pas de mappage, il utilisera les informations d'identification actuelles pour le lien.

+1

Merci, c'était certainement le moyen de diagnostiquer le problème. Le login se connectant à la base de données initiale nécessitait des privilèges supplémentaires (SysAdmin) pour appeler le serveur lié, mais "why" est une autre question. –

0

Deux paires de connexion/mot de passe sont requises. L'un est pour le serveur SQL qui a le serveur lié dessus. Le 2ème est pour la 'chose' à laquelle le serveur lié se connecte. E.g. Il existe une connexion ODBC sur la même machine Le serveur SQL est activé. Cette connexion ODBC se connecte à un ORACLE db. Pendant la configuration ODBC, un nom d'utilisateur et un mot de passe ont été requis: UN "XYZ", PWD "123". Lors de la création du serveur lié à cette connexion ODBC, il est nécessaire d'ajouter le nom d'utilisateur "XYZ" et le mot de passe "123". Ceci est fait sur la page de sécurité des propriétés du serveur lié. Cliquez sur "Ajouter" et dans la boîte de dialogue "Connexion locale" entrez le nom d'utilisateur du serveur SQL que l'application utilise pour se connecter au serveur SQL. Dans la case 'Remote User', entrez 'XYZ' et dans 'Remote Password' entrez '123'. Enfin, sélectionnez «Être fait en utilisant le contexte de sécurité actuel de la connexion».

Questions connexes