Há uma série de razões.
- Segurança- Se o usuário tiver acesso direto, ele pode obter qualquer coisa do seu banco de dados. Além disso, eles terão uma senha em seu banco de dados. Como resultado, se o servidor SQL que você está usando tiver uma falha, eles poderão explorá-la. Além disso, se suas permissões estiverem configuradas incorretamente, isso poderá limpar seu banco de dados.
- Velocidade- Se os usuários usam frequentemente grandes consultas, isso pode atolar seu sistema de forma rápida e desnecessária. Se você passar por uma interface da Web, poderá estrangulá-la.
- Acessibilidade- As consultas na Web são suportadas por quase tudo. Requer clientes especiais para acessar bancos de dados SQL diretamente.
Mas se você confia completamente em seus usuários, tem as bibliotecas/drivers certos, então você pode permitir a consulta direta, e pode até ser um pouco mais rápido.