Ben 2100 parametre sınırını vurduğunda sorgular durdurma bir SqlCommand farklı sorguları topluyorum. Eğer toplu işimde 2100 veya 2099 parametresi varsa, yine de istisna yapıyorum. http://msdn.microsoft.com/en-us/library/ms143432.aspx Ben muktedir bekliyordum: Aşağıdaki test kodu parametrelerinin sayısı az 2100.SqlCommand maksimum parametre istisnası 2099 parametrelerinde
var parametersMax = 2099;
var connection = new SqlConnection(@"Data Source=.;Integrated Security=SSPI;");
connection.Open();
var enumerable = Enumerable.Range(0, parametersMax);
var query = string.Format("SELECT {0}", String.Join(", ", enumerable.Select(s => string.Format("P{0} = @p{0}",s))));
var command = new SqlCommand(query, connection);
foreach(var i in enumerable)
command.Parameters.Add(string.Format("p{0}",i), i);
// here: command.Parameters.Count is 2099
var reader = command.ExecuteReader(); // throws: The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Too many parameters were provided in this RPC request. The maximum is 2100.
istisna mesajı ve burada belgeleri dikkate alındığında bile 'çok fazla parametre istisna' atar
Bir sorguda 2100 parametresi var, ancak bu doğru görünmüyor. Nedenini bilen var mı? Bir şey mi eksik?
SQL Server gönderilen
Bu çok sayıda parametreyi ne için kullanıyorsunuz? Bunun yerine tablo değerli bir parametre kullanmayı düşündünüz mü? –
2098/2097/etc ile çalışır. SQL'in varsayılan olarak sahip olduğu bir ReturnValue parametresi olduğunu düşünüyorum. –
Bunu tasarımla kullanamıyorum, sorguları birden çok toplu işlemde bölme konusunda iyiyim. Sadece neden 2100 parametreyi kullanamadığımı bilmek istedim. – marcob