То, о чем вы здесь говорите, - потоковая передача по сравнению с буферизацией.
если в приложении ASP.NET есть строка byte[] buffer = ...;
для загрузки или выгрузки, вы выполняете буферизацию и испытываете проблемы с памятью, о которых вы упоминали в своем вопросе. Фактически, вы можете иногда вызывать GC
напрямую для принудительного освобождения памяти, но есть статьи, блоги, люди и мнения абсолютно против этого.
вариант с потоковой передачей, безусловно, является наилучшим способом, учитывая, что SQL Server 2008 изначально поддерживает ввод-вывод FILESTREAM, а потоковую передачу можно также выполнять с помощью WCF.
Множество статей в Интернете о потоковой передаче WCF и SQL Server, я не могу точно знать, что именно вам нужно, так как вы не сообщаете более подробную информацию о своем коде и не показываете какой-либо код.