使用分散式查詢的指導方針

更新: 2006 年 7 月 17 日

只要提供者可支援所需的 OLE DB 介面,則本主題中所提及的每個 Transact-SQL 陳述式類別都可使用。

Transact-SQL 陳述式

以下是透過連結伺服器型名稱或特定名稱來存取的遠端資料表上,所允許的 Transact-SQL 語言子集清單:

  • 允許符合 SELECT select_list FROM 子句 WHERE 子句標準形式的所有查詢。當 new_table_name 參考遠端資料表時,不允許使用 SELECT 的 INTO new_table_name 子句。
  • 在 SELECT、INSERT、UPDATE 以及 DELETE 陳述式中,遠端資料表內的資料行不能和單一部分或四個部分的資料表名稱相同。FROM 子句中的遠端資料表應使用別名,而且該別名應用來限定資料行名稱。
  • 具有 xml 資料行的資料表無法進行查詢,即使查詢存取資料表的非 xml 資料行,都不行。
  • 將遠端資料表的大型物件 (LOB) 資料行指定成 SELECT 陳述式之 select_list 中的一個項目時,SELECT 陳述式不能包含 ORDER BY 子句。
  • IS NULL 與 IS NOT NULL 述詞不能參考遠端資料表內的 LOB 資料行。
  • 當分散式查詢也擁有 WHERE 子句時,GROUP BY ALL 不允許用於該查詢內。未指定 ALL 的 GROUP BY 仍可支援。
  • 只要提供者符合 INSERT 陳述式的 OLE DB 需求,INSERT 陳述式就可用於遠端資料表。如需詳細資訊,請參閱<OLE DB 提供者的 INSERT 需求>。
  • NULL 常數不能透過分散式查詢插入至 timestamp 資料行。
  • 分散式查詢不支援 $IDENTITY 及 $ROWGUIDCOL。外顯值不能插入遠端資料表中的識別資料行。
  • 提供者若符合指定資料表上的 OLE DB 介面需求,即可在遠端資料表上使用 UPDATE 與 DELETE 陳述式。如需詳細資訊,請參閱<OLE DB 提供者的 UPDATE 與 DELETE 需求>。
  • 若提供者符合遠端資料表的可更新條件,則您可在 UPDATE 或 DELETE 陳述式中指定遠端資料表時 (UPDATE 或 DELETE remote_table WHERE CURRENT OF cursor_name),透過分散式查詢上所定義的資料指標來更新或刪除遠端資料表。如需詳細資訊,請參閱<以分散式查詢使用資料指標>。
  • READTEXT、WRITETEXT 與 UPDATETEXT 陳述式並不支援用於遠端資料表。
  • 若提供者在 SQL Server 處理序外部被具現化 (提供者選項 AllowInProcess 為 0),就無法在更新或插入作業中參考具有大型物件資料類型 (例如 textntextimage) 的資料行。如需詳細資訊,請參閱<設定分散式查詢的 OLE DB 提供者>。
  • 資料定義語言陳述式 (例如 CREATE、ALTER 或 DROP 陳述式) 不能用於連結伺服器上。
  • 連結伺服器可支援指定了傳遞命令的 EXECUTE 陳述式。此陳述式可用來對 SQL Server 以外的提供者執行預存程序。
  • 沒有其他資料庫層級的作業或陳述式可用於連結伺服器上。

其他指導方針

以下是一些額外的限制和指導方針:

  • STATIC 或 INSENSITIVE 資料指標可參考遠端資料表。若 OLE DB provider 符合某些需求,KEYSET 資料指標將可參考遠端資料表。如需有關這些需求的詳細資訊,請參閱<OLE DB 提供者的索引鍵集導向資料指標需求>。沒有其他類型的資料指標可參考遠端資料表。
  • 預存程序只支援用於 SQL Server 資料來源。
  • 您必須先將連接的 ANSI_NULLS 與 ANSI_WARNINGS 選項設為 ON,該連接才能執行分散式查詢。如需詳細資訊,請參閱<SET ANSI_DEFAULTS (Transact-SQL)>。

請參閱

概念

使用分散式查詢的交易
資料類型對應和分散式查詢
分散式查詢

其他資源

SELECT (Transact-SQL)
EXECUTE (Transact-SQL)

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 7 月 17 日

新增內容:
  • 加入說明無法查詢含有 xml 資料行之資料表的內容。