如何快速识别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子句,但这会按照修改日期降序排列