2011-01-18 5 views
0

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を使用し、それが重要な場合は、私のアプリケーションは、ウェブではありません。)

答えて

0

私はあなたをお勧めしますあなたのためのスクリプトを作成するデータベースを管理するための設計ツールを入手してください。

私はからDatanamicに個人的に私はお金のために、それは素晴らしいツールです。

私が使用しているオープンソースのもう1つは、DBDesignerForkです。また、データベースをリバースエンジニアリングしてモデルの作成を容易にすることもできます。

もちろん、これらのツールはユーザーデータスクリプトを手助けすることはできませんが、テーブル作成スクリプトを実行してデータをインポートするようにDBを設定する人にとっては問題にはなりません。

+1

私は、設計変更を迅速かつ容易に展開するために、通常、Redgateを使用します。 http://www.red-gate.com/products/sql-development/sql-comparison-bundle/ – Hawxby

+0

Redgateツールは優れており、おそらくDBとデータにパッチを適用するのに適しています。私はSQLパッケージャを忘れていました。 – Tony

関連する問題