Share via


SQL Server XML 一括読み込みオブジェクト モデル (SQLXML 4.0)

Microsoft SQL Server XML 一括読み込みオブジェクト モデルは、SQLXMLBulkLoad オブジェクトで構成されます。このオブジェクトでは、次のメソッドとプロパティがサポートされます。

メソッド

  • Execute
    パラメータとして渡されるスキーマ ファイルとデータ ファイル (またはストリーム) を使用して、データの一括読み込みを行います。

プロパティ

  • BulkLoad
    一括読み込みを実行するかどうかを指定します。このプロパティは、スキーマだけを生成し (後の SchemaGenSGDropTables、および SGUseID プロパティを参照)、一括読み込みを行わない場合に便利です。このプロパティはブール値をとります。このプロパティを TRUE に設定すると、XML 一括読み込みが行われます。FALSE に設定すると、XML 一括読み込みは行われません。

    既定値は TRUE です。

  • CheckConstraints
    一括読み込みで列にデータを挿入するときに、列に指定されている制約 (列間の主キー/外部キーのリレーションシップによる制約など) をチェックするかどうかを指定します。このプロパティはブール値をとります。

    このプロパティを TRUE に設定すると、XML 一括読み込みで挿入される値ごとに制約がチェックされ、制約違反があるとエラーが発生します。

    ms171769.note(ja-jp,SQL.90).gifメモ :
    このプロパティを 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 に設定した場合は、挿入操作中、トリガが通常どおり起動されます。

    ms171769.note(ja-jp,SQL.90).gifメモ :
    このプロパティを 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 です。

    ms171769.note(ja-jp,SQL.90).gifメモ :
    このプロパティを 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 に設定されている場合にのみ有用です。

    ms171769.note(ja-jp,SQL.90).gifメモ :
    バイナリ データ (バイナリにマップされる bin.hex、bin.base64 XML データ型、SQL Server image データ型など) を読み込む場合は、Transaction プロパティを FALSE に設定する必要があります。

    既定値は FALSE です。

  • XMLFragment
    ソース データが XML フラグメントであるかどうかを指定します。XML フラグメントとは、最上位 (ルート) 要素のない、単一の XML ドキュメントです。このプロパティはブール値をとります。ソース ファイルに XML フラグメントが含まれている場合は、このプロパティを TRUE に設定する必要があります。

    既定値は FALSE です。