2011-01-18 3 views
0

Мне было интересно, существует ли какой-либо цивилизованный метод сборки сценариев развертывания 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, и мое приложение не веб-один, если это имеет значение.)

ответ

0

Я бы порекомендовал вам получите инструмент проектирования для управления своей базой данных, создающий для вас сценарий.

Лично я использую Dezign for Databases от Datanamic as, за деньги, это отличный инструмент.

Другой, который я использовал, является открытым исходным кодом, является DBDesignerFork. Он также может перепроектировать вашу базу данных, чтобы упростить создание модели.

Конечно, эти инструменты не смогут помочь с пользовательскими сценариями данных, но это не должно быть проблемой для человека, который настраивает БД для запуска сценария создания таблицы, а затем импортирует данные.

+1

Обычно я использую Redgate для быстрого и легкого развертывания изменений в дизайне. http://www.red-gate.com/products/sql-development/sql-comparison-bundle/ – Hawxby

+0

Инструменты Redgate также превосходны и, вероятно, более подходят для исправления базы данных и данных. Я забыл о SQL-пакетере. – Tony

Смежные вопросы