SQLデプロイメントスクリプトを組み立てる文明化された方法があるかどうかは疑問でした。あなたがストアドプロシージャ定義を持つ10個のファイルを持っている場合(それを変更してデバッグする方が簡単な場合)、フィールドを持つテーブルのリストと(クライアントごとの)初期データの3つのセット。あるいは、より複雑で組織化された他のセットからも。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ツールは優れており、おそらくDBとデータにパッチを適用するのに適しています。私はSQLパッケージャを忘れていました。 – Tony