建立傳遞查詢

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

您可以使用 Access 做為前端應用程式,然後連結至後端伺服器中的資料表,例如 SQL Server。 根據預設,大部分的查詢都會在本機的 Access ACE 資料庫引擎中執行。 在某些情況下,Access 可以在 SQL Server 上遠端執行查詢,視 SQL 語法和其他因素而定。 如需詳細資訊,請參閱 重新探索的 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. [SQL 檢視] 中輸入您的查詢。
    注意:Access SQL 和 SQL Server TSQL 之間有很重要的差異,尤其是在語法、函數名稱和函數引數方面。 如需詳細資訊,請參閱比較 Access SQL 和 SQL Server TSQL
    秘訣先在 SQL Server Management Studio 中建置 TSQL 查詢,然後將 SQL 複製並貼上到 SQL 檢視。 這可確保查詢具有正確的語法。 如果您無法方便地存取 SQL Server 資料庫,請考慮在桌面上安裝最多支援 10 GB 的 Microsoft SQL Server Express 版本,這是一種免費且更容易執行和檢查移轉的方式。

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

    • 傳回記錄 有些 SQL 陳述式會傳回記錄,例如 SELECT,有些則不會,例如 UPDATE。 如果查詢傳回記錄,請將此屬性設定為 Yes;如果查詢未傳回記錄,請將此屬性設定為 [否]。
      備註 傳遞查詢可以傳回多個結果集,但在資料工作表、表單、報表或資料錄集變數中,只會使用第一個結果集。 若要擷取多個結果集,請使用 make 資料表查詢 ,如下列範例所示:

      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 秒。 可能會因網路流量或資料庫伺服器的大量使用而出現延遲。

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

  3. 輸入完查詢後,請選取 [設計>執行]。 您的查詢會傳送到資料庫伺服器進行處理。

另請參閱

Transact-SQL 參考

使用 Transact-SQL 查詢