Мне было интересно, есть ли какой-нибудь цивилизованный метод сборки сценариев развертывания SQL из частей.Например, если у вас есть десять файлов с определениями хранимых процедур (их проще изменить и отладить), список таблиц с полями и три набора исходных данных (для каждого клиента).Или из любого другого, более сложного и организованного набора.
Поскольку изменение файла схемы размером 200 КБ и его увеличение очень сложно.
Я лично написал несколько сценариев PHP, которые собирали весь файл длямне.Итак, сохраненный файл proc выглядит следующим образом:
--<?php $procParams = "@UserLogin varchar(50), @RightName varchar(100)"; ?>
--<?php if (!defined('PROC_INNER')) { ?>
if exists (select * from sys.objects where object_id = OBJECT_ID(N'DepriveUserRight') and type in (N'P', N'PC'))
begin
drop procedure DepriveUserRight
end;
go
--returns all the object types
create procedure DepriveUserRight @UserLogin varchar(50), @RightName varchar(100)
as
--<?php } ?>
declare @RightId int
select @RightId = RightID from [Right] where RightName = @RightName
exec DepriveUserRightById @UserLogin, @RightId
--<?php if (!defined('PROC_INNER')) { ?>
go
exec DepriveUserRight 'mgr', 'save_login'
--<?php } ?>
Я также включил некоторую семантику, такую как построение типов из определения таблицы.Таблицы выглядят так:
addTable('LinkObjectType');
?>
LinkObjectTypeID int not null identity primary key,
LinkObjectTypeName varchar(100) not null,
LinkObjectTypeData varchar(250) null
<?php
endTable();
И выполняемая мной команда php realSchema.sql > bin/realSchema.sql
(я использую MS SQL, и мое приложение не является веб-приложением, если это имеет значение.)