建立傳遞查詢

套用到
Microsoft 365 Access Access 2024 Access 2021 Access 2019 Access 2016

你可以把 Access 當作前端應用程式使用,然後連結到後端伺服器中的資料表,例如 SQL Server。 預設情況下,大多數查詢會在 Access ACE 資料庫引擎中本地執行。 在某些情況下,Access 可以根據 SQL 語法及其他因素,遠端在 SQL Server 上執行查詢。 欲了解更多資訊,請參閱 Rediscovered JET 與 ODBC 白皮書中的「JET 資料庫引擎版本 3.0:ODBC 連接性」。

不過通常你會想在資料庫伺服器上明確執行查詢。 這麼做是為了提升效能:資料庫伺服器的處理能力比桌上型電腦強,而且你能透過網路連線回傳較小的資料。 要在資料庫伺服器上執行查詢,請使用直通查詢,這是 Transact SQL (TSQL) 語句,透過 ODBC 連接字串 連接至 SQL Server。 例如,你可以傳遞 SELECT 語句,將資料回傳到資料表、表單、報告或清單控制項,執行等同於資料操作語言 (DML) 語句) (動作查詢,呼叫儲存程序,並 (資料定義語言執行管理任務, (DDL) 語句) 。

直通查詢的結果為唯讀。 若要直接編輯資料表或表單中的資料,請建立一個連結到索引檢視的表格。 欲了解更多資訊,請參閱建立索引檢視。

  1. 連接到伺服器資料庫。
    欲了解更多關於連結至 SQL Server 的資訊,請參閱「匯入或連結至 SQL Server 資料庫中的資料」及「連結至或匯入 Azure SQL Server 資料庫的資料」。
  2. 選擇 建立>查詢設計
  3. 如有需要,請關閉 「新增資料表 」對話框 (「存取工具」中的 「顯示資料表 」。
  4. 選擇 設計>直通
    Access 會隱藏查詢設計網格,並顯示 SQL 檢視
  5. 如果查詢屬性表沒有出現,按 F4 顯示它。
  6. 在屬性表中點選 ODBC Connect Str 屬性框,然後執行以下其中一項:

要取得連接字串:

  1. 在導覽面板中,右鍵點擊連結到所需資料來源的資料表,並選擇 連結表管理器
  2. 連結表管理器 對話框中,選擇資料來源的勾選框,然後選擇 編輯
  3. 編輯連結 對話框中,複製連線 字串 框中的文字。
  1. 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,且是免費且更方便的遷移檢查方式。

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

    • Returns 唱片公司 有些 SQL 陳述式會回傳記錄,例如 SELECT,有些則不會,例如 UPDATE。 如果查詢回傳紀錄,請將此屬性設為 「是」;如果查詢沒有回傳紀錄,則將此屬性設為 No
      直通查詢可以回傳多個結果集,但在資料表、表單、報告或記錄集變數中,只會使用第一個結果集。 要取得多個結果集,請使用如下範例所示 的 make table 查詢

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

      你必須使用星號 (*) ,因為每個結果集可能有不同的欄位。 每個結果集都儲存在獨立的表格中,並相應地在本地資料表名稱後加上編號。 例如,若返回三個結果集,資料表名稱為: <本地資料表名稱>、 <本地資料表名稱>1、 <本地資料表名稱>2。

    • 日誌訊息 指定是否要從 Access 訊息資料表中回傳 SQL 資料庫的訊息。 表格名稱的格式為 username – nn,其中 username 是當前使用者的登入名稱,nn 是從 00 開始的數字。

    • ODBC 暫停 指定在查詢執行時,等待多久才會發生逾時錯誤的秒數。 預設值為 60 秒。 可能會因網路流量或資料庫伺服器使用頻繁而延遲。

    • Max 唱片公司 指定要回傳的最大紀錄數量。 你可能系統資源有限,或只想用少量資料來測試結果。

  3. 輸入完查詢表後,選擇 設計>執行。 你的查詢會被送往資料庫伺服器進行處理。

另請參閱

Transact-SQL 參考

使用 Transact-SQL 查詢