Utilizzando una procedura memorizzata, è sufficiente creare un parametro di tipo varbinary(max) e inserirlo nella tabella come si farebbe con qualsiasi tipo di dati.
Nel tuo codice c# (o vb o altro), aggiungi un parametro al tuo oggetto comando sql e imposta l'array di byte come valore del parametro:
command.Parameters.AddWithValue("@parameter_name", myByteArray);
Se non utilizzi una stored procedure, probabilmente puoi fare lo stesso con un'istruzione sql parametrizzata, ma non l'ho mai provata, quindi non posso fare un esempio.
Modifica:
Stai usando una query parametrizzata, che non fa per me, quindi non posso garantire che funzionerà. Ma ecco del codice che dovrebbe farti andare avanti.
RemoteSQLcmd = New SqlCommand("INSERT INTO Table(1) Values (newid(), ProductID, @bin_value", RemoteSQLConn)
RemoteSQLcmd.Parameters.AddWithValue(@bin_value", imSource) ;
Il valore binario deve essere rappresentato come parametro (@bin_value) e il valore viene impostato dall'istruzione AddWithValue. Il nome del parametro non deve necessariamente corrispondere al nome della colonna.
Un paio di note:suggerirei di utilizzare i nomi delle colonne nella tua dichiarazione di inserimento piuttosto che dipendere dalla posizione della colonna, inoltre, non so cosa intendi per "tabella(1)" - è in realtà il nome della tabella?