Что касается полезных сценариев, я предпочитаю создать процедуру, если она не существует, а затем изменить ее.
IF (select object_ID('schema.Procedure')) is null
exec('Create procedure schema.Procedure as select 1')
GO
Alter procedure dpm.TableCellLoad
Таким образом, привилегии, предоставленные процедуре, всегда будут сохраняться, и если процедура не существуетоно создано.