对于以下脚本,用.sql
文件编写的脚本:
if not exists (select * from sys.tables where name='abc_form')
CREATE TABLE abc_forms (
x BIGINT IDENTITY,
y VARCHAR(60),
PRIMARY KEY (x)
)
上面的脚本中有一个错误。
对于Java/c等编程语言,编译器有助于解析大多数名称分辨率
对于任何SQL脚本,一个方法单位应该如何测试?静态分析...
15年前,我通过大量脚本做了类似您要求的事情。但是我们有针对陈述的特殊格式。
我们有三种不同的文件:
- 一个SQL文件设置完整数据库架构的最新版本
- 一个文件,用于将所有更改应用于旧数据库架构(例如版本; sql)
- 一个用于SQL语句的文件代码在数据库上使用(诸如statementnumber之类的自定义格式;语句)
要求每个语句都在一行上,以便可以用尴尬提取它!
1)首先,我通过从另一个语句执行并将错误记录到文件来设置数据库的最新版本。
2)其次,我对所有更改都具有第二个模式
3)我比较了两个数据库模式以找到任何差异
4)我在完整的测试最新架构中填写了一些虚拟测试值
5)最后但并非最不重要的一点是,我使用测试数据执行了每个SQL语句,并再次记录了所有错误。
最后,整个事情每天晚上都在运行,没有新的错误,没有20个开发人员将其投入版本控制中。但这在下一个新客户的下一个安装期间为我们节省了很多时间。
您也可以从代码生成SQL脚本。
代码首先避免这些问题。首先选择代码或数据库之间的选择通常取决于您的主要重点是您的数据还是应用程序。