2017-05-24 5 views
0

Je souhaite coder en dur les informations d'identification pour la connexion à une base de données Access.Informations d'identification de code dur dans la chaîne de connexion MS Access (protégé par mot de passe)

Ma chaîne de connexion ressemble actuellement

$strConn = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = $dbName; 

Et cela fonctionne très bien, mais je suis invité à entrer un « nom d'utilisateur » et « Mot de passe ». J'ai fait des recherches chaînes de connexion d'accès, mais je ne peux en trouver un qui comprend un mot de passe (non utilisateur)

$strConn = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=c:\App1\Your_Database_Name.mdb; Jet OLEDB:Database Password=Your_Password" 

J'ai essayé d'utiliser ce (ainsi que des combinaisons d'utilisateurs/nom d'utilisateur/uid etc) mais ne l'ai pas trouvé quoi que ce soit ça marche.

Voici la fenêtre qui est popping up (nom du service est automatiquement):

enter image description here

ressemble à ceci: Oracle ODBC Driver Connect always asking for password

Je crois qu'il a quelque chose à voir avec la base de données Access étant lié à une base de données Oracle. Est-ce que c'est hors de mes mains?

+0

Quelle est exactement votre situation de sécurité? Est-ce un fichier .mdb chiffré, un fichier .mdb sécurisé avec un fichier de groupe de travail ou un fichier .mdb? Y a-t-il des tables liées dans votre fichier .mdb? (Si oui, vous voulez probablement vous connecter directement à ces tables liées et non via Access). Pouvez-vous utiliser la base de données d'accès sans entrer d'informations de connexion et sans avoir cette invite? –

+0

Essayez-vous de lier une table Access à Oracle? J'essaierais l'inverse. Migrez la table vers Oracle et reliez-la à Access. – SunKnight0

+0

@ErikvonAsmuth Je ne suis pas sûr du type de .mdb. Je ne pense pas que ce soit sécurisé, parce que je ne suis pas invité pour les informations d'identification lorsque je l'ouvre. Cependant, il y a des tables liées. Quand je tente d'en ouvrir un, je suis présenté avec la même fenêtre 'Oracle ODBC Driver Connect' que ci-dessus. Comment puis-je accéder directement aux tables liées?Il est probablement utile de mentionner que cette base de données appartient à une grande entreprise et que j'ai peu de contrôle sur celle-ci, il serait donc très difficile pour moi de la restructurer comme le suggèrent certains commentaires. – Thomas

Répondre

2

Vous pouvez obtenir un accès direct à une table liée en utilisant la chaîne de connexion, et remplir l'utilisateur et mot de passe. Pour Oracle, la structure de la chaîne de connexion peut varier selon le fournisseur utilisé. Voir ConnectionStrings.com pour une liste d'options (l'option la plus probable est Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=myUsername; Password=myPassword;).

Vous pouvez obtenir la chaîne de connexion pour la table liée en interrogeant MSysObjects dans Microsoft Access:

SELECT MSysObjects.Connect 
FROM MSysObjects 
WHERE MSysObjects.Name="MyLinkedTableName"; 

Vous pouvez même changer la chaîne de connexion pour inclure votre nom d'utilisateur et mot de passe, si vous voulez (voir this answer) . Notez cependant que celui qui a lié les tables à Access à l'origine, a choisi de ne pas inclure de nom d'utilisateur et de mot de passe. L'inclusion d'un nom d'utilisateur et d'un mot de passe dans une base de données Access non sécurisée peut présenter un risque de sécurité. Notez également que si vous vous connectez directement à la base de données Oracle, vous devez référencer les noms de tables tels qu'ils sont définis dans la base de données Oracle et utiliser la variante SQL appropriée pour l'interroger.

0

Selon la page de référence à portée de main ConnectionStrings.com, passer User Id=<username> et Password=<password> comme si,

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;User Id=admin; 
Password=Pa$$w0rd; 
+0

C'était l'une des premières choses que j'ai essayé. Cela ne fonctionne pas pour une raison quelconque. – Thomas

+0

Alors que ConnectionStrings est généralement une bonne ressource, l'ID utilisateur est uniquement utilisé dans le cas d'une authentification de groupe de travail avec un fichier de groupe de travail, et dans ce cas vous devrez spécifier le fichier de groupe de travail: Provider = Microsoft.Jet.OLEDB.4.0; Source = C: \ mydatabase.mdb; Jet OLEDB: base de données système = system.mdw; ID utilisateur = myUsername; Password = myPassword; '. Cependant, je ne pense pas que ce soit le cas ici. –