Используя хранимую процедуру, просто создайте параметр типа varbinary (max) и вставьте его в таблицу, как если бы вы использовали любой тип данных.
В вашем коде на c # (или vb или любом другом) добавьте параметр к объекту команды sql и установите байтовый массив в качестве значения параметра:
command.Parameters.AddWithValue("@parameter_name", myByteArray);
Если не использовать хранимую процедуру, вы, вероятно, можете сделать то же самое с параметризованным оператором sql, но я никогда не пробовал этого, поэтому не могу привести пример.
Edit:
Вы используете параметризованный запрос, что не мое, поэтому я не могу гарантировать, что это будет работать. Но вот код, который должен помочь вам.
RemoteSQLcmd = New SqlCommand("INSERT INTO Table(1) Values (newid(), ProductID, @bin_value", RemoteSQLConn)
RemoteSQLcmd.Parameters.AddWithValue(@bin_value", imSource) ;
Двоичное значение должно быть представлено как параметр (@bin_value), а значение задается оператором AddWithValue. Имя параметра не обязательно должно совпадать с именем столбца.
Пара замечаний: я бы предложил использовать имена столбцов в вашем выражении вставки, а не в зависимости от положения столбца. Кроме того, я не знаю, что вы подразумеваете под «таблицей (1)» - это на самом деле имя таблица