簡體   English   中英

Access ODBC 無法從超過 255 列的 SQL 表中提取

[英]Access ODBC can't pull from SQL table with more than 255 columns

我有一個數據庫,我正在嘗試使用 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)

訪問查詢,如

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 直通查詢

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

這將返回所需的列,但傳遞查詢總是產生不可更新的記錄集。

(2) 如果您需要一個可更新的記錄集,那么您需要在 SQL Server 上創建一個視圖

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

然后在 Access 中創建一個指向視圖的 ODBC 鏈接表。 創建 ODBC 鏈接表時,請記住告訴 Access 主鍵列是什么,否則鏈接表將無法更新。

超級容易解決我的問題

  1. 點擊開始菜單
  2. 搜索“ODBC”
  3. 單擊“系統 DSN”選項卡
  4. 突出顯示 odbc 並選擇“配置”
  5. 單擊“高級”選項卡
  6. 將最大列數調整為 3000(或某個高數)

謝謝戈德! 這解決了從 Access 中更新大表的問題。

如果有人感興趣,我在 sql server 中創建了一個視圖,只選擇我想要的字段,然后我將它鏈接到 Access 中。

現在,在此鏈接中進行的任何更新都會反映到原始表中。 所以很容易做到這一點運行查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM