[英]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 主鍵列是什么,否則鏈接表將無法更新。
超級容易解決我的問題
謝謝戈德! 這解決了從 Access 中更新大表的問題。
如果有人感興趣,我在 sql server 中創建了一個視圖,只選擇我想要的字段,然后我將它鏈接到 Access 中。
現在,在此鏈接中進行的任何更新都會反映到原始表中。 所以很容易做到這一點運行查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.