テーブル一覧を取得する
次はデータベースに存在するテーブル一覧の取得です。
対象のデータベースにアクセスするために、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);
ただし、テーブルの場合と引数の数が違う点に注意してください。