【问题标题】:can we list all tables in msaccess database using sql?我们可以使用 sql 列出 ms access 数据库中的所有表吗?
【发布时间】:2011-02-07 10:09:44
【问题描述】:

我们可以使用 sql 找到 msaccess 中的所有表吗?

就像我们在 sqlserver 中所做的那样

select * from sys.tables  

在sqlite中

SELECT * FROM sqlite_master where type='table' 

【问题讨论】:

    标签: sql database ms-access


    【解决方案1】:

    使用MSysObjects

    SELECT * FROM MSysObjects WHERE Type=1 AND Flags=0
    

    【讨论】:

    • 抛出此错误:OLE DB provider "MSDASQL" for linked server "TEST" returned message "[Microsoft][ODBC Microsoft Access Driver] Record(s) cannot be read; no read permission on 'MSysObjects'.". 我将sa 映射到Admin。获得结果需要什么?
    • 刚找到这个:social.msdn.microsoft.com/Forums/sqlserver/en-US/…“因为MSysObjects是Access中的系统表,所以Admin用户没有读取其中数据的权限。”
    【解决方案2】:

    Ms Access 有几个系统表,默认情况下,这些表在表列表中是隐藏的。你可以给他们看。

    在 Ms Access 2007 中右键单击表格列表并选择 Navigation Options。在表格底部,您会找到Show System Objects 复选框。检查它,系统表将显示在表列表中。它们都以MSys开头。
    或者,可以从应用程序菜单激活选项表单 - 单击按钮 Access options -> 选择 Current Database 并有 Navigation Options 按钮。

    现在您可以使用 MsAccess 工具检查所有系统表的结构和内容并生成查询。

    正如亚历克斯所回答的,表格信息在MSysObjects

    【讨论】:

      【解决方案3】:

      以下查询帮助我确定了从 MS Access 到 C# 和 SQL Server 的重新设计/迁移范围。

      注意:结合Alex K.KTys 提供的答案。
      在这里发布的信念是它对其他人(或我自己,如果我必须再次这样做)有用

      SELECT
        SWITCH (
          [type]=-32764,'Report' ,
          [type]  =  1, 'Table, local' ,
          [type]  =  3, 'obj Containers' ,
          [type]  =  4, 'Table, link odbc' ,
          [type]  =  5, 'Query' ,
          [type]  =  6, 'Table, link access' ,
          [type]  =  8, 'SubDataSheets' ,
          TRUE, [type]
        ) AS [type name (or #)]
        , name AS [Table Name]
      FROM
        MSysObjects 
      ORDER BY 
        2, 3
      


      来自 KTys 的注意警告(型号可能会发生变化)
      在select子句中添加, *可以查看其他字段(如connect);他们对我没有帮助。

      使用 MS Access 2013 创建/测试

      【讨论】:

        【解决方案4】:

        对于 Access 2013,我使用过

        SELECT name FROM MSysObjects WHERE type = 4

        【讨论】:

          【解决方案5】:

          This discussion gives 类型值列表。请注意,MS 不保证版本之间的值相同。

          Type    TypeDesc
          -32768  Form
          -32766  Macro
          -32764  Reports
          -32761  Module
          -32758  Users
          -32757  Database Document
          -32756  Data Access Pages
          1   Table - Local Access Tables
          2   Access Object - Database
          3   Access Object - Containers
          4   Table - Linked ODBC Tables
          5   Queries
          6   Table - Linked Access Tables
          8   SubDataSheets
          

          【讨论】:

            【解决方案6】:
            SELECT name FROM MSysObjects where database <> ''
            

            使用此查询获取所有链接表的名称

            【讨论】:

              猜你喜欢
              • 2020-12-12
              • 1970-01-01
              • 2012-03-31
              • 2011-07-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-01-05
              • 2016-04-02
              相关资源
              最近更新 更多