RoR and Django (what we use) incorporate database migration functionality. There are other ones for Java (like Migrate4j) that might be more standalone.

You want something that provides both forward and backward migrations as well as some means of generating migrations from changes. Django, for example, keeps track of what the current state of the schema should be, then diffs that against the next version and creates a script from the results.