経由で > 8000 文字 (Web ページから送信) を挿入しようとしていますExecuteNonQuery
。ストアド プロシージャは、パラメータを として定義しますVARCHAR(MAX)
。コラムはVARCHAR(MAX)
. 理論的には、2GB のデータを渡すことができるはずです。
ただし、SSSMS での簡単なテストでは、次のことを行います。
declare @x varchar(max)
set @x = replicate ('a', 10000)
select @x, len(@x)
-- Output shows 8000, not 10000
したがって、SSMS クエリ自体の制限である可能性がありますが、コードからデータを渡すと、まだ切り捨てられます。基本的/明白な何かが欠けていると確信していますが、それを理解できません。
8000 を超えるデータを渡すにはどうすればよいですか?
注: SSMS に関する回答は必要ありません。これは単なるテストでした。タイトルの問題を C# と で解決しようとしていExecuteNonQuery
ます。
public static void UpdateTerms(string terms)
{
Database db = DatabaseFactory.CreateDatabase();
db.ExecuteNonQuery("uspUpdateTerms", terms);
}
私の質問はここで答えられました: How can I insert more than 8000 characters in a VARCHAR(MAX) column with ExecuteNonQuery?
キャッシングの問題でした。