Share via


分散クエリを使用する場合のガイドライン

更新 : 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 の各ステートメントでは、リモート テーブル内の列を 1 つの部分または 4 つの部分から構成されるテーブル名で修飾できません。リモート テーブルでは 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 ステートメントを使用できます。詳細については、「INSERT を使用するための OLE DB プロバイダの要件」を参照してください。
  • 分散クエリを使用して timestamp 列に NULL 定数を挿入することはできません。
  • 分散クエリでは、$IDENTITY と $ROWGUIDCOL はサポートされていません。リモート テーブルの ID 列には、明示的な値は挿入できません。
  • プロバイダが、指定されたテーブルに対する OLE DB インターフェイス要件を満たしている場合、リモート テーブルに対して UPDATE ステートメントと DELETE ステートメントを使用できます。詳細については、「UPDATE と DELETE を使用するための OLE DB プロバイダの要件」を参照してください。
  • リモート テーブルを更新するための条件をプロバイダが満たしている場合は、UPDATE ステートメントまたは DELETE ステートメント (UPDATE または DELETE remote_table WHERE CURRENT OF cursor_name) でリモート テーブルを指定するときに分散クエリ上で定義したカーソルによって、リモート テーブルの更新または削除ができます。詳細については、「分散クエリでのカーソルの使用」を参照してください。
  • READTEXT、WRITETEXT、および UPDATETEXT の各ステートメントは、リモート テーブルに対してはサポートされません。
  • SQL Server プロセスの外でプロバイダがインスタンス化されている場合、プロバイダ オプション AllowInProcess が 0 に設定されていると、更新操作または挿入操作ではラージ オブジェクト データ型を含む列 (textntext、または image 型) を参照できません。詳細については、「分散クエリ用の OLE DB プロバイダの構成」を参照してください。
  • CREATE ステートメント、ALTER ステートメント、または DROP ステートメントなどのデータ定義言語ステートメントを、リンク サーバーに対して使用できません。
  • パススルー コマンドを指定する EXECUTE ステートメントは、リンク サーバーに対してサポートされます。このステートメントを使用して、SQL Server 以外のプロバイダに対してストアド プロシージャを実行できます。
  • その他のデータベースレベルの操作またはステートメントをリンク サーバーで行うことはできません。

その他のガイドライン

その他の制限事項とガイドラインは次のとおりです。

  • STATIC カーソルまたは INSENSITIVE カーソルはリモート テーブルを参照できます。OLE DB プロバイダが特定の必要条件を満たしている場合、KEYSET カーソルはリモート テーブルを参照できます。これらの要件の詳細については、「キーセット ドリブン カーソルを使用するための OLE DB プロバイダの要件」を参照してください。その他の種類のカーソルはリモート テーブルを参照できません。
  • ストアド プロシージャは、SQL Server データ ソースに対してのみサポートされます。
  • 接続で分散クエリを実行するには、その接続の ANSI_NULLS オプションと ANSI_WARNINGS オプションを前もってオンにしておく必要があります。詳細については、「SET ANSI_DEFAULTS (Transact-SQL)」を参照してください。

参照

概念

分散クエリでのトランザクションの使用
分散クエリでのデータ型のマッピング
分散クエリ

その他の技術情報

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

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 7 月 17 日

新しい内容 :
  • xml 列を含むテーブルにはクエリを実行できないことを説明に追加しました。