I favor a completely open playground, a slightly locked down dev box, and totally locked test, QA, and production boxes.
The playground is where you can try just anything at all. Should be a VM these days, with a "last good image" available to rebuild from in the case of "oops!" type situations. Probably need one per dev, but conflicting tests might be worthwhile too.
The playground is for proof-of-concept and hair-brained ideas.
Dev should be under source control, and should only have changes made that someone thinks will actually one day make it into production. But devs should have access to viewing execution plans, index use, et al, definitely, so they can refine code as they go.
Test and beyond should be locked down and shouldn't have anything on them that hasn't been through code review. They should replicate production as closesly as possible so that any effects can be tested in an environment that is as real as it can get. Thus, if production is to be locked down, then test should be too. Test and pre-release should have maintenance plans running on them, and backups.
That kind of set up makes sense to me.
As far as the relationship between devs and DBAs, I think it should be close. The DBAs should advise the devs on how to improve code and devs should advise DBAs on what to expect from upcoming solutions.
- Gus "GSquared", RSVP, OODA, MAP, NMVP, FAQ, SAT, SQL, DNA, RNA, UOI, IOU, AM, PM, AD, BC, BCE, USA, UN, CF, ROFL, LOL, ETC
Property of The Thread
"Nobody knows the age of the human race, but everyone agrees it's old enough to know better." - Anon