What bugs me the most is getting an error, say in a query, and it doesn't identify exactly what's wrong
Given the abstract math model that is the bases for most if not all SQL engines, it is hard as all heck to identify all possible errors. Remember that SQL is set-based, so in theory all SQL operations happen to all records as though they were being affected in parallel. In actual practice, most SQL that directly affects tables doesn't impose an order on the records, so saying "error in record 31" kind of has no meaning. Having said that, I have usually been able to follow the errors in SQL once I learned how SQL looks at things.
Got to also remember this: SQL executes queries one at a time, so there is only one SQL statement to call out in an error anyway. What's wrong? It's whatever you were doing with the single SQL statement you just tried to execute. If you have an SQL parsing error, you get reasonably good errors. If it makes it past parsing and execution plans before it barfs, you have an SQL runtime error and those tend to be cryptic, I'll agree.