gpt4 book ai didi

sql - Access ODBC 无法从超过 255 列的 SQL 表中提取

转载 作者:行者123 更新时间:2023-12-04 14:14:14 33 4
gpt4 key购买 nike

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

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

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

最佳答案

您遇到了 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)

一个 Access 查询,如

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中的信息可以创建一个Access pass-through query

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

这将返回所需的列,但传递查询始终生成不可更新的记录集。

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

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

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

关于sql - Access ODBC 无法从超过 255 列的 SQL 表中提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28306065/

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