SHOEISHA iD

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

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

特集記事

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

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

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

SQLDMOコンポーネントを使うとSQL Serverからテーブル情報を取得したり、さまざまなスクリプトを出力したりすることができます。ここではデータベース名の取得からバックアップファイルからのリストアまで、SQLDMOを使った操作方法を紹介します。

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

はじめに

 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();
}

次のページ
テーブル一覧を取得する

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング