gpt4 book ai didi

c# - 尝试在 C# 中使用 ODbc 从 MSysObjects 中读取数据,但没有权限错误

转载 作者:行者123 更新时间:2023-11-30 15:32:58 25 4
gpt4 key购买 nike

如标题所述:我试图从 Access 2010 数据库中的 MSysObjects 中读取数据,但出现异常,告诉我不允许从该表中读取数据。

我可以读出其他非 MSys 表。

SQL Query I am using: SELECT * FROM MSysObjects WHERE Type=1 AND Flags=0

连接字符串:

Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\mydatabase.accdb;Uid=Admin;Pwd=;

这是在 http://www.connectionstrings.com/access/ 上看到的标准连接 Sting

我怎样才能获得读取 MSysObjects 的权限?

最佳答案

由于您的数据库是 ACCDB 格式,这意味着数据库引擎会将 Admin 视为运行所有查询的用户。并且 Admin 没有 MSysObjects 的读取 (SELECT) 权限。

执行 DDL GRANT 语句以授予 Admin 该权限。

GRANT SELECT ON MSysObjects TO Admin;

我不确定该语句是否可以从 ODBC 连接执行。如果失败,请在 Access 应用程序 session 中打开数据库并在那里运行。

CurrentProject.Connection.Execute "GRANT SELECT ON MSysObjects TO Admin;"

请注意,语句必须 从 ADO 中执行。 CurrentProject.Connection是一个ADO对象,所以它的Execute方法可以成功运行语句。如果您尝试使用某些基于 DAO 的方法,例如 CurrentDb.Execute 或在查询设计器中将语句作为查询运行,它将失败并显示错误 3129,“无效的 SQL 语句;预期为“DELETE”、“INSERT”、“PROCEDURE”、“SELECT”或“UPDATE”。”

或者,如果您从 OleDb 连接到 Access 数据库运行它,它应该可以从 c# 运行。

关于c# - 尝试在 C# 中使用 ODbc 从 MSysObjects 中读取数据,但没有权限错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18121099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com