型指定DataSetに対して未登録の列が自動的に追加される。

型指定DataSetに対して、DataAdapterを使用して、Fillメソッドを実行した場合に、SQL文の結果に型指定で指定していない列が存在した場合、この列は自動的に追加される。
結果、型指定DataSetなのに、指定外の列が生成される。

これを回避するには、DataAdapterのMissingSchemaAction プロパティを設定する。

using (SqlDataAdapter da = new SqlDataAdapter(cmd)) {
    da.MissingSchemaAction = MissingSchemaAction.Ignore;

MissingMappingAction プロパティはあまり関係ないらしい。

DataRowのコピー時に、同じ型指定のDataRowのはずが、列の数が違ってコピーできない状態が発生した。
犯人はここ。ここはデフォルトでAddなので、型指定にない列が帰ってくると自動的に追加されていたのだ。