ASP classique Microsoft OLE DB Provider for ODBC Drivers erreur '80004005'
Je suis en train de travailler sur la migration d'une application à partir d'un IIS 6 de IIS 7.5 et je suis en cours d'exécution dans le plus étrange question:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
/Complaints/Login.asp, line 175
Voici le code autour de la ligne 175:
myConn = getDatabaseConnection()
set rs = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM Users WHERE lower(Login) = lower('" & uId & "') and Active = 1"
rs.Open strSQL, myConn, 3, 3
Rien de spécial qui se passe ici...
voici la db méthode:
function getDatabaseConnection()
Dim strConnection
strConnection = "Driver={SQL Server};Server=server.domain.com;Database=cc;uid=acc;pwd=xxx;"
Set GetDatabaseConnection = Server.CreateObject("ADODB.Connection")
GetDatabaseConnection.CommandTimeout = 60
GetDatabaseConnection.ConnectionTimeout = 60
GetDatabaseConnection.CursorLocation = 3
GetDatabaseConnection.Open strConnection
end function
Cela semble fonctionner dans un semblable asp classique de l'application s'exécutant dans le même pool d'applications (.NET 1.1)
J'ai essayé: le copier-coller l'autre application du code, à l'aide de la chaîne de connexion à la place de la db méthode (jette 500 de cours), la modification des pools d'applications, google, & comme un autre coup de pied, il fonctionne très bien sur un serveur IIS 6.
J'ai pris un coup d'oeil à OLE DB Provider for ODBC Drivers Erreur "80004005' & ma chaîne de connexion semble correcte & mon ASP.NET 1.1 pool d'application peut fonctionner qu'en mode 32 bits. La Dsn mis en place sur le serveur précédent ne sont pas pertinente.
J'ai la demande de travail sur IIS 5 sur le domaine A et IIS 6 sur Un domaine, mais cette 7.5 serveur est sur le domaine B. Donc je suis en utilisant le nom de domaine complet. Je n'ai pas fait n'importe quel autre domaine spécifique des changements si. Le système utilise la méthode ci-dessus pour authentifier les utilisateurs.
Edit: aussi essayé
strConnection = "dsn=my32bitdsn;uid=xxx;pwd=xxx;"
J'ai hérité de ce code et je suis donc, avec l'ASP classique, quelqu'un peut-il aider?
Code mis à jour:
Dim strConnection, oConn
'get status
set rs = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM Users WHERE lower(Login) = lower('" & uId & "') and Active = 1"
'rs.Open strSQL, myConn, 3, 3
strConnection = "Driver={SQL Server};Server=server.domain.com;Database=cc;uid=acc;pwd=xxx;"
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.CommandTimeout = 60
oConn.ConnectionTimeout = 60
oConn.CursorLocation = 3
oConn.Open strConnection
Set rs = oConn.Execute(strSQL)
- D'autres choses que j'ai essayé: mise en place de 32 bits de la DSN et de préciser qu', l'activation de 32 bits mode dans IIS via applicationpoolDefaults. Je suis un pilote de l'incompatibilité d'une erreur sur le dsn que je fixe par activation de 32 bits uniquement pour revenir à l'original message d'erreur 🙁
- Yep, tous les champs sont affectés.
- Je vous assure que ce n'est pas la question.
- les commentaires doivent encore être pertinent à la question.
- Si je vous ai dit que je suis une vidange d'huile, qui ne serait pas pertinente pour la question.
- l'esprit en se concentrant sur la réponse à la question? Je ne suis pas en posant cette question à débat SQL meilleures pratiques sur le code que j'ai hérité avec vous.
- Vous êtes libre de refuser des conseils sur SQL meilleures pratiques; ne me dites pas que ce n'est pas pertinent à votre question.
- À l'aide de colonnes au nom à la place de * ne résoudra pas un problème de pilote ODBC.
- Bien évidemment, il ne sera pas. Vous avez besoin d'effectuer un rituel Païen pour que cela fonctionne. J'espère que quelqu'un sera en mesure de répondre à votre question ci-dessous.
Vous devez vous connecter pour publier un commentaire.
Peut-être quelques changements "cosmétiques", mais qui pourrait résoudre ce problème:
J'ai toujours peur qu'en utilisant le nom de la fonction directement entraînera des appels inutiles ou des résultats bizarres ai donc utilisé de la façon décrite ci-dessus.
Deuxième chose, c'est que vous attribuez à la connexion en tant que non objet en n'ayant pas "Ensemble", ce qui pourrait causer bizarre et des problèmes imprévus. Modifiez la ligne:
Nous espérons que l'un des ci-dessus permettra de résoudre ce problème bizarre.
.Open()
de la connexion. Dans ce cas, essayez de changer la ligne:Set rs = myConn.Execute(strSQL)
et voir si cela résout le problème.Je ne sais pas si vous avez déjà résolu cette erreur, mais si vous voulez essayer et obtenir de jeter un lisible erreur, vous pouvez essayer cela comme faisant partie de la chaîne de connexion.
Votre chaîne de connexion dit que le serveur de base de données est server.domain.com ou avez-vous juste la place qu'il y a à remplacer votre information d'entreprise?
Donner à ceci un essai: