2010-08-08 4 views
0

J'ai un fichier simple qui essaie de se connecter à un database-Impossible de se connecter à la base de données, erreur 80040e21. Impossible de déboguer

<% 
Set RSDiscounts = Server.CreateObject("ADODB.Recordset") 
RSDiscounts.ActiveConnection = "Data Source=serverName;Initial Catalog=dbName.dbo;Integrated Security=True" 
%> 

Quand je lance, je GET-

error '80040e21' 
/filename.asp, line 3 

Recherche du code d'erreur ne permet pas. Ma meilleure estimation est que quelque chose est spécifié dans la chaîne de connexion qui ne devrait pas être là. Mais j'ai utilisé Visual Studio pour créer la chaîne, et cela se connecte très bien à la base de données.

Y at-il un moyen de savoir ce qui ne va pas? Cela semble impossible à déboguer.

Répondre

2

Je pense que le problème est avec votre chaîne de connexion - la chaîne que vous avez là est pour ADO.Net mais je ne crois pas que cela fonctionnera avec ADODB.

Essayez une chaîne de connexion comme ceci:

Driver={SQL Native Client};Server=myServerName\theInstanceName;Database=myDataBase; Trusted_Connection=Yes 

Ou ceci est une chaîne de connexion d'un de mes anciens projets avec ADODB (de asp classique)

Provider=SQLOLEDB.1;Initial Catalog=databaseName;Data Source=serverName;Trusted Connection=Yes 

Ce ne peut pas être 100% à droite, mais vous pouvez trouver plus de détails de toutes les chaînes de connexion que vous pourriez vouloir à l'excellent ConnectionStrings.com.

0

De la bibliothèque, j'ai écrit:

function SqlServerConnectionString(byval psDataSource, byval psCatalog, byval psUid, byval psPw) 
'______________________________________________________________________________ 
' 
' 'Sql Server Connection String' 
'______________________________________________________________________________ 

    dim x 
    x = "Provider=MSDASQL.1;Persist Security Info=False;User ID=" & psUid & ";Data Source=" & psDataSource & ";Initial Catalog=" & psCatalog 
    if psPw <> "" then 
     x = x & ";pwd=" & psPw 
    end if 
    SqlServerConnectionString = x 

end function 

Je routines similaires pour Firebird, Odbc et Access.

0

Le problème est que vous essayez de vous connecter à la base de données en utilisant l'utilisateur qui exécute le script. Si cela fonctionne dans IIS, ce sera quelque chose comme USR_.

2 alternatives.

  1. Donnez cet utilisateur accès à la base de données (je ne ferais pas celui-ci).
  2. Créez un utilisateur SQL et connectez-vous via ceci.

    PROVIDER = SQLOLEDB; Source de données = nom_serveur; Catalogue initial = nom_base.dbo; USER_ID = WebUser; PASSWORD = WebUserPassword;

Questions connexes