1

このADO.NETコマンドオブジェクトがあり、いくつかのパラメーターを設定して正常に実行できます。

_mergecommand.Parameters.Add(new SqlParameter( "values"、SqlDbType.Structured)); _mergecommand.Parameters["values"]。TypeName="strlist"; _mergecommand.Parameters["values"]。Direction=ParameterDirection.Input;

_mergecommand.Parameters["values"]。Value=valuelist; _mergecommand.ExecuteNonQuery();

これは正常に機能します。しかし、これを何百万回も実行する必要があるため、実行する前にこのコマンドを準備したいと思います。SQL Server 2008を使用しています。準備しようとすると、このエラーが発生します。

SqlCommand.Prepareメソッドでは、すべての可変長パラメーターにゼロ以外のサイズを明示的に設定する必要があります。

これを行う方法はありますか?

4

2 に答える 2

0

このようなコマンドを使用して何百万回も実行する必要がある場合、おそらく良い戦略ではありません。

データを XML 文字列にシリアル化し、それを 1 つの引数として渡すことはできますか? これにより、ネットワークと SQL Server の負荷が大幅に軽減されます。ただし、クライアントへの影響はかなり大きくなります。

そのようにすることに固執している場合、おそらく探しているのは SqlCommand.Parameters.Add メソッドのオーバーロードです。

_mergecommand.Parameters.Add("@values", System.Data.SqlDbType.NVarChar, 100).Value = foo; 

それはあなたが望んでいたものにもっと似ていますか?

于 2011-07-18T00:51:29.783 に答える