この手法を使用して、.NET 4.0 アプリから SQL Server (2008R2) proc に XML として渡されるレコードの大規模なコレクションをプールしています。proc は XML を準備し、OPENXML を使用してそれに結合します (または、少なくとも動作するようになるとそうします)。
コードが実行されると、.NET はパラメーターを正しく作成して SQL コマンドに追加するように見えますが、SQL Server を呼び出すと、SQL プロファイラーはパラメーターを null として表示します。
exec jcsdmp_UpdateMultiDocumentSendStatus @pUpdateStatusesXML=NULL
呼び出しコード:
SqlParameter[] UpdateParams = new SqlParameter[1];
UpdateParams[0] = new SqlParameter("@pUpdateStatusesXML", SqlDbType.NText, sb.ToString().Length, sb.ToString());
SqlAccess.ExecuteNonQuery("docmgmt", "jcsdmp_UpdateMultiDocumentSendStatus", CommandType.StoredProcedure, UpdateParams);
そして、はい、私はカスタム SqlAccess クラス (主にパラメーターをチェックし、接続を開くなど - 本当の魔法はありません) を調べてきましたが、これまでのところ、.NET はパラメーターを送信していると考えているようです...
不足している可能性のあるサイズ制限や、それらの線に沿ったものはありますか?