2013-01-17 44 views
0

我有一个数据库包含大量的逻辑,我必须维护它。我需要一种方式来知道,至少在改变某些东西之后,所有东西都可以工作如何在更改列数据类型后测试数据库代码?

例如,我想知道是否所有的存储过程和触发器改变列的类型后仍然工作。

有没有办法做到这一点?

在此先感谢。

+1

你的问题并不十分清楚:在更改表列的数据类型后,你是否问如何测试数据库代码(我假设你的意思是存储过程/函数?)?或者如何找到所有对被更改对象的引用?在第一种情况下,您正在询问有关测试的内容,第二种情况下您正在询问是否确定依赖关系。 – Pondlife

+0

@Pondfile:我在问测试(编译),如果不够清楚,很抱歉。 –

+0

感谢您的澄清,我更新了这个问题,让您更清楚地询问您的测试。简而言之,您需要开发一套测试脚本;不幸的是,用于测试数据库代码的工具通常不像其他类型的代码那样发达,但是对此有许多[问题](http://stackoverflow.com/search?q=sql-server+unit+test)网站关于它,也许你可以从他们那里得到一些想法。 – Pondlife

回答

1

你可以迭代所有的procedures, functions etc and invoke them in TSQL,或运行我的utility checktsql(WinForms应用程序)。

但是我没有分析如何检查触发器。 (我怎么能忘记?)

+0

当我们将有触发器检查版本?我打算将你的工具合并到我们常见的应用程序中:) –

+0

无论如何,我在想如果不修改ALTER过程来查看命令是否成功。 –

+0

触发器不是微不足道的。请记住,只能通过INSERT,UPDATE,DELETE调用它们。这意味着您的数据(Ins,Upd)需要通过定义的任何检查(非标识列,CHECK&FK约束,UNIQUE索引和约束)或记录级别检查以确保参考完整性(Del) – devio

2

你可能看看tSQLt (unit testing for TSQL)。 使用此功能,您可以根据估算结果检查功能。

+0

这听起来不错,无论如何,我不在测试功能。只要知道代码编译,我会很高兴。 –