2009-05-09 8 views
0

J'ai un serveur SQL 2008 qui exécute trois instances. Chaque instance reçoit une adresse IP unique et écoute sur le port 1433. Seul TCPIP est activé.Connexions ASP à l'instance nommée SQL 2008

Toutes mes applications ASP.Net connectent à l'aide avec succès l'adresse IP, avec une chaîne de connexion similaire à:

User ID=SQLUser;Password=userpass;Database=TestDB;Data Source=sqlserver 

Mes applications ASP ne se connectent à l'instance par défaut; Je reçois cette erreur chaque fois que je tente de me connecter à une autre instance:

Microsoft OLE DB Provider for ODBC Drivers error '80004005' <br /> 
[Microsoft][ODBC SQL Server Driver][DBNETLIB]Invalid connection. 

Les chaînes de connexion ASP sont comme ceci:

driver={SQL Server};server=sqlserver;uid=SqlUser; pwd=userpass; database=TestDB 

J'ai désactivé Pare-feu Windows à la fois IIS et SQL Server pour l'instant . Il n'y a pas d'autres pare-feu entre le serveur SQL et le serveur IIS. SQL Browser est en cours d'exécution sur SQL Server. J'ai essayé de modifier les chaînes de connexion ASP pour inclure le nom d'instance, comme:

driver={SQL Server};server=sqlserver/InstanceName;uid=SqlUser;pwd=userpass;database=TestDB 

mais j'obtiens la même erreur.

Est-il possible de se connecter à une instance nommée à partir d'ASP?

Répondre

0

Essayez de fournir l'adresse IP. Je suspecte que quand il résout le nom du serveur il obtient l'adresse IP de l'instance par défaut. Puisque vous les avez liés à des adresses IP séparées, vous devez fournir l'adresse IP ou, si l'adresse IP est convertie en un nom d'hôte différent, utiliser le nom d'hôte associé à cette adresse IP. Je ne pense pas que vous aurez besoin de spécifier le nom de l'instance, mais je ne suis pas sûr. Nous avons deux instances sur notre serveur de production - l'une pour les applications Web publiques, l'autre pour les applications Web non publiques. Chacun est lié à une adresse IP distincte, mais les adresses sont inversées en fonction de différents noms. Je dois seulement utiliser le bon nom de serveur lors de la connexion à chaque instance.

+0

En plus d'adresse IP spécifier le port aussi, comme « 192.168.0.1,1433 » - aide parfois. Sans port, le client SQl peut essayer d'utiliser le serveur RPC pour trouver le port correct et cela ne semble pas toujours fonctionner avec les instances. – Arvo

+0

J'ai essayé d'utiliser l'adresse IP et l'adresse IP plus le port, mais je reçois toujours la même erreur. –

1

EDIT: Les noms Sql Server ne sont pas UNC;)

Essayer avec un \ au lieu d'un/comme:

mysqlserver\myinstance 

Personnellement, j'essaie toujours d'inclure le port. Il permet d'économiser un aller-retour où le client essaie de trouver le numéro de port:

server=mysqlserver\myinstance,1433;uid=SqlUser;pwd=userpass;database=TestDB 

Intéressant, est synonyme de base de données catalogue initial?

+0

"est-ce que la base de données est un synonyme de catalogue initial" - Oui. –

+0

Les noms SQL Server sont-ils UNC? -1 jusqu'à ce que vous le prouviez pour tcp/ip – gbn

+0

Droit, ressemble à \\ ne fonctionne que pour les tuyaux nommés. C'est toujours backslash pour l'instance cependant. – Andomar

1

Ceci est une supposition pure.

Vous utilisez peut-être le fournisseur SQL OLE DB lors de la connexion au serveur à partir d'ASP.net.
Considérant que, vous utilisez OLEDB pour ODBC quand il s'agit d'ASP (ou il choisit ce type de connexion pour choisir cela en fonction de votre chaîne de connexion).

Est-ce le cas?
Si tel est le cas, cela peut poser un problème avec la chaîne de connexion. Voir www.connectionstrings.com par exemple sur la chaîne de connexion SQL Server.

Si vous utilisez ODBC, assurez-vous que vous avez le bon ensemble des pilotes installés afin de se connecter à SQL Server .

Cela aide-t-il?

EDIT: Je pense que vous devrez changer votre chaîne de connexion à l'intérieur ASP lorsque vous utilisez ADO pour utiliser cette http://www.connectionstrings.com/sql-server-2008#20

+0

Je pense que vous êtes sur quelque chose ici. Si j'utilise le pilote SQLOLEDB pour ASP, comme: Provider = SQLOLEDB; Source de données = SqlServer; Catalogue initial = TestDB; ID utilisateur = SQLUser; Password = userpass " Je n'ai aucun problème pour me connecter au serveur en utilisant juste le nom d'hôte (pas d'instance, pas de port) J'ai essayé de modifier mes chaînes de connexion par le lien que vous avez fourni, sans succès. Pilotes ODBC sur le serveur IIS. –

Questions connexes