我有大量需要重命名的存储过程。幸运的是,它们都以相同的前缀开头,例如spPortalxxxxxx
我需要重命名它们,例如v11_spPortalxxxxxx
是否可以一次性重命名所有存储过程,而不必手动完成每个?
我有大量需要重命名的存储过程。幸运的是,它们都以相同的前缀开头,例如spPortalxxxxxx
我需要重命名它们,例如v11_spPortalxxxxxx
是否可以一次性重命名所有存储过程,而不必手动完成每个?
您可以做的是通过 Sql 查询创建重命名语句。然后将查询结果复制粘贴到新的查询窗口执行
select
'sp_rename ''' +[Routine_Name]+''','''+'v11_'+[Routine_Name]+''''
FROM [INFORMATION_SCHEMA].[ROUTINES]
WHERE [ROUTINE_TYPE] = 'PROCEDURE'
and [Routine_Name] like 'spPortal%'
你可能会想,SP_Rename
但这可能是最糟糕的事情之一,因为它不会更新sys.procedures
看到这个
我能想到的一种方法是创建一个删除旧查询并使用新名称重新创建它们的查询。
SELECT 'drop procedure ' + OBJECT_NAME(OBJECT_ID) + ';
go
' +
REPLACE (OBJECT_DEFINITION(OBJECT_ID), 'spPortal', 'v11_spPortal') + '
go
'
FROM sys.procedures
此查询还将更新对定义内部的任何调用...
我认为您正在添加它以进行版本控制,如果是这样,您需要添加一个WHERE OBJECT_NAME(OBJECT_ID) LIKE 'spPortal%'
不要忘记您需要GRANT
根据需要申请。