簡単! Management StudioからPowerShellを使う

それでは、PowerShellを使ったSQL Server 2008の操作方法について見ていこう。

PowerShellを単体で起動して、SQL Serverに接続することももちろん可能(詳細はこちらを参照)だが、SQL Server Management Studioから、そのままPowerShellを起動することもできる。まずSQL Server Management Studioを起動し、サーバーを右クリックして[PowerShellの起動]をクリックしてみよう。

SQL Server Management StudioのPowerShell起動メニュー

すると、SQL Serverを操作するために必要な設定がすべて行われた状態で、PowerShellが起動される。ここで、まず「dir」コマンドを実行してみよう。すると、「Databases」や「Logins」あるいは「Roles」などが表示されることを確認できる(ちなみに「WIN-KGNGSGG6CQN」というのはサーバー名である)。

SQL Server Management Studioから起動したPowerShellで「dir」コマンドを実行したときの画面。SQL Server専用のプロバイダが適用されており、通常起動時(プロバイダはファイルサーバ)とは異なる操作ができる

さらに、「cd .\Logins」というコマンドを実行することでLoginsフォルダの中に移動したり、その中で「dir」コマンドを実行することで、現在のログイン一覧を確認したりできるのだ。

「cd .\Logins」後に「dir」と入力したときの画面

このように、SQL ServerとPowerShellの組み合わせであれば、データベース管理で使用するさまざまなオブジェクトを、フォルダやファイルを扱うような感覚で操作できるのである。

また、SQL Server Management StudioからPowerShellを起動する場合、対象となるオブジェクトを右クリックして「PowerShellの起動」をクリックすることで、そのオブジェクトに相当するフォルダに移動した状態でPowerShellを起動できる。

たとえば、SQL Server Management Studioで「ログイン」を右クリックして「PowerShellの起動」をクリックすれば、「ログイン」に相当する「Logins」フォルダに移動した状態でPowerShellが起動される。

「ログイン」で右クリックして「PowerShellの起動」

すると、「Logins」フォルダに移動した状態でPowerShellが起動される

もちろん、オブジェクトの一覧を見るだけでなく、それらを作成したり削除したりすることも可能だ。PowerShellは.NET Frameworkを基盤としているので、SQL Serverの管理を行うときには、.NET FrameworkのクラスライブラリであるSQL Server管理オブジェクト(SMO)を使用することになる。Microsoft.SqlServer.Management.SMO名前空間のクラスは以下のWebサイトから確認できる。

PowerShellのプロバイダ

PowerShellではプロバイダという仕組みにより、特定の作業を容易にするための拡張が行えるようになっており、SQL Server 2008でも専用のプロバイダが用意されている。このSQL Server専用のプロバイダを使用することで、データベース内のさまざまなオブジェクトを操作する際に、ファイルシステムのように扱えるのだ。

たとえばテーブルのインデックスや制約といった項目を扱う場合でも、cdやdirといったコマンドを使用することができる。詳細を知りたい方は以下のWebサイトを参照するとよいだろう。

SQL Server PowerShell プロバイダの使用
http://technet.microsoft.com/ja-jp/library/cc281947.aspx

なお、PowerShellは.NET Frameworkを基盤としているため、以前からADO.NETを使用すればデータベースも操作できたが、SQL Server専用プロバイダを使用すればもっと直感的にデータベース操作を行うことができるのである。