I use the SQL script that was generated (sql 2k5), to add a column to a table.
I need to add a “check if exists” because my clients sometimes run the script twice. (i have no control over this part, and this is happening over and over again)
I found a way joining the sysobjects and syscolumns, it works.
My problem is that I have to add a column to an other table, where the column is not at the end of the table.
For this one, SQL is generating that long code … create new temp table with the new column, filling up from old table, dropping the old table, and finally renaming the temp table.
The issue here is that the script for this one has lots of GO -s in there along with transactions …
What can i do?
1.) remove all the GO – s? (don’t like the idea)
2.) adding my IF between every GO pair? (don’t like the idea)
3.) is there an other way that makes sense, and it would not be too hard to implement
I cannot think of anything really, I could check for release version, or anything, not just my sysobjects and syscolumns join, but the issue will be the same.
because of the GO-s, my If will be “forgotten” when it gets to the END of the BEGIN …
How are they running the scripts (since you are using a tool which supports the GO batch separator) – SQL CMD?
I would consider putting it all in a string and using EXEC. Several DDL commands have to be the first command in a batch. Also, you can sometimes run into parsing issues:
ALTER TABLE Executing regardless of Condition Evaluational Results
Also, you may want to look at SQLCMD’s control features http://www.simple-talk.com/sql/sql-tools/the-sqlcmd-workbench/