This question doesn't specifically apply to SQL Server but I think it is relevant.
We have 2 people writing code (in this case a .net application but it could equally apply to one of the databases that the applications rely on). The application has a monitoring tool that we use to check it's all working as expected.
Yesterday a version of the application was made live that had a bug in the monitoring tool. Fortunately it did't affect the application so we simply took an older version out of Source Control and made that live. A few hours later the bug was fixed and we were back at the "correct" version. All well and good.
Given this is the holiday season, if this happened while dev A was on holiday and dev B (for whatever reason) didn't fix the bug, then dev B was on holiday when dev A returned (and maybe dev B forgot to tell dev A), how would dev A know which version of the application was live?
I guess what I am asking is how do you keep track of which version of code is live, particularly if for example you have to rollback to an earlier version.
Insanity: doing the same thing over and over again and expecting different results.
Number of ways. Commonly now source control has branches. The live system is the root and any branches are things that are being worked on or waiting to go live. Problem with this is that part of a release has to be the merging of branches which can be a large (or impossible) job - that would include rollbacks.
I prefer to check things out for update - then someone knows that someone else is working on something and it is up to them to synchronise - this is against a lot of so called agile departments which are actuallu running silo development which is anything but agile (a person gets allocated a task which they complete in isolation asap often to the detriment of the system as a whole). It is clear who is working on something and they can be notified if an ad hoc change is made.
Another option is to have a release project in source control seperate frrom the dev project. Again there needs to be a method of informing developers that the the release they have been working on has been changed. The release shoould be labelled in the dev version and this can be compared to notify of changes and the labelled dev version updated by whoever is working on it.
========================================== Cursors are useful if you don't know sql. SSIS can be used in a similar way. Beer is not cold and it isn't fizzy.