• Here is a great list from a StackOverflow question that I quote a lot. I bolded the ones I think apply to SQL Server.

    Made a change to code, realised it was a mistake and wanted to revert back?

    Lost code or had a backup that was too old?

    Had to maintain multiple versions of a product?

    Wanted to see the difference between two (or more) versions of your code?

    Wanted to prove that a particular change broke or fixed a piece of code?

    Wanted to review the history of some code?

    Wanted to submit a change to someone else's code?

    Wanted to share your code, or let other people work on your code?

    Wanted to see how much work is being done, and where, when and by whom?

    Wanted to experiment with a new feature without interfering with working code?

    Keeping track of what happens in your SQL code, schema changes and so forth is good. It creates a standard that everyone can follow. Even though the code is accessible to all, making requests properly, tracking those changes outside of in-code documentation, having the ability to revert those changes and comparing code are all pretty good features to have.