2012-07-05 3 views
1

Je travaille sur un service Web C#.Impossible de se connecter à SQL Server 2008 dans .Net

J'ai déployé un service Web qui fonctionne parfaitement sur mon système local mais lorsque j'essaie d'exécuter le même service sur mon serveur dédié virtuel, il renvoie une erreur.

Ceci est ma chaîne de connexion

Data Source = <serverinstance>\\SQLEXPRESS; Initial Catalog = DomainTable; User ID= <serverinstance>\\admin; Password = <Windows_Login_Password> 

Avant cela, j'utilisais cette chaîne de connexion

Data Source=<serverinstance>\\SQLEXPRESS; Initial Catalog=DomainTable; Integrated Security=SSPI"; 

Aucun d'entre eux travaille pour moi. s'il vous plaît aider son vraiment très important

+0

Est la base de données en cours d'exécution sur la même machine que IIS? –

+1

Veuillez inclure des détails * réels *, tels que ce que vous avez pour '' (est-ce un nom de serveur, localhost, une adresse IP, etc.) et quoi "renvoyer une erreur" signifie - par exemple inclure l'erreur * réelle –

+0

oui sqlserver 2008 est installé sur la même machine – Pirate

Répondre

2

Source de données = instance serveur \ SQLEXPRESS;
-----------------------------------------^un seul slash ici

Assurez-vous également que le serveur distant peut voir tout ce que vous avez référencé comme <serverinstance>. Vous pouvez avoir ceci comme localhost mais votre serveur Web ne considère pas votre machine comme étant localhost. Il peut également ne pas être en mesure de l'atteindre par son nom, en particulier s'il se trouve dans un domaine différent.

Si vous essayez d'utiliser l'authentification Windows, il n'y a aucun moyen sur la terre, vous devriez utiliser:

ID utilisateur = ServerInstance \ admin; Mot de passe = Windows_Login_Password

Wow, jamais coder en dur un mot de passe Windows partout. Si vous souhaitez utiliser l'authentification SQL, configurez-le. Sinon, vous devriez utiliser ceci à la place de l'ID utilisateur/mot de passe:

Persist Security Info = true;

Et de s'assurer que l'utilisateur IIS a été autorisé à accéder à votre serveur SQL.

+0

la chaîne entière est entre guillemets donc j'utilise double barre oblique inverse – Pirate

+0

Il ya des façons de ne pas avoir besoin de faire cela en C#. –

0

Essayez juste;

"data source=.\\SQLEXPRESS;Integrated Security=SSPI;initial catalog=DomainTable" 

je crois que le nom d'utilisateur/mot de passe ne sont généralement requis pour les connexions à distance, et vous devez les mettre en place pour le DB spécifié. La chaîne de connexion ci-dessus devrait vous permettre de démarrer sur l'instance en cours d'exécution de sqlexpress sur la machine locale si vous n'avez pas besoin d'informations d'identification de connexion.

Modifier

Si vous utilisez IIS pour héberger, voici un morceau d'un article récent je l'ai fait pour le déploiement et la mise en place de pools App pour travailler avec SQL Express 2008. Même si vous ne l'utilisez IIS , vous devrez toujours faire quelque chose comme ceci pour obtenir votre environnement d'hébergement mis en place correctement avec SQL Server.

Étape 1 Créer une base de données d'ouverture de session pour l'IIS USER

Dans la section de sécurité dans MS SQL Server, ont besoin pour les utilisateurs de clic droit et votre IIS APPPOOL (IIS APPPOOL \ AppPoolName, créé dans la première section, étape . 2) .Vérifier sur dp de réponse ici pour plus d'étape par étapes - Add IIS 7 AppPool Identities as SQL Server Logons

étape 2 Permission de réglage pour l'utilisateur IIS sur le db

Faites un clic droit sur le nom de la base de données et cliquez sur propriétés. Dans la section des permissions, ajoutez votre utilisateur APPPOOL que vous venez de créer, assurez-vous de lui donner les autorisations Execute \ Select nécessaires.

Remarque: Le site Web1 doit également exécuter les fonctions Execute, Select, Delete et Insert. Website2 utilise également ce pool d'applications, ce qu'il ne devrait pas être parce que nous n'avons pas besoin de permettre à l'utilisateur d'avoir ce genre de fonctionnalité depuis l'application trimdynamics. Nous pourrions séparer les pools d'applications afin que notre dynamique de découpe IIS USRS obtienne uniquement les autorisations Exécuter et Sélectionner.

Si cela ne fonctionne pas, il est difficile de ce qui est dire va vraiment sans connaissance concrète de votre structure d'hébergement, car il y a plein de ce gotch-ya lors du déploiement du développement à l'environnement de production :(

+0

désolé chris j'ai essayé cela aussi mais il ne fonctionne pas :( – Pirate

+1

@Pirate DEFINE "ne fonctionne pas" s'il vous plaît. Par exemple ajouter le *** message d'erreur réel *** à votre question! –

+0

@Pirate vient de remarquer que vous l'avez déployé sur votre Cela vous cause beaucoup de maux de tête pour la première fois, vous devez penser à ceci: Maintenant, IIS/certains services hébergent votre site web, pas votre machine locale, les choses sont un peu différentes. fonctionne très bien parce que votre exécution des requêtes en tant qu'utilisateur actuel, qui a des privilèges.Lorsque vous hébergez votre application, par exemple dans IIS, vous savez qu'un pool IIS est en attente d'exécuter les requêtes sur votre base de données, qui ne dispose pas automatiquement d'autorisations. Etes-vous en train de recevoir la permission de l'utilisateur erro – clamchoda

Questions connexes