はじめに
SQL Server 2000からSQL Server 2005に移行してずいぶん経ちますが、まだまだ、SQL Server 2000を利用しているケースも多いかと思います(私も利用しています)。
ここでは、SQLDMOコンポーネントを利用してテーブルやビューの一覧などを取得し、スクリプト出力を行う手順を紹介したいと思います。
紹介する内容
- SQL Server一覧を取得する
- データベース一覧を取得する
- テーブル一覧を取得する
- ビュー一覧を取得する
- プロシージャ一覧を取得する
- スクリプトの作成
- データベースのバックアップ
- バックアップファイルからのリストア
対象読者
- Enterprise Managerなどを使わずにSQL Serverの簡単な操作がしたい方。
- .NETでWindowsアプリケーションを作ったことのある方、または作りたい方。
必要な環境
C#または、VS.NETのプログラミングが行える環境で、SQL Server 2000のクライアントコンポーネントがインストールされていること。
プログラム実行時の注意事項
.NET Framework 1.1でコーディングを行っています。実行する場合は、SQL Serverクライアントコンポーネントと.NET Framework 1.1以上がインストールされていることが必須条件です。
SQL Server一覧を取得する
まずは、操作を行うSQL Serverを決定しないと行けません。そこで、ローカルネットワーク上に存在するサーバの一覧を取得してみます。
サーバの一覧を取得するには、SQLDMO.ApplicationClassクラスを使用します。
SQLDMO.ApplicationClass applicationClass
= new SQLDMO.ApplicationClass();
SQLDMO.NameList nameList;
nameList = applicationClass.ListAvailableSQLServers();
ListAvailableSQLServers
メソッドを実行すると、SQLDMO.NameListクラスのインスタンスが取得できます。
取得したnameListインスタンスには、ネットワーク上に存在するサーバの一覧が格納されています。以下のようにすれば一覧を表示させることができます。
for(i = 1; i < nameList.Count; i++) { Console.WriteLine("サーバー名称:{0}", nameList.Item(i)); }
データベース一覧を取得する
作業対象となるSQL Serverが決定したら、次に操作を行うデータベースを選択します。まずは、サーバに構築されているデータベースの一覧を取得します。
データベースの一覧を取得するには、ストアドプロシージャ「sp_databases」を実行します。実行結果の先頭カラム「DATABASE_NAME」からデータベース名称を取得することができます。
SqlConnection connection = null; try { connection = new SqlConnection(); string connectionString = "Persist Security Info=False;Server=(local); User ID=sa;Password=password;"; connection.ConnectionString = connectionString; connection.Open(); SqlCommand command = new SqlCommand(); command.Connection = connection; command.CommandText = "sp_databases"; SqlDataReader reader = command.ExecuteReader(); this.databaseList.Items.Clear(); while (reader.Read()) { // 先頭カラムを取得します。 string text = reader.GetString(0); Console.WriteLine("データベース名称:{0}", text); } reader.Close(); } finally { connection.Close(); }