• I'd vote a general thumbs-down as well--but they do have their uses.

    The primary negative point is Confusion. Schemas are a pretty abstract concept (the closest analogy I can come up with is "parallel dimensions applied to database tables"), and how can you clearly and simply explain schemas to the people who may be required to use them--especially if they're not even clear on why a table is (you'll note I didn't say "what").

    Managing them is also confusing. How many schemas can there be in a database? Can you readily and ably manage them and their contents as a coherent set? I don't know anything about this subject, as once I realized what they were I made sure they weren't going to be used.

    Lastly, there's the (at least to me) very confusing and harshly underdocumented subject of optimization. In all code (stored procedure or otherwise), "best practice" is you're supposed to qualify all objects with their full ownership chain (i.e., "SELECT * from myDB.dbo.myTable", not "USE myDB" | "SELECT # from myTable"). If so, what's the point of setting context (USE mdDB)? What happens if you have multiple database instances with different names? Or is that just for stored procedures (and which is better, "EXECUTE myDB.dbo.myProc", "EXECUTE dbo.myProc", or "EXECUTE myProc"? I know this underlies optimizing procedure cache hits and utilization, but I've never gotten the long or short of it.)

    I do like the idea of setting up "your own set of objects" (your own pocket universe) for development purposes... but again, how easy is it to explain this to the developers? How easy is it to set everything to .dbo when it's time to roll it to a QC environment? How many problems and glitches will arise solely from the fact that everyone was working in their own schema? Me, I just create and destroy a separate copy of the database whenever I need to do something like this... but I'm the DBA and can get away with it. Others are not so lucky.

    Now, if it were possible to define or configure a distinct set of schemas (as opposed to one for everyone who can log on with no questions asked), and permit or deny individuals access to them, that might have some benefit. (It's only a thought--I can see this quickly spiraling out of control.)

    This should be an interesting thread. Enough two centses add up to dollars...

    Philip