Есть ли неинтерактивный (читай: способный к сценарию) способ сбросить все хранимые процедуры на диск?
Мы храним версии наших хранимых процедур в репозитории для отслеживания изменений, а также для целей развертывания и отката. В настоящее время всякий раз, когда мы хотим изменить хранимую процедуру, вы должны вытащить ее из БД непосредственно, когда вы начнете вносить изменения.
Что вы используете для своего репозитория? Я не понимаю, почему вы должны вытаскивать его из базы данных непосредственно, когда вы начинаете свои изменения. Если ваше управление выпуском таково, что они есть в вашем репозитории, вы можете просто вытащить файл из репозитория, запустить соединение в Management Studio и запустить ALTER PROCEDURE.
Тем не менее, вы можете извлечь код объекта, используя INFORMATION_SCHEMA.ROUTINES
системный вид или syscomments
Посмотреть.
С помощью INFORMATION_SCHEMA.ROUTINES
это примерно так:
SELECT Routine_Definition
FROM INFORMATION_SCHEMA.ROUTINES
WHERE Routine_Type='Procedure'
С помощью syscomments
это примерно так:
SELECT OBJECT_NAME(id),text
FROM syscomments
WHERE OBJECTPROPERTY(id, 'IsProcedure') = 1