может ли это быть со стороны MS SQL Express 2010?
Вполне. Если TCP сокет закрывается аварийно (например падение программы или ОС) то вторая сторона об этом не узнает.
Выхода тут 2:
1) гонять время от времени служебные пакеты
2) рвать соединение, если некоторое время не передаётся данных
Как установить более стабильное соединение?
Может просто пересоединять его, если порвалось?