• Where I have had a similar need I have done it the other way around by creating a "template" database that has all the schema in it but with all the tables empty - this empty database is backed up and restored with another name as the "reporting" database into which all the data is loaded. Whenever changes are made to the schema they are made to the empty template database.

    I find this is more usable than a scripted copy of the schema as it allows changes to the schema to be easily applied to the template