Restoring dev db from production: Running a set of SQL scripts based on a list stored in a table?

Posted by mattley on Stack Overflow See other posts from Stack Overflow or by mattley
Published on 2010-04-14T14:21:17Z Indexed on 2010/04/14 14:23 UTC
Read the original article Hit count: 246

Filed under:
|
|

I need to restore a backup from a production database and then automatically reapply SQL scripts (e.g. ALTER TABLE, INSERT, etc) to bring that db schema back to what was under development.

There will be lots of scripts, from a handful of different developers. They won't all be in the same directory.

My current plan is to list the scripts with the full filesystem path in table in a psuedo-system database. Then create a stored procedure in this database which will first run RESTORE DATABASE and then run a cursor over the list of scripts, creating a command string for SQLCMD for each script, and then executing that SQLCMD string for each script using xp_cmdshell.

The sequence of cursor->sqlstring->xp_cmdshell->sqlcmd feels clumsy to me. Also, it requires turning on xp_cmdshell.

I can't be the only one who has done something like this. Is there a cleaner way to run a set of scripts that are scattered around the filesystem on the server? Especially, a way that doesn't require xp_cmdshell?

© Stack Overflow or respective owner

Related posts about sql-server

Related posts about sqlcmd