Я пытаюсь подключиться к файлу базы данных Access 2000 (* .mdb), но у меня немного проблем. Вот сценарий до сих пор,
1) Погуглил, как подключиться к базе данных, используя powershell, что привело к следующему в качестве исходного кода исходного кода.
$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) Я заменил источник данных на полный путь к моей базе данных, после чего получил следующее:
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) Поскольку это база данных Rational RequisitePro, мне почти никогда не нужно редактировать базу данных напрямую, но мы узнаем, нужно ли редактировать базу данных напрямую, нам нужно ввести следующую команду в качестве ссылки на рабочем столе Windows:
"C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE" /wrkgrp C:\Program Files\Rational\RequisitePro\bin\rqprodb.mda" /user "xxxxxxx" /pwd "yyyyy"
4) Взяв указанный выше сценарий и слегка его изменив, я получаю следующее:
$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) Когда я запускаю этот скрипт, я получаю следующую ошибку:
Exception calling "Open" with "4" argument(s): "Could not find installable ISAM."
At :line:17 char:26
+ $objConnectionRqProDB.Open <<<< ()
6) Я провел поиск и нашел следующую ссылку, http://support.microsoft.com/kb/209805,, и проверил реестр, и запись присутствует для
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Jet \ 4.0 \ Engines \ Paradox
win32 = C: \ WINDOWS \ system32 \ mspbde40.dll
этот файл находится в% SYSTEM32% \
Обратите внимание, у меня не установлен Access в моей системе (может ли это быть основной проблемой? Я не уверен, но я так не думаю, так как использую ADO)
Вопросы:
1) Как включить параметр "/ wrkgrp" в строку подключения в сценарии?
2) При условии отсутствия опции "/ wrkgrp" в строке подключения, это не моя проблема, в чем может быть проблема?
3) Нужно ли установить Access в системе, чтобы это работало?
Спасибо, Марк