先生のための SQL Server 2017 と Visual Studio 2017 による C# データベースアプリケーション開発  
     
<<前へ 第1回 SQL Server 2017 のインストール 次へ>>
     
  なぜ SQL Server と Visual Studio を使うのか  
     
  SQL Server はマイクロソフト社が開発するデータベースシステムだ。最初のバージョンが1989年にリリースされて以来、今日まで改良を重ね続けられている長い歴史がある。スタンドアロンのオンプレミスサーバーで運用されることもあれば、複数のサーバーで分散運用されることもあり、小規模運用から大規模運用まで広く対応することができ、多くの企業で運用実績がある。また業務システムとしての利用ではなく Windows クライアントコンピュータにインストールして個人用途で使うこともできるし、クラウドで利用できる Microsoft Azure SQL Database もある。

データベースとして SQL Server を選択するメリットは、SQL Server Management Studio (SSMS) というすぐれた開発環境が用意されていること、Visual Studio による C# アプリケーション開発において対話的に進めるウィザードと豊富なデータ接続クラスを使った効率の良い開発ができること、統合 Windows 認証による一元的なセキュリティ管理ができることなどである。

Visual Studio を使ったアプリケーション開発については初心者向けのわかりやすい書籍がたくさん出版されている。しかし多くは Windows フォームを作ってボタンやテキストボックスを配置し、電卓やメモ帳を作る程度で説明を終わっている。データベースアプリケーションに関する書籍もいくつか出版されているが、最新の Visual Studio に最適化されておらず、今日的な開発スタイルを説明していないものが多い。そのため古い手法によって解説された複雑な開発手法を説明した書籍を手に取って途方にくれる人も多いに違いない。実際、私がそうだった。Web 記事も同様であり、古い手法を使ったものと新しい手法を使ったものが混在し、いったいどれを使ってよいのか初心者には判断できない。実際のところは、データベースアプリケーションの開発に関して Visual Studio と C# は進化し続けており、現在の最新バージョンである Visual Studio 2017 ではデータ接続に関する自動化が確立し、手間なくアプリケーションを開発できるようになっている。目からうろこが落ちるほどだ。

私は前任校の兵庫県立西宮香風高等学校で学籍管理のデータベースシステムを SQL Server と InfoPath、Access などを使って構築、運用した経験を持っている。クライアントに InfoPath や Access という Office アプリケーションを利用する方法は「OBA 開発 = Office Business Application 開発」といい、クライアントアプリケーションの開発に手間をかけない方法だった。しかし今日では、前述したように Visual Studio による C# データベースアプリケーション開発は極めて簡単になっており、初心者でもアプリケーションを開発することが難しくない時代になっている。

この記事では私の学籍管理データベースシステムを作った経験をもとにして SQL Server と Visual Studio による C# アプリケーション開発の具体例を説明する。テーマは学校の学籍管理だが、データベースの基本が理解できれば、これを参考にして中小規模の様々なデータベースシステムに応用することができるだろう。
 
     
  SQL Server 2017 のインストール  
   
  SQL Server は Web で検索し、マイクロソフト社の SQL Server トップページからインストールすることができる。現時点で最新のバージョンは SQL Server 2017 である。SQL Server インストールサイトのデザインは変わることがあるが、現時点ではつぎのようなものだ。

SQL Server のインストールはウィザードに従って進めればよく、それほど難しいものではないが、いくつかの設定をデフォルト値から必要に応じた変更をすることで、後の開発がすすめやすくなる。
 
     
  マイクロソフト社のSQL Serverのポータルサイトの画像  
     
  SQL Server のトップページから「今すぐ試す」をクリックすると SQL Server ダウンロードのページに移動する。このページでは SQL Server 評価版と無料で利用できる Developer エディションと Express エディションへのリンクがある。  
     
  マイクロソフト社のSQL Serverの各エディションのダウンロードページの画像
     
  Express エディションは個人での利用や小規模運用アプリケーションなど一定の条件下で無料で利用できるエディションであり、無料だが SQL Server の基本的な機能は持っている。Developer エディションは開発者向けのもので、Enterprise Edition の機能がすべて含まれており、開発およびテストシステムとしての利用に対して無料で使うことができるが、実運用する場合はライセンスを購入して使わなければいけない。ここでは Developer エディションをインストールする例を示す。  
     
  マイクロソフト社からSQL Serverをダウンロードするメニュー画面  
     
  インストールの方法は3つある。設定項目をデフォルトのままインストールする「基本」と、各種設定を決めながらインストールする「カスタム」そしてインストールメディアだけをダウンロードして後から展開しインストールする「メディアのダウンロード」だ。ここでは「カスタム」を選択したインストール例を示そう。

最初のオプションではダウンロードする SQL Server の言語とダウンロード先のフォルダを決める。言語は「日本語」を選択し、ダウンロードするフォルダは空き容量の余裕のあるところを設定しよう。デフォルト値で問題なければそのままでよい。
 
     
  マイクロソフト社のSQL Server 2017のDeveloper Editionをダウンロードするメニュー画面  
     
  次へ進むとインストールパッケージのダウンロードが始まる。  
     
  マイクロソフト社のSQL Server 2017 Developer Editionインストールパッケージをダウンロードしている画像  
     
  インストールパッケージのダウンロードが終わると SQL Server インストールセンターが起動する。インストールセンターは SQL Server の様々なオプションを変更し、関連するサービスやツールのインストールを支援するもので、開発や運用を開始した後も利用する場面がある。

ここでは自分の Windows クライアントコンピュータに SQL Server をインストールすることとし、SQL Server の新規スタンドアロンインストールを実行する。
 
     
  マイクロソフトSQL Server 2017インストールセンターの起動画面  
     
  次の画面はプロダクトキーだが、ここでは無料のエディションを使いたいので「無償のエディションを指定する」のラジオボタンを選択し、ドロップダウンリストから「Developer」を選択して「次へ」をクリックする。  
     
  マイクロソフトSQL Server 2017セットアップのプロダクトキー入力画面  
     
  次はライセンス条項だ。ライセンス条項を読み「ライセンス条項に同意します。」のチェックボックスにチェックをして「次へ」とすすむ。  
     
  マイクロソフトSQL Server 2017セットアップのライセンス条項画面  
     
  次にセットアップファイルのインストールがはじまる。  
     
  マイクロソフト社のSQL Server 2017セットアップファイルのインストールがはじまった画面  
     
  機能の選択画面では、SQL Server 本体に加えてオプションのプログラムなどを選択し一括でインストールできるようになっている。ここでは最も基本的な「データベースエンジンサービス」だけチェックを入れてインストールしよう。  
     
  マイクロソフトSQL Server 2017セットアップの機能の選択画面  
     
  マイクロソフトSQL Server 2017インストールで機能を選択した画面  
     
  インスタンスの構成では、インストールする SQL Server の名前などを決めることができる。デフォルトでは「既定のインスタンス」で「MSSQLSERVER」という名前になっている。特に問題がなければこの名前ですすめよう。  
     
  マイクロソフトSQL Server 2017インストールのインスタンスの構成画面  
     
  次の「サーバーの構成」では変更したほうがいいオプションがある。ここでは、このインストールによって構成される3つのサービスが表示されている。

最初の「SQL Server エージェント」はある決まった日付と時間で自動処理をしたり定型のバッチ処理を毎日行ったりといった SQL Server の自動化をする「ジョブ」の実行と SQL Server の監視、および警告の発生を行うサービスだ。2つめの「SQL Server データベースエンジン」が SQL Server データベースの本体である。

3つめの「SQL Server Browser」は、SQL Server のインスタンスをネットワーク上で検索できるようにするサービスだ。一般的にセキュリティ上 SQL Server データベースは、許可されたアプリケーション以外から接続されない方が安全だ。したがって実運用では SQL Server Browser サービスは止めておくことがよい。そのためインストールウィザードではデフォルトでサービスが「無効」になっている。しかし開発中では Visual Studio からデータベースに簡単に接続できた方がよいので、ここでは「スタートアップの種類」を「無効」から「自動」に切り替えておこう。
 
     
  マイクロソフトSQL Server 2017インストールのサーバーの構成画面  
     
  マイクロソフトSQL Server 2017インストールのサーバーの構成でスタートアップの種類を選択する画面  
     
  マイクロソフトSQL Server 2017セットアップでサーバーの構成のスタートアップの種類を決めた画面  
     
  次の「データベースエンジンの構成」では認証モードを設定する。認証モードは、SQL Server に接続するときのユーザー認証をどのように行うかということだ。SQL Server の認証には「Windows 認証」と「SQL Server 認証」の2つがある。SQL Server の認証モードは、この2つの認証をどのように取り扱うかを決めることになる。解説を加えながら設定をどうすればいいか考えよう。

もともと SQL Server は単体の製品として開発され、アクセス権の設定を SQL Server 自身が制御するように作られた。それは SQL Sever 自体にユーザー名とパスワードを登録しておき、SQL Server に接続するときにユーザー名とパスワードを伝えて SQL Server が認証をするものだ。これを「SQL Server 認証」という。

しかし多数の SQL Server を利用する環境や、他のサービス、たとえば Web Server などと連携するときに、それぞれの SQL Server が個別にユーザー認証を管理していてはユーザー管理が難しくなる。そこでマイクロソフトは Active Directory という機能を開発し、SQL Server を含めたマイクロソフト製品の認証システムを一元化することを実現した。この Active Directory を使うことを「Windows 認証」という。以前は「統合 Windows 認証」と呼ばれたこともある。

実運用環境で、Active Directory サービスを導入しているならば、SQL Server も Windows 認証を取り入れることがよい。Active Directory による一元的なユーザー管理ができることが Windows システムと SQL Server を使う大きなメリットだからだ。しかし Active Directory が構築されていても Windows 認証以外で接続するケースが考えられる場合など、Windows 認証だけでは支障がある場合がある。そこで Windows 認証と SQL Server 認証の両方を使うことができる「混合モード」が用意されている。

だがセキュリティ面では SQL Server 認証は使わない方がよい。それは、管理者のアカウントが sa であることがわかっているので、sa を狙った不正アクセスが試みられることが想定できるからだ。しかし、もし SQL Server 認証を使わない「Windows 認証モード」にすると、万一 Windows アカウントが使えなくなった時に SQL Server を管理することができなくなる。実際に筆者も SQL Server 認証を使わない設定で開発していて、Windows アカウントを削除して管理不可能になった失敗も経験している。特に Windows 10 の場合は自分が Windows アカウントでログインしているいることを意識せずに使っている場合もあるため、アカウント関係で問題が発生したときに SQL Server 認証を利用できることは開発途中における安全対策にもなる。
 
     
  マイクロソフトSQL Server 2017セットアップで認証モードを決める画面  
     
  前述のような観点から、デフォルトで「Windows 認証モード」になっている認証モードを「混合モード」に変更しよう。混合モードでは SQL Server 認証も使えるようになるため、SQL Server のシステム管理者アカウント sa のパスワードも設定しなければならない。  
     
  マイクロソフトSQL Server 2017セットアップでSQL Server認証のパスワードを決める画面  
     
  次に Windows 認証で使う Windows アカウントについて、既存のどのアカウントに管理者権限を割り当てるかを決める。これは画面の下にある「SQL Server 管理者の指定」という項目で、最初は空白になっており、横には「SQL Server の管理者には、データベースエンジンに対する無制限のアクセス権があります。」と説明がある。

管理者を、あらかじめ Active Directory に登録されたユーザーの中から選んで設定することもできるが、ここでは今 Windows を使っている自分が管理者になるとして「現在のユーザーの追加」ボタンをクリックする。すると自分をあらわすユーザー名が表示され設定できる。
 
     
  マイクロソフトSQL Server 2017セットアップでWindows認証で使うユーザーを決める画面  
     
  マイクロソフトSQL Server 2017セットアップでWindows認証で使うユーザーを選択して決めた画面  
     
  管理者の設定ができれば「次へ」ボタンをクリックし「インストールの準備完了」へすすむ。  
     
  マイクロソフトSQL Server 2017セットアップでインストールの準備が完了した画面  
     
  「インストール」ボタンをクリックするとインストールがはじまる。  
     
  マイクロソフトSQL Server 2017セットアップでインストールが開始された画面  
     
  マイクロソフトSQL Server 2017セットアップでインストールが進行中の画面  
     
  インストールが完了すれば機能の状態を確認できる「完了」画面になる。項目に緑色のチェックマークが付いていれば正しくインストールされている。  
     
  マイクロソフトSQL Server 2017でインストールが完了した画面  
     
  これで SQL Server のインストールは完了した。  
     
  2017年10月8日

松本吉生(まつもとよしお) Microsoft MVP Data Platform

1961年京都に生まれ、神戸で幼少期を過ごす。大学で応用化学を学んだのち、理科教諭として高等学校に勤務する。教育の情報化が進む中で校内ネットワークの構築運用に従事し、兵庫県立明石高等学校で文部科学省の「光ファイバー網による学校ネットワーク活用方法研究開発事業」に携わる。兵庫県立西宮香風高等学校では多部制単位制の複雑な教育システムを管理する学籍管理データベースシステムを SQL Server と InfoPath、Access などの Office ソフトウエアによる OBA 開発で構築、運用する。現在は兵庫県立神戸工業高等学校で C# プログラミング、 IoT などのコンピュータ教育を行う。2004年からマイクロソフト MVP (Microsoft Most Valuable Professional)を受賞し、現在14回目の連続受賞。2016年にマイクロソフト認定教育者(Microsoft Innovative Educator Experts : MIEE)を受賞し、現在3回目の連続受賞。