我正在尝试对C#中的Access 2007数据库运行以下查询:
OleDbCommand command = new OleDbCommand(); command.Connection = connect; command.CommandText = "SELECT * FROM MSysQueries"; OleDbDataReader reader = command.ExecuteReader();
我得到了错误:
记录无法读取;没有对“ MSysQueries”的读取权限。
是否有可能做到这一点?如果可以,怎么办?我的印象是可以这样做,但我不确定。
正如在类似的问题提到这里,以绕过
错误,您需要使用以下命令授予默认用户“ Admin”的SELECT特权
GRANT SELECT ON MSysQueries TO Admin
您可以从.NET OleDbConnection执行该SQL语句,但是为此,您需要在连接字符串中指定默认工作组信息文件(System.mdw)的位置,如下所示:
myConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" + @"Data Source=C:\Users\Public\Database1.accdb;" + @"Jet OLEDB:System database=C:\Users\Gord\AppData\Roaming\Microsoft\Access\System.mdw;";
可以通过读取值从Windows注册表中检索.mdw文件的路径。
Key: HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Access\Access Connectivity Engine\Engines Value: SystemDB
(14.0上面键中的值用于Access2010。其他版本的Access将具有不同的值。)
14.0