2012-06-21 62 views
0

我们正在将大量旧的存储过程提升为生产,但引用了开发框。有没有简单的方法来搜索所有的程序并更新它们?我尝试更新sys.sql_modules中的defintion字段,并尝试更新syscomments.text,但无法执行。这是我正在尝试做的一个例子。通过使用SQL查询修改SQL Server 2008中的SP

在一个存储过程中我们有以下select * from vmdproduction.test.dbo.table1,我想在所有存储过程的所有情况下将vmdproduction重命名为production。

感谢

+0

如果您不止一次这样做,您可能需要查看其中的第三方SQL开发工具之一。我最熟悉Red Gate的SQL Prompt Pro(该功能称为Smart Rename),但它看起来像ApexSQL有一个免费的加载项。 –

+0

其实它是真的,我打算打十几次,因为我们拥有的SP的数量超过400加,所以修改的原因是运行数据库更新的公司。顺便说一句,我有搜索免费工具,但似乎没有帮助我太多..... –

回答

2

这是我会怎么做?在Management Studio中,右键单击数据库,选择任务,生成脚本。通过向导,确保包含所有存储过程并“脚本删除和创建”(在高级选项下)。这将生成一个脚本文件,它将删除并重新创建所有过程。在运行脚本之前,您可以执行查找和替换。确保在运行它之前备份数据库!

+0

感谢您的回复,但即时通讯寻找的是如何修改内部特定的SP,例如我有employee_id存在于23 SPs,我想改变到emp_id。顺便说一句,由SQL服务器生成的文件不会复制SP的内容......我会适当的帮助 –

+0

您正在使用什么版本的SQL Server Management Studio? –

+0

即时通讯使用Sql服务器2008 R2 R2 ....非常感谢你...ü保存我的时间移动得更快....我已经得到所有内容的存储过程。还有一个问题在文本编辑器(如notpad ++)中执行替换之后,导入新脚本的方式...对于这个愚蠢的问题抱歉,但我是新来的SQl服务器。 –

1

使用SQL Server Management Studio中
要修改Management Studio中
1.In对象资源管理器程序,连接到数据库引擎实例,然后展开该实例。
2.展开'数据库',展开过程所属的数据库,然后展开'可编程性'
3.展开'存储过程',右键单击要修改的过程,然后单击'修改'
4.修改存储过程的文本。
5.要测试语法,请在'查询'菜单上单击'Parse'
6.要保存对程序定义的修改,在'查询'菜单上,单击'执行'
7.要将更新后的过程定义保存为Transact-SQL脚本,请在'文件'菜单上单击'另存为'。接受文件名或将其替换为新名称,然后单击'保存'