如何快速识别SQL Server中最近修改的存储过程

时间:2020-03-05 18:59:19  来源:igfitidea点击:

我需要将已修改的存储过程从DEV SQL Server 2005数据库实例手动迁移到TEST实例。除了我要迁移的更改之外,数据库具有相同的架构。如何快速确定已在DEV数据库中修改了哪些存储过程以迁移到TEST实例?

我假设我可以针对某些系统表编写查询,以查看存储过程类型的数据库对象,并按某种最后修改或者编译的数据进行排序,但我不确定。也许有人可以指出我某种免费的实用程序。

提前致谢,

鲍勃

解决方案

回答

尽管不是免费的,但我在使用Red-Gates SQL比较工具方面有丰富的经验。过去对我有用。他们有免费试用版,可能足以解决我们当前的问题。

回答

我们可以使用以下类型的查询来查找已修改的存储过程,可以根据需要使用7之前的任何数字

选择名称
FROM sys.objects
WHERE类型='P'
AND DATEDIFF(D,modify_date,GETDATE())<7

回答

我们可以执行此查询以查找最近x天修改的所有存储过程:

SELECT name
FROM sys.objects
WHERE type = 'P'
    AND DATEDIFF(D,modify_date, GETDATE()) < X

回答

我们还可以使用以下代码片段

USE AdventureWorks2008;

GO

SELECT SprocName=name, create_date, modify_date

FROM sys.objects

WHERE type = 'P' 

AND name = 'uspUpdateEmployeeHireInfo'

GO

回答

有几种数据库比较工具。我一直喜欢的一个是Red Gate的SQLCompare。

我们也可以尝试使用:

SELECT name
FROM sys.objects
WHERE modify_date > @cutoffdate

在SQL 2000中,这种方法并不总是可行的,因为使用ALTER不能正确更新日期,但是在2005年,我认为该问题已解决。

我自己使用了SQL比较工具,所以我不能保证100%使用该方法

回答

而不是使用不再推荐的sysobjects,请使用sys.procedures

select name,create_date,modify_date
from sys.procedures
order by modify_date desc

我们可以自己执行where子句,但这会按照修改日期降序排列