Лучший способ контроля версий - создать сценарий SQL, который устанавливает хранимую процедуру, возможно, в форме
if object_id ('FooSproc') is not null
drop procedure FooSproc
go
Create procedure FooSproc
[ . . . ]
go
Поместить сценарии в систему контроля версий.
Управление версиями и высвобождение большого объема кода хранимой процедуры
Возможно, вам также понадобится разобрать средства компиляции нескольких сценариев в один установщик для sprocs.Быстрый и грязный способ, который на самом деле работает довольно хорошо, - это использовать препроцессор C и файлы с кучей операторов #include.Препроцессор C поставляется с Visual Studio или бесплатным SDK, который можно загрузить с веб-сайта Microsoft.
-- =========================================================================
-- === Installer file for FooApp sprocs ====================================
-- =========================================================================
--
-- THIS IS GENERATED CODE. EDITS WILL BE OVERWRITTEN.
--
-- =========================================================================
--
#include "Foo.sql"
#include "Bar.sql"
#include "Wibble.sql"
С помощью небольшого количества сценариев вы можете создать менеджер релизов, который позволит вам проверять все sprocs длязаданную версию вашего приложения и установить эту версию в базу данных.Конечно, не забудьте обновить включаемый файл, иначе установщик пропустит все, что не включено.
Чтобы использовать препроцессор C, вам нужно настроить свою среду.Visual Studio поставляется с пакетным файлом, который обычно устанавливается где-то вроде:
C:\Program Files (x86)\Microsoft Visual Studio 8\VC\vcvarsall.bat
Вам нужно запустить пакетный файл для настройки среды, а затем вы можете запустить препроцессор C с помощьюзаклинание типа:
cl /EP DB\DB.inc > Build\DB\DB.sql
Это будет читать включаемый файл, включать все файлы, на которые он ссылается, а затем записывать в стандартный вывод;Вы можете перенаправить стандартный вывод в любое удобное для вас место.Обратите внимание, что препроцессор C является рекурсивным, и вы можете включать другие включаемые файлы.