Applies ToAccess for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

您可以使用 Access 做為前端應用程式,然後連結至後端伺服器的數據表,例如 SQL Server。 根據預設,大部分查詢會在 Access ACE 資料庫引擎中本機執行。 在某些情況下,Access 會根據 SQL 語法和其他因素,在 SQL Server 上遠端執行查詢。 如需詳細資訊,請參閱 重新探索的 JET 和 ODBC 白皮書中的「JET 資料庫引擎版本 3.0:ODBC 連線能力」。

不過,通常您會想要在資料庫伺服器上明確地執行查詢。 這麼做有助於提升效能:資料庫伺服器的處理能力比桌面電腦更大,而且您可以透過網路連線傳回較小的數據子集。 若要在資料庫伺服器上執行查詢,請使用 傳遞查詢 ,即使用 ODBC 連線字串連線至 SQL Server 的 Transact SQL (TSQL) 語句。 例如,您可以傳遞 SELECT 語句,將數據傳回數據工作表、表單、報表或清單控制件、 (資料操作語言 (DML) 語句) 執行同等的動作查詢、呼叫儲存的程式,以及 () (資料定義語言 (DDL) 語句執行系統管理工作。

附註    傳遞查詢的結果是唯讀的。 若要直接編輯數據工作表或表單中的資料,請建立連結數據表至索引檢視。 如需詳細資訊,請參 閱建立索引檢視

  1. 線上到伺服器資料庫。

    如需連結至 SQL Server 的詳細資訊,請參閱 匯入或連結至 SQL Server 資料庫中的數據連結至或匯入 Azure SQL Server 資料庫中的數據

  2. 選取 [建立] > [查詢設計]。

  3. 如有需要,請關閉 [ 新增數據表 ] 對話框 (在Access中 顯示數據表 ]。

  4. 選取 [設計 >傳遞]

    Access 會隱藏查詢設計網格線,並顯示 [SQL 檢視]

  5. 如果查詢屬性表沒有出現,請按 F4 來顯示它。

  6. 在屬性表上,按兩下 [ODBC Connect Str 屬性 ] 方塊,然後執行下列其中一項操作:

    若要取得連線字串:

    1. 在導航窗格中,以滑鼠右鍵按兩下連結到所需數據源的數據表,然後選取 [鏈接的數據表管理員]

    2. 在 [ 鏈接的數據表管理員 ] 對話框中,選取數據源的複選框,然後選取 [編輯]

    3. 在 [ 編輯連結] 對話框中,複製 [連線 字串] 方塊 中的文字。

    1. 取 [組建 [建立器] 按鈕] 。

    2. 依照提示建立包含連線字串資訊的 DSN 檔案。 如需詳細步驟,請參閱 匯入或連結至 SQL Server 資料庫中的數據 ,以及 從 Azure SQL Server 資料庫連結至或匯入數據

    建立 DSN 檔案連線之後,ODBC 連線字串會內部儲存在 Access 資料庫中。 取得該字串複本的訣竅如下:

    1. 使用您要的 ODBC 連線,在 [導航窗格] 中尋找連結的數據表名稱。

    2. 按 Ctrl+G。 以開啟 VBA [立即存取] 視窗。

    3. 輸入:下列程式代碼:

      ?CurrentDb.TableDefs("<table name>").Connect

      但是> 步驟中的鏈接資料表名稱來取代 <數據表名稱。

    4. 將傳回的字串複製到 ODBC Connect Str 屬性。

  7. [SQL 檢視] 中輸入查詢。

    注意:Access SQL 與 SQL Server TSQL 之間有重要的差異,尤其是語法、函數名稱和函數自變數。 如需詳細資訊,請參閱比較 Access SQL 和 SQL Server TSQL

    祕訣    先在 SQL Server Management Studio 中建立 TSQL 查詢,然後將 SQL 複製並貼到 SQL 檢視中。 這可確保查詢具有正確的語法。 如果您沒有方便存取 SQL Server 資料庫的功能,請考慮在桌面上安裝 Microsoft SQL Server Express 版本 ,這個版本最多可支援 10 GB,而且可讓您輕鬆執行及檢查移轉作業。

  8. 考慮設定其他相關屬性:

    • 傳回記錄     某些 SQL 語句會傳回記錄,例如 SELECT,有些則不會傳回,例如 UPDATE。 如果查詢傳回記錄,請將此屬性設為 Yes;如果查詢未傳回記錄,請將此屬性設為 No

      附註    傳遞查詢可以傳回多個結果集,但在數據工作表、窗體、報表或 recordset 變數中,只會使用第一個結果集。 若要擷取多個結果集,請使用 製作數據表查詢 ,如下列範例所示:

      SELECT <pass-through query name>.*
      INTO <local table name>
      FROM < pass-through query name >

      您必須使用星號 (*) ,因為每個結果集可能有不同的數據行。 每個結果集都會儲存在個別的數據表中,而數位會隨之附加到本機數據表名稱。 例如,如果傳回三組結果,數據表名稱會是:<本機數據表名稱>,<本機數據表名稱>1,<本機數據表名稱>2。

    • 記錄訊息    指定是否要從 Access 郵件資料表中的 SQL 資料庫傳回郵件。 表格名稱的格式為用戶名稱 - nn,其中使用者名稱是目前使用者的登入名稱,而 nn 是從 00 開始的數位。

    • ODBC 逾時    指定執行查詢時發生逾時錯誤之前要等待的秒數。 預設值為 60 秒。 可能是因為網路流量或資料庫伺服器大量使用而導致延遲。

    • 最大記錄    指定要傳回的記錄數目上限。 系統資源可能有限,或者您想要只用少量數據來測試結果。

  9. 當您完成輸入查詢時,選取 [ 設計 > 執行]。 您的查詢會傳送至資料庫伺服器進行處理。

另請參閱

Transact-SQL Reference

使用 Transact-SQL 查詢

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。