Any error alert should offer the user a way to resolve the problem.
This resolution could be something simple like trying again later or something complex involving settings or syntax but the response to the error should always send the user in the right direction to fix the problem as quickly and easily as possible.
Having said that, it's not the users' responsibility to fix your database issues and there may be a bigger problem beyond the users' control - In these cases, the resolution is to point the user to somewhere they can report the fault.
When it comes to visibility, this depends on the severity of the error from the users' point of view. One of your server warehouses could be on fire but that doesn't matter to the users. On the other hand, a user could have entered an illegal character into a field that will make their system choke - this is extremely critical to the users.
The more critical the error (from the users' perspective) the more visible the alert should be. "Server access times are a little slow right now" could be a little notification in the corner of the window whereas "Your next click will delete all your records" needs to be a big dialogue sanity check in the front of the window blocking the user from doing anything until a response has been made.