我有一堆TSQL更改脚本,所有脚本都按顺序命名。
我希望将这些内容组合成一个大脚本,并有一些曲折。我在脚本中包含一个版本号函数,我为每个脚本更新,以便一旦运行更改1,它将返回1,一旦运行2,它将返回2,依此类推。此函数保留在数据库中,并始终返回架构/数据库的版本。
我想用几行来包装每个更改脚本,以阻止已经运行的脚本再次运行,同样它应该阻止更改脚本在太“低”的架构版本上运行。这允许我将所有更改脚本集中在一起,并且只有当它全部运行时才会应用缺少的更改脚本。
这一切都很好,但我找不到一种方法让osql / Query Analyzer / Sql Server Studio跳过已经运行的部分。
更新:重申一下,我不需要帮助记住当前版本号,我需要一种方法来跳过部分脚本以防止已经应用的更新重新应用。
我尝试了很多方法:
db_executeSql
语句或EXECUTE
包装批处理,但这会导致范围问题。dbo.DB_VERSION()!=REQUIRED_VERSION THEN BEGIN .... END
构造中,但这很麻烦并且使处理错误变得困难。遇到不应用更改的情况是预期的,并非特殊情况。因此,如果不适用,只需RETURN
就行了。
还有其他建议吗?
答案 0 :(得分:1)
如果是表格,您可以保留版本号,并使用该函数检查表格中的值,并在IF语句中与您希望进行的更改版本进行比较。