It is normally my first "big splash" when I start a new contract, to insist the dev environment is refreshed at some regular interval (hopefully nightly!). The pain to re-apply the db development changes to the refreshed environment is a cost, but a cost worth paying, because...
if you can't systimatically apply your changes (from some source control repository) to a dev environment, how can you expect to roll them to production? this is the joint-top reason for refreshing dev - rollout testing *AND* a respectable prod-like environment to develop on.
I now how a handy c# app that rolls db changes out from one source tree to another and applies them against the db, so in effect I have a source tree in sync with the db. From this we can easily track changes when debugging, refresh dbs backwards (from prod through UAT & testing to dev) and roll forward new releases providing a rollback mechanism!
I have never met a developer who agreed with me initially, but after time and understanding both developers and managers have greatly appriecated the foresight, which gives me more support to enforce this at ever opportunity going forward.