0

私はこのADO.NETコマンドオブジェクトを持っており、いくつかのパラメータを設定して正常に実行できます。構造化パラメータを使用してコマンドを準備する

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

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

これは問題なく動作します。しかし、私はこのコマンドを実行する前にこのコマンドを準備する必要があります。何百万回も実行する必要があるからです。私はそれが

SqlCommand.Prepare方法が明示的に設定し、ゼロ以外のサイズを持っているすべての可変長パラメータを必要とする準備をしようとした場合、私はこのエラーを取得するSQL Server 2008を使用しています。

どうすればいいですか?あなたは、このようなコマンドを使用して、それを何百万回を行う必要がある場合は

答えて

0

はおそらく良い戦略ではありません。

あなたはXML列にデータをシリアル化し、1つの引数としてそれを渡すことはできますか?それはあなたのネットワークとSQL Serverにかなり負荷がかかりません....しかし、おそらくあなたのクライアントにはもっと難しいでしょう。

あなたがそのようにそれを行う上で死んでセットされている場合は、おそらくあなたが探していることはSqlCommand.Parameters.Addメソッドのオーバーロードです:

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

は、より多くのあなたが何を望むかのようですか?

+0

私の質問はSqlDbType.StructuredなくNVARCHAR – Hash

+0

のために特別に同じ構文であります適用されます。私はパラメータの長さを指定できるようにする例を挙げています。 –

+0

あなた自身で試してみましたか?構造化データ型のサイズはどのくらいでしょうか? – Hash

1

これは古いですが、例えば、使用する-1サイズとしてで正しい答えがあるように見えるん:

_mergecommand.Parameters.Add(new SqlParameter("values", SqlDbType.Structured, -1)); 
関連する問題