Database Layer Testing

I would like to hear you guys’ opinions and thoughts about testing the DB layer.
We had a couple of discussions about it and so far we realised that the best way to test the DB is via the APIs.
We reached this conclusion after taking in the fact that we (the QA team) will not be writing any unit tests in the near future.
What do you think? Is testing the DB via the APIs good enough?

Interesting question. A few questions come to mind to determine my decision:

What am I checking?
Is the thing I am checking actually run in the DB or elsewhere. A lot of DBs don’t really have dynamic functions they just store data. Whereas the API might be where the complexity lies. For example, in Bugzilla to create a Bug it requires multiple queries to build it. However, the queries themselves are quite plain, it’s only when their used by the application code does it become more complex.

Where is the DB, how is it accessed and can it be isolated?
Is it easy to access or not. If it’s not easy to access, does the cost of the work trying to hook into the DB outweigh the value of what I’m doing. For example, if it’s a complicated stored procedure that should be checked in the DB I might want to do the work to isolate and check in the DB rather than adding more complexity.

Are there tools for checking in the DB?
A lot of DB tech don’t really have the tools or the resources to make the tools accessible. Do I want to spend hours fighting with SSDT?