try something like this
-from your webpart code, use elevated permission, then use impersonation, run the code with a user that has access to the db.. on your ADF, use revertToself..
or
just elevate permission, give mossAppPool access to your DB (db_accessadmin with select rights)..
works both option on our servers..