11

Stagingusingという名前のスキーマのテーブルにデータを挿入する必要がありますSqlBulkCopy

DestinationTableNameAPI では、プロパティを使用してターゲット テーブル名を設定することしかできないようです。

どうすればこれを達成できますか? 出来ますか?

4

1 に答える 1

17

API は宛先スキーマを設定するための明示的なインターフェイスを提供しませんが、実際には次のように、2 部または 3 部の修飾テーブル名をDestinationTableNameプロパティに詰め込むことができます。

b.DestinationTableName = string.Format("[{0}].[{1}]", schemaName, tableName);

また

b.DestinationTableName =
    string.Format("[{0}].[{1}].[{2}]", databaseName, schemaName, tableName);

BULK INSERTが常に完全修飾テーブル名をサポートしていることを考えると、これらの個別のコンポーネントが API に組み込まれなかったのは大きな見落としのように思えます。

さらに、DestinationTableName単にBULK INSERTステートメントに出力されるように見えるため、このプロパティは SQL インジェクションに対して脆弱である可能性があります。そのため、ある時点でユーザーからこの情報を取得する場合は、この操作を実行する前に入力をサニタイズしてください。

于 2010-12-02T16:42:51.083 に答える