У меня проблема с вызовом хранимых процедур с двоичным параметром фиксированной длины с использованием Entity Framework. Хранимая процедура в конечном итоге вызывается с 8000 байтов данных независимо от размера массива байтов, который я использую для вызова функции import. Для примера приведу код, который я использую.
byte[] cookie = new byte[32];
byte[] data = new byte[2];
entities.Insert("param1", "param2", cookie, data);
Параметры: nvarchar(50)
, nvarchar(50)
, binary(32)
, varbinary(2000)
Когда я запускаю код через профилировщик SQL, я получаю такой результат.
exec [dbo].[Insert] @param1=N'param1',@param2=N'param2',@cookie=0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
[SNIP из-за 16000 нулей]
,@data=0x0000
Все параметры прошли нормально, кроме binary(32)
cookie. varbinary(2000)
, казалось, работал нормально, и правильная длина была сохранена.
Есть ли способ предотвратить отправку дополнительных данных на сервер SQL? Это кажется большой тратой сетевого ресурса.