分散クエリを使用する場合のガイドライン
更新 : 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 に設定されていると、更新操作または挿入操作ではラージ オブジェクト データ型を含む列 (text、ntext、または 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)
ヘルプおよび情報
変更履歴
リリース | 履歴 |
---|---|
2006 年 7 月 17 日 |
|