Мне было интересно, существует ли какой-либо цивилизованный метод сборки сценариев развертывания SQL из частей. Например, если у вас есть десять файлов с определениями хранимых процедур (проще их изменить и отладить), список таблиц с полями и тремя наборами исходных данных (для каждого клиента). Или из любого другого набора, который более сложный и организованный.Построение сценария развертывания SQL
Потому что изменение файла схемы размером 200k и ростом очень тяжелое.
Я лично закончил тем, что написал несколько скриптов 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, и мое приложение не веб-один, если это имеет значение.)
Обычно я использую Redgate для быстрого и легкого развертывания изменений в дизайне. http://www.red-gate.com/products/sql-development/sql-comparison-bundle/ – Hawxby
Инструменты Redgate также превосходны и, вероятно, более подходят для исправления базы данных и данных. Я забыл о SQL-пакетере. – Tony