我正在尝试连接到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 \微软\喷气\ 4.0 \发动机\悖论 的win32 = C:\窗口\ system32 \ mspbde40.dll
此文件位于%SYSTEM32%\
中注意,我的系统上没有安装Access(这可能是一个潜在的问题吗?我不确定,但我不这么认为,因为我使用的是ADO)
问题:
1)如何在脚本的连接字符串中包含“/ wrkgrp”选项?
2)假设连接字符串中缺少“/ wrkgrp”选项不是我的问题可能会出现什么问题?
3)是否需要在系统上安装Access以使其正常工作?
谢谢,Mark
答案 0 :(得分:2)
您不应该安装Access。
您正在尝试单独打开工作组数据库(mdw) - 不要这样做。
您需要在连接字符串
中指定工作组数据库Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;
Jet OLEDB:System Database=system.mdw;User ID=myUsername;Password=myPassword;
因此,在您的情况下,请使用以下内容:
$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()