Landscape トップページ | < 前の日 2006-08-04 2006-08-29 次の日 2006-09-30 >

Landscape - エンジニアのメモ 2006-08-29

MS SQL Server で DB から SQL スクリプトを生成する手順とオプション


* MS SQL Server で DB から SQL スクリプトを生成する手順とオプション

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [MS SQL Server] [SQL]

MS SQL Server2000 の 管理ツール Enterprise Manager で、既に存在するデータベースのインスタンスやテーブル、ストアドプロシージャなどをスクリプト化する手順と、指定するオプションのメモ。

- なぜ SQL スクリプトを作成するのか

既存の DB から SQL スクリプトを作成するという、本来と逆の手順をとるのはなぜか。それは、DB のテーブル設計やストアドのコーディングを RDBMS 付属の GUI ツールや自動生成ツールに頼るようになり、CREATE TABLE を手で書いたりすることがなくなったからだ。

要するに、GUI のツールで開発用サーバ上の DB を直接操作しながら作って、完成した時点でテストサーバや本番サーバに配備するというスタイルで DB まわりを作るようになったので、逆の作業が必要になったということだ。

もちろん、私も初めて DB を作ったときは CREATE TABLE をテキストエディタで手書きしたものだ。その後 CREATE TABLE を自動生成するスクリプトを作ったり、したが、現在は GUI のツールを利用するというスタイルに落ち着いている。私が扱うのはテーブル数15から30程度の小規模な DB なので、それで十分用が済んでしまう。

わざわざ SQL に落とさずに、SQL Server の DTS (Data Transformation Service - データ変換サービス) で転送すれば用が済んでしまう場合もある。ただ、プレーンテキストのスクリプトにするということは、スナップショットとして保存したり、Subversion や PVCS、VSS などの汎用のバージョン管理ツールで履歴を管理できるということだ。これは大きな利点だ。SQL Server は VisualStudio + VSS と緊密に連携することもできるが、サーバの構成などによってはその方法を採れないことも多いため、スクリプト化は非常にありがたい機能だ。

- SQL スクリプト生成の手順

Enterprise Manager の データベースオブジェクトを右クリックし、SQL スクリプト生成を選択。
「SQL スクリプト生成ウインドウ」が表示されるので、対象オブジェクトやオプションを指定する。

以下、オプションのメモ。
■はチェックボックスのチェックオンを、□はオフを表す。
●はラジオボタンのチェックオンを、○はオフを表す。

- 「全般」タブ スクリプト化するオブジェクト指定

基本は全オブジェクトを SQL スクリプト化する。抜けがあると怖いので、全オブジェクトのスクリプト(O) を明示的に指定するのがよい。

■全オブジェクトのスクリプト(O)

■全テーブル(T)
■全ビュー(W)
■全ストアド プロシージャ(P)
■全デフォルト(D)
■全ルール(U)
■全ユーザー定義データ型(Y)
■全ユーザー定義関数(F)

- 「書式」タブ スクリプト書式オプション

「すべての従属オブジェクトに対してスクリプトを生成(E)」は今回必要ないのでオフにした。

スクリプト オプションを使用して、オブジェクト スクリプトを作成する方法を指定できます。

■オブジェクトごとに CREATE <object> コマンドを生成(C)
■オブジェクトごとに DROP <object> コマンドを生成(D)
□すべての従属オブジェクトに対してスクリプトを生成(E)
■スクリプト ファイルに説明用ヘッダーを含める(I)
■拡張プロパティを含める(X)
□7.0 互換の機能のみスクリプトを作成(O)

スクリプト ファイルに説明用ヘッダーを含める(I)をオンにしておくと、対象オブジェクトの名前と現在の日付をコメントとして挿入してくれる。以下のような感じ。「/****** オブジェクト : ストアド プロシージャ dbo.P_GetLandscapeCustomers スクリプト日付 : 2006/08/23 12:43:12 ******/」テキストの差分をとる場合に邪魔になる場合はオフにすればいい。

「拡張プロパティを含める」をオンにしておくと、EnterpriseManager のテーブルデザイナで付加したカラム(列)への説明コメントも含めてスクリプトを生成してくれる。

- 「オプション」タブ スクリプト作成オプション

全部チェックオン。ただし、「データベース スクリプト(C)」はデータベースファイル (.mdf) や トランザクションログファイル (.ldf) の絶対パスをハードコードしてしまう。そのため、パスが異なる環境で実行する場合はチェックをオフにするか、スクリプト中のパスを修正して整合性をとる。

■データベース スクリプト(C)
■データベース ユーザーとデータベース ロール スクリプト(S)
■SQL Server ログイン (Windows と SQL Server ログイン) スクリプト(L)
■オブジェクト レベル権限スクリプト(M)

テーブル スクリプト作成オプション
■インデックス スクリプト(X)
■フルテキスト インデックス スクリプト(I)
■トリガ スクリプト(R)
■主キー、外部キー、デフォルトと CHECK 制約スクリプト(K)

ファイル オプション
○ファイル フォーマット
○MS-DOS テキスト (OEM)(D)
○Windows テキスト (ANSI)(W)
●インターナショナル テキスト (Unicode)(U)

生成するファイル
●1 ファイルに作成(F)
○オブジェクトごとにファイル作成(B)


すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。