Я немного читаю между строк здесь и догадываюсь, что на самом деле вопрос заключается в том, как предотвратить запуск Procedure2
любым процессом, кроме вызова из Procedure1
.
Если это должно быть как можно ближе к полной блокировке, насколько это возможно, создайте выделенную учетную запись службы для выполнения этих процедур или связанных с ними заданий, а затем предоставьте только EXECUTE
разрешения на Procedure2
этому выделенному учетная запись.
Если «довольно заблокировано» достаточно, предоставьте EXECUTE
разрешения на Procedure2
учетной записи службы, в которой вы выполняете свои задания на производстве. По крайней мере, это помешало бы заблудшим пользователям уволить его.
Другая мысль состояла бы в создании пакета служб SSIS с двумя Execute SQL Tasks
, в котором первый содержал бы весь код в Procedure1
, а второй содержал весь код в Procedure2
, затем покончил с процессами и вместо этого запустите пакет. Я не забочусь о внедрении кода в пакеты, потому что обслуживание раздражает.