Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自动测试存储过程是否仍在工作+SQL SERVER_Sql_Sql Server_Stored Procedures - Fatal编程技术网

自动测试存储过程是否仍在工作+SQL SERVER

自动测试存储过程是否仍在工作+SQL SERVER,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我想知道如果现有存储过程仍然是最新的,如何测试它们。我的意思是,让我们在SQL Server中创建一个表,然后准备一个存储过程,将一些数据插入到这个表中,然后从另一个表中选择一些数据 几个月后,我们的桌子可能会改变。我们的存储过程可能不是最新的,它可能会导致任何问题。如果这是唯一的一个程序,则不成问题。我们可以手动检查这个过程,只要再次尝试运行它,看看是否有任何错误,并在必要时修复它。但若我们有很多程序,甚至不记得哪些程序和被更改的表相连接,那个该怎么办呢 是否有任何自动运行所有程序的方法我不想

我想知道如果现有存储过程仍然是最新的,如何测试它们。我的意思是,让我们在SQL Server中创建一个表,然后准备一个存储过程,将一些数据插入到这个表中,然后从另一个表中选择一些数据

几个月后,我们的桌子可能会改变。我们的存储过程可能不是最新的,它可能会导致任何问题。如果这是唯一的一个程序,则不成问题。我们可以手动检查这个过程,只要再次尝试运行它,看看是否有任何错误,并在必要时修复它。但若我们有很多程序,甚至不记得哪些程序和被更改的表相连接,那个该怎么办呢

是否有任何自动运行所有程序的方法我不想传递任何参数我只想测试程序是否可以编译而没有错误

@Elias Hossain博士-> 此查询将返回给定过程的过程名称和此过程的所有参数。 但我说情况看起来是这样的: 我有很多存储过程和一些表结构。现在我需要更改一些我不知道的表-添加一些列或重命名列的名称,我不需要更改任何过程!但是,当我在使用存储过程的表的结构发生某些更改后运行应用程序时,它将失败,因为某些过程现在不正确,即某些字段可能不再存在

当我创建新的过程时,如果它准备好了,我单击Execute,它将在所有过程中运行并保存。如果有什么问题,我会得到一个错误消息,程序将不会被保存。 现在我想做一些非常类似的事情。我希望在表结构发生任何更改后执行所有过程,并检查它们在结构意义上是否仍然正确。所以我不需要知道结构的任何参数。
接下来我可以一个接一个地做,但我认为这不是一个好方法。所以我问是否有人知道执行所有程序的好方法,我不想向db插入任何数据,也不想删除或选择任何内容。我想做的唯一一件事是检查所有这些过程在结构意义上是否仍然正确

您应该研究一个基于xUnit的框架。我的google karma找到了。

您可以通过下面的查询检查/匹配过程参数和表字段,假设您知道表字段是最新的

SELECT Procs.Name, Params.Name FROM 
    SYS.PROCEDURES Procs INNER JOIN SYS.PARAMETERS Params
    ON Procs.OBJECT_ID = Params.OBJECT_ID
    AND Procs.NAME = 'InsertOfficeAssignment' -- Procedure Name
ORDER BY Params.Parameter_id

这似乎与您的问题相似如果我没弄错的话,您希望确保存储过程正在编译并且与当前的db模式兼容


可能有用吗?

如果您只是想确保它们仍然有效,SQL提示符中有一个名为“查找无效对象”的功能,应该适合您

这里有一个屏幕截图,显示了这是如何工作的:

如果您想“正确”地完成它,并确保它们不仅能够编译,而且能够按照预期的方式运行,那么您需要采纳Klas的建议并实现单元测试。我工作的公司刚刚发布了一个预览UI测试运行程序SQL Test,它构建在开源框架tSQLt上


有关更多信息,请访问:

但是使用基于xUnit的框架意味着什么?我只能用这个工具模拟程序的使用,还是可以检查程序的结构是否正确?我误解了你的问题。我认为您希望运行回归测试,而不仅仅是检查存储过程是否编译。