2009-07-29 9 views
1

Je tente de me connecter à un fichier de base de données Access 2000 (* .mdb), mais je n'ai que quelques problèmes. Voici le scénario jusqu'à présent,Problèmes de connexion à un fichier MDB Access via PowerShell

1) Google comment se connecter à une base de données en utilisant PowerShell qui a abouti à ce qui suit comme une ligne de base de code source.

$adOpenStatic = 3 
$adLockOptimistic = 3 

$objConnection = New-Object -comobject ADODB.Connection 
$objRecordset = New-Object -comobject ADODB.Recordset 

$objConnection.Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = c:\scripts\sample.mdb") 
$objRecordset.Open("Select * from TotalSales", $objConnection,$adOpenStatic,$adLockOptimistic) 

$objRecordset.MoveFirst() 

do 
{ $objRecordset.Fields.Item("EmployeeName").Value; $objRecordset.MoveNext() } 
until ($objRecordset.EOF -eq $True) 

$objRecordset.Close() 
$objConnection.Close() 

2) Je remplacé la source de données pour le chemin complet de ma base de données, a été présenté avec ce qui suit.

Exception calling "Open" with "5" argument(s): "Record(s) cannot be read; no read permission on 'RqRequirements'." 
At :line:23 char:18 
+ $objRecordset.Open <<<< ("Select * from RqRequirements", $objConnectionCsdscDB,$adOpenStatic,$adLockOptimistic) 

3) Comme il est une base de données Rational RequisitePro j'ai besoin presque jamais modifier directement la base de données, mais viennent pour savoir si nous devons modifier la base de données directe que nous devons émettre la commande suivante en tant que lien sur Windows Desktop:

"C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE" /wrkgrp C:\Program Files\Rational\RequisitePro\bin\rqprodb.mda" /user "xxxxxxx" /pwd "yyyyy" 

4) Prendre le script ci-dessus et en changeant légèrement je les suivantes:

$adOpenStatic  = 3 
$adLockOptimistic = 3 

$objConnectionRqProDB = New-Object -comobject ADODB.Connection 
$objConnectionCsdscDB = New-Object -comobject ADODB.Connection 
$objRecordset   = New-Object -comobject ADODB.Recordset 

$cnnStringRqProDB = "Provider = Microsoft.Jet.OLEDB.4.0;" + 
        "Data Source = C:\\Program Files\\Rational\\RequisitePro\\bin\\rqprodb.mda;" + 
        "UID=requisite admin;" + 
        "PWD=multiuser" 

$cnnStringCsdscDB = "Provider = Microsoft.Jet.OLEDB.4.0;" + 
        "Data Source = J:\\TestPowerShell\\Rational.MDB" 

$objConnectionRqProDB.Connectionstring = $cnnStringRqProDB 
$objConnectionRqProDB.Open() 

$objConnectionCsdscDB.Connectionstring = $cnnStringCsdscDB 
$objConnectionCsdscDB.Open() 

$objRecordset.Open("Select * from RqRequirements", $objConnectionCsdscDB,$adOpenStatic,$adLockOptimistic) 

$objRecordset.Close() 
$objConnection.Close() 

5) Quand je lance ce script, je reçois le Follo erreur de l'aile:

Exception calling "Open" with "4" argument(s): "Could not find installable ISAM." 
At :line:17 char:26 
+ $objConnectionRqProDB.Open <<<<() 

6) Je l'ai fait quelques recherches et a trouvé le lien suivant, http://support.microsoft.com/kb/209805, et j'ai vérifié le registre et l'entrée est présente pour

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Jet \ 4.0 \ Engines \ Paradox win32 = C: \ WINDOWS \ system32 \ mspbde40.dll

ce fichier se trouve dans% SYSTEM32% \

Remarque, je n'ai pas accès installé sur mon système (cela pourrait être un problème sous-jacent ? Je ne sais pas, mais je ne pense pas que je me sers de l'ADO)

Questions:

1) Comment puis-je inclure l'option «/wrkgrp » dans la chaîne de connexion dans le script?

2) En supposant que l'absence de l'option "/ wrkgrp" dans la chaîne de connexion n'est pas mon problème ce qui pourrait être problème?

3) Access doit-il être installé sur le système pour que cela fonctionne?

Merci, Mark

Répondre

2

Vous ne devriez pas avoir accès installé.

Vous essayez d'ouvrir la base de données de groupe de travail (mdw) séparément - ne faites pas cela.

Vous devez spécifier la base de données de groupe de travail dans la chaîne de connexion

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb; 
Jet OLEDB:System Database=system.mdw;User ID=myUsername;Password=myPassword; 

Donc, dans votre cas, utilisez les touches suivantes:

$cnnStringRqProDB = "Provider = Microsoft.Jet.OLEDB.4.0;" + 
        "Data Source = J:\\TestPowerShell\\Rational.MDB;" + 
        "Jet OLEDB:System Database = C:\\Program Files\\Rational\\RequisitePro\\bin\\rqprodb.mda;" + 
        "User ID=requisite admin;" + 
        "Password=multiuser" 

$objConnectionCsdscDB.Connectionstring = $cnnStringCsdscDB 
$objConnectionCsdscDB.Open() 
+0

DJ Remercier, plaçant la base de données du système dans la chaîne de connexion travaillé. En note, il manque le '+' sur la ligne 'Source de données'. – lordhog

Questions connexes