【问题标题】:Access ODBC can't pull from SQL table with more than 255 columnsAccess ODBC 无法从超过 255 列的 SQL 表中提取
【发布时间】:2015-04-03 01:42:19
【问题描述】:

我有一个数据库,我正尝试使用 ODBC 从 Access 中查询。我需要读取的表有 304 列,而我只能在查询生成器中看到前 255 列。我在别处读到,解决方案是手动编写 SQL 查询,而不是依赖 Builder,所以我尝试了这个查询:

SELECT [Field1], [Field304] 
FROM [ODBC;DRIVER=SQL Server;UID=USERNAME;SERVER=ServerAddress].[TabelName];

这个查询返回 Field1,正如我所期望的那样,但仍然不会得到 Field304。我究竟做错了什么?

【问题讨论】:

  • 访问将表和查询都限制为 255 列。看来你很不走运,除非有人你做一些事情,比如在源数据库中创建视图来分割它从数据库中获取的列数..
  • 您可以在 SQL Server 中创建一个视图——只传递您需要的字段,并链接到该视图。
  • 在 SQL 服务器中添加视图有效。感谢您的帮助。

标签: sql ms-access odbc ms-access-2013


【解决方案1】:

您在Access中遇到了ODBC链接表的限制,以及类似的查询

SELECT ... FROM [ODBC;...].[tableName];

实际上只是“动态”创建临时 ODBC 链接表的一种方式。

当 Access 创建 ODBC 链接表时,它会查询远程数据库以获取列信息。 Access 中用于保存表信息的结构限制为 255 列,因此只有远程表的前 255 列可用。例如,对于 SQL Server 表

CREATE TABLE manyColumns (
id int identity(1,1) primary key,
intCol002 int,
intCol003 int,
intCol004 int,
...
intCol255 int,
intCol256 int,
intCol257 int)

类似的访问查询

SELECT [id], [intCol002], [intCol255] 
FROM [ODBC;DRIVER={SQL Server};SERVER=.\SQLEXPRESS;DATABASE=myDb].[manyColumns];

可以,但是这个查询

SELECT [id], [intCol002], [intCol256] 
FROM [ODBC;DRIVER={SQL Server};SERVER=.\SQLEXPRESS;DATABASE=myDb].[manyColumns];

将提示输入“参数”[intCol256],因为 Access 不知道 SQL Server 表中存在这样的列。

有两种方法可以解决此问题:

(1)如果只需要阅读Access中的信息可以创建一个Accesspass-through query

SELECT [id], [intCol002], [intCol256] 
FROM [manyColumns];

这将返回所需的列,但传递查询总是产生不可更新的记录集。

(2) 如果您需要一个可更新的记录集,那么您需要在 SQL Server 上创建一个视图

CREATE VIEW selectedColumns AS
SELECT [id], [intCol002], [intCol256] 
FROM [manyColumns];

然后在 Access 中创建一个指向视图的 ODBC 链接表。创建 ODBC 链接表时记得告诉 Access 主键列是什么,否则链接表将无法更新。

【讨论】:

    【解决方案2】:

    超级简单的解决方法

    1. 点击开始菜单
    2. 搜索“ODBC”
    3. 点击“系统 DSN”标签
    4. 突出显示 odbc 并选择“配置”
    5. 点击“高级”标签
    6. 将最大列数调整为 3000(或更高的数字)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-11
      • 2014-09-12
      • 2012-12-20
      • 1970-01-01
      相关资源
      最近更新 更多