連載:Windowsフォーム開発入門【Visual Studio 2010対応】

リモート・データ活用術〜SQL Server編〜

初音 玲
2011/02/09

 業務アプリケーションには、「複数の人が同じデータを使って協調して働く仕組みをサポートする」という面がある。プログラムが動作しているPC上のデータ(以下、ローカル・データ)に限定されていては、「同じデータを使って」という要件の実現は難しい。そこで必要になってくるのが、データを集中的に管理する仕組みの導入と、その仕組みにあるデータ(以下、リモート・データ)へのアクセス手段だ。

 今回は、リモート・データを管理する仕組みとして、データベース・サーバであるSQL Serverを想定し、WindowsフォームからSQL Serverへの接続、データ取得、データ更新などを、UI(ユーザー・インターフェイス)や画面遷移なども含めて総合的に解説する。

 本稿で使用する各種ツールは下記のリンク先でダウンロードできる。

SQL Server Expressの設定

 無償で利用できるSQL Server Expressは、基本的なアーキテクチャが上位エディションと同じであり、小規模業務や開発環境としての利用に適している。

 開発環境でSQL Server Expressを使うときの注意点は、Visual Studio(で開発するプログラム)とSQL Server Expressが同一PC上で稼働していたとしてもTCP/IPを利用するように、接続方法を設定することだ。次の図は、その接続構成内容を表している。

図1 サンプルの動作環境

 このように設定することで、たとえ同一PC上であっても接続的にはネットワークを経由したリモート接続の状態を作成できるので、「実運用環境では別PC上で稼働するSQL Serverを使う」というケースでも(開発環境と)同様の動きを期待できる。

 それでは、実際にTCP/IPを利用するように設定してみよう。

SQL Server Configuration Manager

 以下に示すSQL Server Configuration Manager(=構成マネージャ)は、SQL Serverサービスの起動停止やネットワークの構成を行うための管理ツールだ。

 SQL Server Configuration Managerを起動したら(=[スタート]メニューの[すべてのプログラム]−[Microsoft SQL Server 2008]−[構成ツール]−[SQL Server 構成マネージャ]から起動できる)、図2のように、左側のツリーから[SQL Server のサービス]を選択して、右側のリストで「SQL Server (SQLEXPRESS)」と「SQL Server Browser」が「実行中」になっているかを確認する。実行中でなければ、(各項目の右クリック・メニューから[開始]を選択して*1)この2つのサービスを起動する。

図2 SQL Server Configuration Manager

*1 「SQL Server Browser」項目で[開始]を選択できない場合は、その項目の右クリック・メニューから[プロパティ]を選択し、表示される[SQL Server Browserのプロパティ]ダイアログの[サービス]タブを開き、[開始モード]に「自動」を設定する。[OK]ボタンをクリックしてダイアログを閉じると、[開始]を選択できるようになる。

 次に、リモート接続と同じプロトコルのみをSQL Serverが使うように設定する。図3を参考に、左側のツリーから[SQL Server ネットワークの構成]−[SQLEXPRESS のプロトコル]を選択して、右側のリストで「TCP/IP」だけを有効にする(=右クリック・メニューから[有効化]を選択する)。

図3 SQLEXPRESSのプロトコルの設定
このサンプルの開発環境はWindows 7の64bit環境なので、[SQL Server ネットワークの構成]のほかに、[SQL Server ネットワークの構成 (32 ビット)]が存在するが、ここでは「(32 ビット)」の表記がない方を設定している。

 最後に、図4を参考に、左側のツリーから[SQL Native Client 10.0 の構成]−[クライアント プロトコル]を選択して、右側のリストで「TCP/IP」の有効化の設定を行えば、SQL Server関連の環境設定は完了となる。

図4 SQL Native Clientのプロトコルの設定

 後は必要に応じてWindowsファイアウォールの設定を行えばよい(参考:「Windows 7のファイアウォール機能」)。

 以上の設定により、プログラムとSQL Server Express間の接続でTCP/IPが用いられるようになった。

サンプル・データのインポート

 本稿で使用するサンプル・データには、SQL Server 2000用に提供されているpubsデータベースを用いる。具体的には、「SQL Server 2000 Sample Databases」からダウンロードできるインストーラ・ファイル「SQL2000SampleDb.msi」を実行してサンプル・データベースのファイル群を「C:\SQL Server 2000 Sample Databases」にインストールし、そのディレクトリ内にあるinstpubs.sqlファイルをSQL Server Management Studio(以下、SSMS)で実行する。これによりpubsデータベースがSQL Server Express上に作成される。

SQL Server Management Studioへのログイン

 まずはSSMSにログインする。

 SQL Server Expressの認証モードの初期状態はWindows認証なので、SSMSの起動時に表示される[サーバーへの接続]ダイアログで[認証]コンボボックスの値を「Windows 認証」に設定して[接続]ボタンをクリックする。

 SQL Server Expressと同じPC上でSSMSを起動しているならば、[サーバーへの接続]ダイアログの[サーバー名]には(デフォルトの設定内容でSQL Server Expressをインストールしている場合)「localhost\sqlexpress」を指定すればよい。

図5 SMSSにログイン
SSMSの起動時に表示されるダイアログ。SSMSを起動するには、[スタート]メニューの[すべてのプログラム]−[Microsoft SQL Server 2008]−[SQL Server Management Studio]から起動できる。

pubsデータベースの作成

 以上の手順によりSMSSへログインできたら、pubsデータベースを作成する。具体的には、メニューバーの[ファイル]−[開く]−[ファイル]を実行し、そこで表示される[ファイルを開く]ダイアログで「C:\SQL Server 2000 Sample Databases\instpubs.sql」ファイルを指定して[開く]ボタンをクリックする。instpubs.sqlファイルがSQLコード・エディタで開かれ、[SQL エディタ]ツールバーが表示されるので、そのツールバーにある[実行]ボタンをクリックする。以上の手順により、SSMSの[オブジェクト エクスプローラ]のルートにある[<サーバー項目>]−[データベース]の配下に[pubs]データベース項目が作成され(表示されない場合は[データベース]項目の右クリック・メニューから[最新の情報に更新]を選択)、サンプル・データがインポートされた状態となる。

データベースへの接続に関する設定

 さらに、このpubsデータベースへの接続に関する設定を行う。

SQL Server認証モードによる接続への設定変更

 Windows認証では、Windows OSにログインしたIDでSQL Serverにアクセスすると、自動的にSQL Serverにもログインできるため、先ほどの[サーバーへの接続]ダイアログ上でIDとパスワードを入力する必要はない。ただし、Active DirectoryなどのWindowsネットワーク環境の整備が前提となっている。

 一方、SQL Serverがサポートするもう1つの認証方式「SQL Server認証モード」では、IDとパスワードの入力が必須となるが、ID運用をWindowsの世界から切り離せる。

 そこで、今回のサンプルではSQL Server認証モードで接続してみたいと思う。

(1)SQL Server認証モードの有効化

 まず、SQL Server認証モードを有効にする。

 いったんWindows認証でSMSSにログインした状態で、SSMSの[オブジェクト エクスプローラ]のルートにある[<サーバー項目>]の右クリック・メニューから[プロパティ]を選択して[サーバーのプロパティ]ダイアログを表示する(図6参照)。

図6 SQL Server認証モードの設定

 このダイアログの[ページの選択]リストから「セキュリティ」項目を選択して、右側の[サーバー認証]欄で[SQL Server 認証モードと Windows 認証モード]ラジオボタンを選択し、[OK]ボタンをクリックしてダイアログを閉じる。この手順により、(Windows認証に加えて)SQL Server認証も使えるように設定される。

(2)ログイン・ユーザーの作成

 次に、SQL Server認証モード用のログイン・ユーザーを作成する。

 ログイン・ユーザーを作成するためにはSSMSの[オブジェクト エクスプローラ]で[<サーバー項目>]−[セキュリティ]−[ログイン]ノードの右クリック・メニューから[新しいログイン]を選択して、図7に示す[ログイン - 新規作成]ダイアログを開く。このダイアログで、認証モード(=[SQL Server 認証]ラジオボタンを選択)、ID(=[ログイン名])、パスワード、既定のデータベース、既定の言語などを設定する。

図7 ログイン・ユーザーの作成
この例では[ログイン名]を「hatsune」とし、認証モードは[SQL Server 認証]ラジオボタンを選択、[パスワード]に任意の文字列を入力し、[既定のデータベース]コンボボックスで「pubs」を、[既定の言語]コンボボックスで「Japanese」を選択している。最後に[OK]ボタンをクリックすれば、ログイン・ユーザーが作成される。

(3)データベース・ユーザーの作成

 さらに、SQL Serverデータベース用のユーザーを作成する。

 SQL Serverでは、SQL Server自体にログインする「ログイン・ユーザー」と、SQL Server上の各データベースを使うための「データベース・ユーザー」の2段階でアクセス権限を管理している。この両者の関係を図で表すと、図8のようになる。

図8 ログイン・ユーザーとデータベース・ユーザー

 データベース・ユーザーとは、データベースごとに定義されたユーザーで、このユーザーに対して、どのような操作を許すか(例えば読み取りはOKだが更新はNGなど)を設定する。

 ログイン・ユーザーでログインしてデータベースを使うためには、ログイン・ユーザーに対してデータベース・ユーザーの権限も同時に割り当てなければならない。サンプルではpubsデータベースを使用するので、pubsデータベースのデータベース・ユーザーを作成する必要がある。

 これには、SSMSの[オブジェクト エクスプローラ]で[<サーバー項目>]−[データベース]−[pubs]−[セキュリティ]−[ユーザー]ノードの右クリック・メニューから[新しいユーザー]を選択して、図9に示す[データベース ユーザー - 新規]ダイアログを開く。このダイアログで[ユーザー名](=データベース・ユーザー名)と[ログイン名](=ログイン・ユーザー名)を指定する。

図9 ログイン・ユーザーの作成

 図9では、[データベース ロールのメンバーシップ]として「db_datareader」と「db_datawriter」を指定して、データの読み書きが行える権限を(データベース・ユーザーに対して)割り当てている。

 以上で、SQL Server認証モードで接続するための準備が整った。SQL Server認証モードを利用するために、ここでいったんSQL Serverを再起動しておこう。再起動は、[オブジェクト エクスプローラ]で[<サーバー項目>]の右クリック・メニューから[再起動]を選択すればよい。

(4)ログインの確認

 それでは実際にSQL Server認証モードでログインしてみよう。

 SSMSで、メニューバーの[ファイル]−[オブジェクト エクスプローラを切断]を選択して、SQL Serverから一度ログアウトする。それから、メニューバーの[ファイル]−[オブジェクト エクスプローラを接続]を選択して[サーバーへの接続]ダイアログを表示し、そこで先ほど登録したログイン・ユーザーにより再度[接続]を行い、pubsデータベースが使用できるかを確認する。次の画面は、その例である。

先ほど登録したログイン・ユーザーを指定して[接続]ボタンをクリック
pubsデータベースが使用できるかを確認する
図10 SQL Server認証モードでの接続

 以上でSQL Serverを用いた開発環境は整ったので、実際のSQL Serverデータベース開発の説明に入っていこう。


 INDEX
  [連載]Windowsフォーム開発入門【Visual Studio 2010対応】
  リモート・データ活用術〜SQL Server編〜
  1.SQL Server Expressの設定
    2.画面遷移/スプラッシュ・スクリーン/ログイン画面
    3.タイトル一覧画面(メイン画面)
    4.編集画面(ダイアログ画面)
    5.最終仕上げ

インデックス・ページヘ  「Windowsフォーム開発入門」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH