SQL Server XML 一括読み込みオブジェクト モデル (SQLXML 4.0)
Microsoft SQL Server XML 一括読み込みオブジェクト モデルは、SQLXMLBulkLoad オブジェクトで構成されます。 このオブジェクトでは、次のメソッドとプロパティがサポートされます。
メソッド
- Execute
パラメーターとして渡されるスキーマ ファイルとデータ ファイル (またはストリーム) を使用して、データの一括読み込みを行います。
プロパティ
BulkLoad
一括読み込みを実行するかどうかを指定します。 このプロパティは、スキーマだけを生成し (後の SchemaGen、SGDropTables、および SGUseID プロパティを参照)、一括読み込みを行わない場合に便利です。 このプロパティはブール値をとります。 このプロパティを TRUE に設定すると、XML 一括読み込みが行われます。 FALSE に設定すると、XML 一括読み込みは行われません。既定値は TRUE です。
CheckConstraints
一括読み込みで列にデータを挿入するときに、列に指定されている制約 (列間の主キー/外部キーのリレーションシップによる制約など) をチェックするかどうかを指定します。 このプロパティはブール値をとります。このプロパティを TRUE に設定すると、XML 一括読み込みで挿入される値ごとに制約がチェックされ、制約違反があるとエラーが発生します。
注 このプロパティを FALSE のままにしておくには、対象テーブルの ALTER TABLE 権限が必要です。 詳細については、「ALTER TABLE (Transact-SQL)」を参照してください。
既定値は FALSE です。 FALSE に設定した場合、XML 一括読み込みでは挿入操作中、制約が無視されます。 現在の実装では、マッピング スキーマの主キーと外部キーのリレーションシップの順序でテーブルを定義する必要があります。 つまり、主キーが設定されているテーブルは、外部キーが設定されている対応テーブルよりも前に定義する必要があります。このように定義しない場合、XML 一括読み込みは失敗します。
ID 配布が実行されている場合は、このオプションは適用されず、制約チェックはオンのままになる点に注意してください。 これに該当するのは、親が ID フィールドで、その値が生成時に子に指定されるリレーションシップが定義されており、かつ KeepIdentity=False の場合です。
ConnectionCommand
XML 一括読み込みで使用する既存の接続オブジェクト (ADO や ICommand コマンド オブジェクトなど) を指定します。 ConnectionString プロパティを使用して接続文字列を指定する代わりに、ConnectionCommand プロパティを使用することもできます。 ConnectionCommand を使用する場合は、Transaction プロパティを TRUE に設定する必要があります。ConnectionString プロパティと ConnectionCommand プロパティの両方を使用すると、XML 一括読み込みでは新しく指定したプロパティが使用されます。
既定値は NULL です。
ConnectionString
データベース インスタンスへの接続の確立に必要な情報を提供する OLE DB 接続文字列を指定します。 ConnectionString プロパティと ConnectionCommand プロパティの両方を使用すると、XML 一括読み込みでは新しく指定したプロパティが使用されます。既定値は NULL です。
ErrorLogFile
XML 一括読み込みでエラーとメッセージを記録するログ ファイル名を指定します。 既定値は空文字列で、この場合ログは記録されません。FireTriggers
一括読み込み操作中に、対象テーブルに定義されているトリガーを起動するかどうかを指定します。 既定値は FALSE です。TRUE に設定した場合は、挿入操作中、トリガーが通常どおり起動されます。
注 このプロパティを FALSE のままにしておくには、対象テーブルの ALTER TABLE 権限が必要です。 詳細については、「ALTER TABLE (Transact-SQL)」を参照してください。
ID 配布が実行されている場合は、このオプションは適用されず、トリガーはオンのままになる点に注意してください。 これに該当するのは、親が ID フィールドで、その値が生成時に子に指定されるリレーションシップが定義されており、かつ KeepIdentity=False の場合です。
ForceTableLock
XML 一括読み込みでデータをコピーするテーブルを、一括読み込み中にロックするかどうかを指定します。 このプロパティはブール値をとります。 このプロパティを TRUE に設定すると、XML 一括読み込み中、テーブルはロックされます。 FALSE に設定すると、XML 一括読み込みでテーブルにレコードが挿入されるときに、毎回テーブルがロックされます。既定値は FALSE です。
IgnoreDuplicateKeys
キー列に挿入される値が重複している場合の動作を指定します。 このプロパティが TRUE に設定されている状態で、キー列に挿入されるレコードの値が重複している場合、SQL Server ではそのレコードは挿入されません。 しかし、その後に続くレコードは挿入されるので、一括読み込み操作は失敗しません。 このプロパティを FALSE に設定すると、キー列に挿入される値が重複している場合、一括読み込みは失敗します。IgnoreDuplicateKeys プロパティを TRUE に設定すると、テーブルに挿入されるレコードごとに、COMMIT ステートメントが発行されます。 このため、パフォーマンスが低下します。 トランザクション動作はファイルを使用して実行されるため、Transaction プロパティが FALSE に設定されている場合にのみ、このプロパティを TRUE に設定できます。
既定値は FALSE です。
KeepIdentity
ソース ファイルにある ID 型列値の取り扱い方法を指定します。 このプロパティはブール値をとります。 このプロパティを TRUE に設定すると、XML 一括読み込みでは、ソース ファイルで指定されている値が ID 列に割り当てられます。 このプロパティを FALSE に設定すると、一括読み込み操作では、ソースで指定されている ID 列値は無視されます。 この場合、ID 列値は SQL Server によって割り当てられます。SQL Server で生成される値が ID 列に格納される場合に、一括読み込みでこの列を参照する外部キー列も読み込まれる場合、一括読み込みではこれらの ID 値が外部キー列に適切に割り当てられます。
このプロパティの値は、一括読み込みの対象となるすべての列に適用されます。 既定値は TRUE です。
注 このプロパティを TRUE のままにしておくには、対象テーブルの ALTER TABLE 権限が必要です。 この権限がない場合は、値を FALSE に設定する必要があります。 詳細については、「ALTER TABLE (Transact-SQL)」を参照してください。
KeepNulls
列に対応する属性または子要素が XML ドキュメントに見つからない場合に、その列に使用する値を指定します。 このプロパティはブール値をとります。 このプロパティを TRUE に設定すると、XML 一括読み込みでは列に NULL 値が割り当てられます。 サーバーで列の既定値が設定されている場合でも、その既定値は割り当てられません。 このプロパティの値は、一括読み込みの対象となるすべての列に適用されます。既定値は FALSE です。
SchemaGen
一括読み込み操作の前に、必要なテーブルを作成するかどうかを指定します。 このプロパティはブール値をとります。 このプロパティを TRUE に設定すると、マッピング スキーマで指定されているテーブルが作成されます (データベースは存在している必要があります)。 データベースに 1 つ以上のテーブルが存在する場合は、SGDropTables プロパティによって、既に存在するテーブルを削除し再作成するかどうかが決定されます。SchemaGen プロパティの既定値は FALSE です。 SchemaGen では、新しく作成されたテーブル上に PRIMARY KEY 制約は作成されません。 ただし、マッピング スキーマに一致する sql:relationship 注釈と sql:key-fields 注釈が見つかり、キー フィールドが単一列で構成されている場合、SchemaGen ではデータベースに FOREIGN KEY 制約が作成されます。
SchemaGen プロパティを TRUE に設定した場合、XML 一括読み込みでは次の操作が実行されます。
要素名と属性名から、必要なテーブルを作成します。 このため、スキーマでは要素と属性に SQL Server の予約語を使用しないでください。
sql:overflow-field で指定されている列のオーバーフロー データを xml データ型形式で返します。
SGDropTables
既存のテーブルを削除し、再作成するかどうかを指定します。 このプロパティは、SchemaGen プロパティを TRUE に設定した場合に使用します。 SGDropTables が FALSE の場合、既存のテーブルは保持されます。 このプロパティが TRUE の場合、既存のテーブルは削除され再作成されます。既定値は FALSE です。
SGUseID
id 型として指定されているマッピング スキーマの属性を、テーブル作成時の PRIMARY KEY 制約の作成に使用できるかどうかを指定します。 このプロパティは、SchemaGen プロパティを TRUE に設定した場合に使用します。 SGUseID が TRUE の場合は、SchemaGen ユーティリティによって、dt:type="id" が指定された属性が主キー列として使用され、テーブル作成時に適切な PRIMARY KEY 制約が追加されます。既定値は FALSE です。
TempFilePath
XML 一括読み込みで、読み込んだデータ用の一時ファイルを作成するファイル パスを指定します。 このプロパティは、Transaction プロパティを TRUE に設定した場合にのみ有用です。XML 一括読み込みで使用される SQL Server アカウントからは、このパスにアクセスできる必要があります。 このプロパティを設定しない場合、XML 一括読み込みでは、TEMP 環境変数で指定された場所に一時ファイルが格納されます。Transaction
一括読み込みをトランザクションとして実行するよう指定します。この場合、一括読み込みが失敗するとロールバックが実行されます。 このプロパティはブール値をとります。 このプロパティを TRUE に設定すると、一括読み込みはトランザクション コンテキストで実行されます。 TempFilePath プロパティは、Transaction が TRUE に設定されている場合にのみ有用です。注 バイナリ データ (バイナリにマップされる bin.hex、bin.base64 XML データ型、SQL Server image データ型など) を読み込む場合は、Transaction プロパティを FALSE に設定する必要があります。
既定値は FALSE です。
XMLFragment
ソース データが XML フラグメントであるかどうかを指定します。 XML フラグメントとは、最上位 (ルート) 要素のない、単一の XML ドキュメントです。 このプロパティはブール値をとります。 ソース ファイルに XML フラグメントが含まれている場合は、このプロパティを TRUE に設定する必要があります。既定値は FALSE です。