SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

C#からSQLDMOコンポーネントを使ってSQL Serverを操作する方法

SQLDMOコンポーネントを利用したスクリプトの出力

  • X ポスト
  • このエントリーをはてなブックマークに追加

テーブル一覧を取得する

 次はデータベースに存在するテーブル一覧の取得です。

 対象のデータベースにアクセスするために、SQLDMO.SQLServerClassクラスからDatabases(SQLDMO.Databasesインターフェース)を取得します。DatabasesインターフェースのItemメソッド引数にデータベース名称をセットし、SQLDMO._Databaseインターフェースを取得します。

SQLDMO.Databases databases = sqlServerClass.Databases;
SQLDMO._Database database = databases.Item("データベース名称", null);

 インターフェースのTablesプロパティにセットされているSQLDMO.Tablesプロパティからテーブル一覧が取得できます。

 テーブル名称はSQLDMO.TableのNameプロパティにセットされています。また、SystemObjectプロパティからシステムオブジェクトであるかどうかを判定することができます。

foreach (SQLDMO.Table table in database.Tables)
{
  if (!table.SystemObject)
  {
    Console.WriteLine("テーブル名称:{0}", table.Name);
  }
}

ビュー一覧を取得する

 ビュー一覧の取得はテーブル一覧取得時と同様、SQLDMO._DatabaseインターフェースのViewsプロパティを利用して行います。

 取得したSQLDMO.ViewのNameプロパティからビュー名称を取得できます。またテーブルと同様、SystemObjectプロパティを利用してシステムオブジェクトであるかどうかを判定できます。

foreach (SQLDMO.View view in database.Views)
{
  if (!view.SystemObject)
  {
    Console.WriteLine("ビュー名称:{0}", view.Name);
  }
}

プロシージャ一覧を取得する

 プロシージャ一覧取得もテーブル・ビューと同様です。SQLDMO._DatabaseインターフェースのStoredProceduresプロパティからプロシージャ一覧が取得でき、SQLDMO.StoredProcedureのNameプロパティからプロシージャ名称を取得できます。そして、SystemObjectプロパティからシステムオブジェクトであるかどうかを判定することができます。

foreach (SQLDMO.StoredProcedure procedure 
           in database.StoredProcedures)
{
  if (!procedure.SystemObject)
  {
    Console.WriteLine("プロシージャ名称:{0}", procedure.Name);
  }
}

スクリプトの作成

 今度はスクリプトファイルを作成します。

 現在のデータベースからテーブル作成のスクリプトを実行するには、テーブル一覧取得時に利用したSQLDMO.Tableインスタンスを使います。

 スクリプトの作成はtableインスタンスのScriptメソッドを用いて行います。

SQLDMO.Table table;

SQLDMO_SCRIPT_TYPE sqldmo_script_type 
  = SQLDMO_SCRIPT_TYPE.SQLDMOScript_Default
  | SQLDMO_SCRIPT_TYPE.SQLDMOScript_Drops
  | SQLDMO_SCRIPT_TYPE.SQLDMOScript_DRIWithNoCheck
  | SQLDMO_SCRIPT_TYPE.SQLDMOScript_DRI_PrimaryKey
  | SQLDMO_SCRIPT_TYPE.SQLDMOScript_DRI_UniqueKeys
  | SQLDMO_SCRIPT_TYPE.SQLDMOScript_DRI_Defaults
  | SQLDMO_SCRIPT_TYPE.SQLDMOScript_DRI_ForeignKeys
  | SQLDMO_SCRIPT_TYPE.SQLDMOScript_DRI_Checks
  | SQLDMO_SCRIPT_TYPE.SQLDMOScript_NoDRI
  | SQLDMO_SCRIPT_TYPE.SQLDMOScript_OwnerQualify;

table.Script(sqldmo_script_type,
             "ファイル名称", 
             null,
             SQLDMO_SCRIPT2_TYPE.SQLDMOScript2_AnsiFile);

 Scriptメソッドの第1引数、第4引数にはオプション設定として、「SQLDMO_SCRIPT_TYPE」、または「SQLDMO_SCRIPT2_TYPE」を設定します。

 同様に、ビュー・プロシージャについても同じ方法でスクリプトファイルを生成できます。オプション設定により生成されるスクリプトファイルの内容を変更できます(drop文の追加や、ファイルフォーマットの指定などができます)。

SQLDMO.View view;

SQLDMO_SCRIPT_TYPE sqldmo_script_type 
  = SQLDMO_SCRIPT_TYPE.SQLDMOScript_Default
  | SQLDMO_SCRIPT_TYPE.SQLDMOScript_Drops
  | SQLDMO_SCRIPT_TYPE.SQLDMOScript_DRIWithNoCheck
  | SQLDMO_SCRIPT_TYPE.SQLDMOScript_DRI_PrimaryKey
  | SQLDMO_SCRIPT_TYPE.SQLDMOScript_DRI_UniqueKeys
  | SQLDMO_SCRIPT_TYPE.SQLDMOScript_DRI_Defaults
  | SQLDMO_SCRIPT_TYPE.SQLDMOScript_DRI_ForeignKeys
  | SQLDMO_SCRIPT_TYPE.SQLDMOScript_DRI_Checks
  | SQLDMO_SCRIPT_TYPE.SQLDMOScript_NoDRI
  | SQLDMO_SCRIPT_TYPE.SQLDMOScript_OwnerQualify;

view.Script(sqldmo_script_type, 
            "ファイル名称", 
            SQLDMO_SCRIPT2_TYPE.SQLDMOScript2_AnsiFile);

 ただし、テーブルの場合と引数の数が違う点に注意してください。

次のページ
データベースのバックアップ

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

高山 昌悟(タカヤマ ショウゴ)

今までは主に、Windowsアプリケーションの開発を行ってきました。最近はWebアプリケーションの開発を行っています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1532 2007/08/13 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング