Ошибки времени компиляции сохраняются в html buildlog, проверьте в окне вывода ссылку. Не должно быть слишком сложно поместить в базу данных. Программным обеспечением, использующим эту информацию, является CruiseControl.Net, так что вы, вероятно, сможете узнать, посмотрев на их код.
За ошибки во время выполнения невозможно ответить. Прежде всего, непонятно, о чем вы спрашиваете. Под «ошибками во время выполнения» вы подразумеваете исключение, например деление на ноль? Во-вторых, это также очень отличается между различными языками, поддерживаемыми в VS, например .NET языки и прямой C ++.
Обновление: поскольку вы работаете на платформе .NET, я предлагаю вам обернуть вашу основную функцию блоком try / catch, который перехватывает все выданные ошибки, и просто записать всю информацию, которую вы можете получить из этой ошибки, в свою базу данных. (например, трассировка стека, вид исключения, возможно, мини-дамп). Это, конечно, не будет работать с ошибками, которые пойманы или проглочены. В случае, если вы также захотите записать их (по какой-либо причине), вам нужно будет сделать несколько более умных исходных преобразований, например, с помощью отражения. Примером может быть добавление ведения журнала в конструктор базового класса Exception.