2009-09-06 13 views
2

J'ai fait un peu juste de la programmation mysql php, mais je suis assez nouveau pour asp/accès, etc.ms Déplacement accès au site chassés du serveur sql à jabry.com - problèmes de chaîne de connexion

Ce sera soit incroyablement facile ou impossible!

RÉSUMÉ:

Je suis en train de transférer une application Web à partir d'un réseau d'entreprise à un hébergeur externe pour le test et ne sais pas comment connecter les pages à la base de données sur le nouveau serveur.

CONTEXTE:

J'ai hérité d'un site Web axé sur la base de données (MS Access) à partir d'un serveur d'entreprise et on m'a demandé de le démonter et de le documenter afin qu'il n'y ait pas un seul point de problème d'échec avec elle (la programmeur original a disparu il y a longtemps)

Il était hébergé sur un serveur ms sql sur le réseau d'entreprise.

J'ai obtenu un hébergement gratuit pour des sites Web accessibles sur www.jabry.com et j'espérais transférer l'ensemble de l'application là-bas et l'utiliser comme banc d'essai.

J'ai reçu une copie du fichier .mdb et l'ai importé dans jabry. Ma question est quelle connexion dois-je utiliser à la nouvelle base de données?

CECI EST LE MODE DE CONNEXION VIEUX:

dim objConn 
set objConn = Server.CreateObject("ADODB.Connection") 
objConn.Open "PROVIDER=SQLOLEDB;DATA SOURCE=UKNTHSQL900;UID=****User;PWD=***able8; DATABASE=PropertyRegister" 

Jabry vous recommandons d'utiliser: (!)

Dim Conn 
Set Conn = Server.CreateObject("ADODB.Connection") 
strConnection = "DRIVER=Microsoft Access Driver(*.mdb);DBQ=" & Server.MapPath("/USERNAME/db/yourdatabase.mdb") 
oConn.Open(strConnection) 

J'ai essayé différentes permutations pour obtenir ce travail, mais après quelques heures Je pensais que je devrais obtenir de l'aide. Puis-je utiliser une connexion sans ligne si un mot de passe est requis? Les deux types de serveurs sont-ils complètement incompatibles? S'il vous plaît aider!

Répondre

3

Ce site devrait vous aider: http://www.connectionstrings.com/access.

dbfile=Server.MapPath("..\YourDB.mdb") 
    Set objConn=Server.CreateObject("ADODB.Connection") 

    objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
       "Data Source=" & dbfile & ";Jet OLEDB:Database Password=PW" 

Le « .. \ » partie dépend, comme vous pouvez l'imaginer, sur lequel vous exécutez le code et la base de données où réside.

EDIT re Commentaire: Vous pouvez également utiliser ADO pour énumérer les tables et les requêtes contenues dans la base de données.

''cn = Your connection 
    Set rs = cn.OpenSchema(20, Array(Empty, Empty, Empty)) 

    Do While Not rs.EOF 
     '' This is vbscript/vba, as per comments, 
     '' change to rs("Table_Type") for ASP ... 
     If rs!TABLE_TYPE <> "View" Then 
     '' ... and this to rs("TABLE_NAME") ... 
     s = s & rs!TABLE_NAME & vbCrLf 
     End If 
     rs.MoveNext 
    Loop 

    rs.Close 
    Set rs = Nothing 

    '' ... and this to Response.Write s 
    MsgBox s 

Plus d'infos: http://msdn.microsoft.com/en-us/library/aa165325%28office.10%29.aspx

+0

Merci pour les réponses rapides. Utilisé à la fois vos suggestions et avez cette erreur: Erreur de moteur de base de données Microsoft JET '80040e37' Le moteur de base de données Microsoft Jet ne trouve pas la table d'entrée ou la requête 'Personne'. Assurez-vous qu'il existe et que son nom est orthographié correctement. Ce que je devine signifie qu'il a trouvé la base de données ok mais n'a pas pu trouver la table 'Person' nommée dans la requête. Ce bruit, n'est-ce pas? Maintenant, je suppose que je dois trouver quelqu'un avec un accès pour vérifier la base de données est ce qu'il était censé être! – Derek

+0

J'ai ajouté un peu. – Fionnuala

+0

@Derek: Après avoir essayé @ Remou suggérant de lister les tables avaialable, si la table Person est listée ici, vous pourriez vouloir publier votre SQL, et un peu du contexte du code. Si ce n'est pas répertorié, alors vous avez un problème entièrement différent, peut-être lié à des autorisations quelque part le long de la ligne (autorisations NTFS ou Jet ULS). –

0

Comment avez-vous obtenu le fichier .mdb? Si vous avez exporté à partir d'une base de données SQL Server vers un fichier de base de données Access, il peut ou peut ne pas fonctionner en fonction des fonctionnalités utilisées dans la base de données SQL Server. S'il a été utilisé uniquement pour le stockage "binaire", le fichier de base de données Access peut le faire, mais s'il utilise des fonctionnalités telles que des procédures stockées, des fonctions définies par l'utilisateur ou des déclencheurs, le fichier de base de données Access ne peut pas répliquer cela.

Si la base de données Access a un mot de passe défini, vous devez le spécifier dans la chaîne de connexion.Le nom d'utilisateur que vous spécifiez est « Admin », de sorte que la chaîne de connexion devrait ressembler à:

"Driver={Microsoft Access Driver (*.mdb)};Dbq=" & Server.MapPath("/YourUserName/db/TheDatabaseFileName.mdb") & ";Uid=Admin;Pwd=ThePassword;" 

Bien sûr, vous avez à remplacer les YourUserName, TheDatabaseFileName et ThePassword parties avec les valeurs réelles. Vous devez également avoir téléchargé la base de données dans le dossier db sur le serveur, qui est configuré avec les autorisations de fichier appropriées pour que l'application Web puisse écrire dans le fichier de base de données.

Ce que l'hôtel web a recommandé est un pilote ODBC, mais je préfère utiliser un pilote JET si possible. Vous pouvez trouver de nombreux exemples de chaînes de connexion pour Access ici: http://www.connectionstrings.com/access

+0

Merci pour les réponses rapides. Utilisé à la fois vos suggestions et avez cette erreur: Erreur de moteur de base de données Microsoft JET '80040e37' Le moteur de base de données Microsoft Jet ne trouve pas la table d'entrée ou la requête 'Personne'. Assurez-vous qu'il existe et que son nom est orthographié correctement. Ce que je devine signifie qu'il a trouvé la base de données ok mais n'a pas pu trouver la table 'Person' nommée dans la requête. Ce bruit, n'est-ce pas? Maintenant, je suppose que je dois trouver quelqu'un avec un accès pour vérifier la base de données est ce qu'il était censé être! – Derek

+0

@Guffa: que voulez-vous dire par "JET" pilote? Il n'y a vraiment pas une telle chose. Lorsque vous accédez à des données Jet/ACE à partir d'ASP ou de PHP ou de toute autre chose que Access, vous devez utiliser ODBC ou OLEDB. Il n'y a pas d'autres choix. OLEDB est le choix habituel avec ASP, mais peut-être que le site d'hébergement fournit des instructions de plus bas dénominateur commun pour tous les langages de script côté serveur, et peut-être que certains d'entre eux ne prennent pas en charge OLEDB. –

+0

@David: Par pilote JET, je veux dire le pilote nommé "Microsoft.Jet.OLEDB.4.0", donc c'est le pilote OleDb. – Guffa

3

Quel que soit le type de connexion, le dossier Jabry db n'autorise pas les requêtes pouvant être mises à jour. Ils doivent être montré un peu de pression afin qu'ils mettent leur travail à l'ordre!

Questions connexes