• 【SQL】 SQL Server 2008 Experience サイト公開

    Tech・Edの期間中、奥主が会場でビデオを担いでどこかに消えていくのを目撃した人にようやく報告ができます。
    (●^o^●)

    SQL Server という製品は長く、そしてすごい経験を持った方々が結構いらっしゃいます。本を執筆されていたり、現場の最前線でチューニングやコンサルティングをしている方々です。こういう方に SQL Server 2008 についてお聞きして回るというのをやってみました。今回は初めての試みでもあったので有名な方 及び 社員ですが、かなりSQL Server 2008の各機能に関して要点に絞って話をしていただけていると思います。

    SQL Server 2008 Experience は ITプロフェッショナルの方だけでなく、開発者向けのビデオもあります。実はこちらのビデオは小高を中心に、松崎大野も絡んで制作をしています。他にも米国の開発チームが制作した英語なんだけれども日本語字幕がついているビデオの本数もかなりあります。秘話までいかないですが、裏話はなかなか面白いですのでぜひご覧になってください!

    SQL Server 2008 Experience (直接リンク)
    http://www.microsoft.com/sql/experience/?loc=jp (Silverlight版) ※10/1更新
    http://www.microsoft.com/sql/experience/html/?loc=jp (HTML+Media Player版) ※10/1更新

    MSDN SQL Server DevCenter
    http://msdn.microsoft.com/ja-jp/sqlserver/default(en-us).aspx
    ※TOPのハイライト項目に入りました。原稿は小高です。

    TechNet SQL Server TechCenter
    http://technet.microsoft.com/ja-jp/sqlserver/default.aspx
    ※TOPのハイライト項目に入りました。原稿は奥主です。

    私のビデオの秘話を少し書いておくと、Tech・Ed会場で撮ったものについてはかなーり疲れていますが、これは現地のスケジュールのハードさによるものなので許してください。<(_ _)>

    それから平山のビデオだけ、奥主がマイクロソフトのロゴシャツを着ておらず、かなりくしゃくしゃな普段着なんですが、撮影日当日 かなり雨が降ってまして、ビシャビシャになってしまった結果、カバンに入れていた方のシャツを着たのであんなことになってます。これまたすみません、見苦しくて。。。<(_ _)>

    このビデオに出ている達人の皆さんにはPASSJ(SQL Serverユーザーグループ)の会員(理事)の方も多くいらっしゃいますのでこれからSQL Serverに取り組む方々もぜひ、このPASSJさんのサイトにも足を運んでください。特にブログでSQL Serverに関しては最新の情報を書いておられる方も多く、検索でたどり着くのもありだとは思いますが、最初からウォッチする価値がありますのでお薦めしておきます。( ^^) _U~~

    ではではビデオの方、ぜひお楽しみください。

    なお、今回は結構初の試みな部分も多く、反省点も多くありますが、今後の類似施策をよりいい物にしたいのでぜひご意見をこのブログからいただければと思います。他の製品でも似たようなこともしてほしいとかでもいいです。よろしくお願いします。

  • 【IIS7】 Tech・Ed 2008 セッション振り返り(08)

    管理系は終わりまして、今回から構築支援系、メディア系、その他といきます。
    まずは、PHP の環境を構築する上で非常に便利で安定化をもたらす新しい FastCGI モジュールです。

    アイテム №7
    「FastCGI Extension for IIS6.0」

    (アイコンなし)

    説明

    FastCGIをサポートするポピュラーなアプリケーションフレームワークを IIS6.0 で良いパフォーマンスで安定して動作させることができる拡張

    特徴

    ●FastCGI プロセスを通じたノン スレッドセーフアプリケーション環境の安定実行(例:PHP)
    ●FastCGI 拡張、FastCGI プロセスに関しての構成設定
    ●IIS6.0の安定

    ベネフィット

    Linux を想定しているアプリケーション フレームワークがマルチプロセスを同時実行性のアプローチとして採用している中、それらをマルチスレッドを採用している Windows で安定、高速動作させることができる

    利用可能 OS

    Windows Server 2003 SP2 (IIS 6.0)
    Windows Server 2003 x64 edition (IIS6.0) 

    Windows Vista SP1とWindows Server 2008ではビルトイン

    その他前提条件

    IIS6.0 がインストールされていること

    入手先

    http://www.microsoft.com/downloads/details.aspx?FamilyID=2d481579-9a7c-4632-b6e6-dee9097f9dc5&DisplayLang=en

    http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-70/
    で記載されているように、もう既にVista用、2008用にはUpdateがあります。

    開発ステージ

    製品版(RTW)

    ドキュメンテーション

    Running PHP Applications
    http://learn.iis.net/page.aspx/24/running-php-applications/


    セッションより

    PHPを例にあげると、今までもWindows+IIS環境でPHP利用環境を構築する手順はインターネットを探すと見つかりました。専らそれらはISAPIエクステンションとしてPHP.NETで提供されているDLLを設定して構築する手順です。

    ここで事前知識が必要なんですが、ISAPIのDLLが好まれた理由はWindowsのアプリケーション実行環境とLinuxのアプリケーション実行環境の違いを知っておく必要があります。UNIX系のOSでは専らプロセス単位でアプリケーションは実行されるモデルなんですが、Windowsではプロセスの中で複数のスレッドと呼ばれる単位で動作する設計になっています。このことからUNIX系では想定の必要の無い、スレッド間での同期処理やスレッド間での競合を解決する必要がWindowsのプログラミングの難度の高いものでは必要になります。.NETを使用した開発では.NETのフレームワークがこういう煩わしいところをカバーしてくれるため、実はみんなあまり意識していないのですが、中ではそういうことが行われているわけです。

    このことからUNIX系の生い立ちを持った言語たちはWindows環境に適用するセカンドステップが必要になり、PHPも例外ではなく、ISAPI拡張を提供してきたわけです。ちなみに ASP.NET も aspnet_isapi.dll とISAPI拡張で動作してきましたのである意味、構造的には同じです。結局、どんどんPHPの拡張機能としてのライブラリが開発されていっていますが、Windows環境においてはマルチスレッド対応(スレッドセーフ)が必要であり、すべてのライブラリがその対応ができているとは断言できないため、ISAPI設定でPHP環境をWindowsで構築して不安定なため、Give Upした人も結構いらっしゃるのではないでしょうか。

    一方で、ISAPIのほかにCGIというモデルがあります。しかし、CGIモデルには致命的なプロセスをリクエスト毎に起動するという重大なオーバーヘッドを抱えています。このため、やはり性能面ではCGIよりはISAPIを採用したくなってしまうレベルのものでした。ただ、CGIの場合にはプロセスをリクエスト毎に起動するため、前述のマルチスレッド対応をしなくても原理的に安定して動作します。

    こういう状況の中、UNIXの世界でも注目されてきたプロセスをプールして再利用するという発想、FastCGIが登場しました。IISの開発チームはZend社と協業する中で、このFastCGIのモデルで構築できるコンポーネントを開発しました。これにより、安定してパフォーマンス面でも心配の無い新しいIISでのPHP(FastCGIで動作する言語であればどれでも)利用環境を構築できます。

    前置きが長かったですが、このFastCGI Extension for IIS6.0はその流れの中で開発されたものです。IIS6.0、つまり Windows Server 2003ではこのモジュールを適用するわけですが、Windows Vista 製品版用には別のモジュール、Windows Server 2008/Windows Vista SP1については標準装備なのでOSからCGIを選択してインストールするとFastCGIも一緒にインストールされます。

    感想

    IIS6.0用とIIS7.0用では設定方法に違いがあります。これはIIS7.0がモジュール構造に進化しているからで設定がより簡単に、且つ柔軟になっています。IIS7.0であればIISの出力キャッシュを使ってかなりのパフォーマンスが出せますのでスーパー厳密なトランザクション処理が必要な場合以外では今後、試していただくに足る環境に成長していると思います。このキャッシュについては下記の投稿をご覧ください。

    【IIS7】 MSC2008 セッションより (おまけ)

    余談

    私はPHPの達人ではありません。なので、PHPに熟達された方々に色々なご意見をお聞きするように努力を続けています。PHP on IISのサイトでご紹介するセミナーや技術記事をこの領域の情報収集が必要な方にはお薦めしておきます。「IIS7.0を極める」シリーズも引き続き、若干今スローなペースですが、確実に数を増やしていきます。(私が。。。)

    PHP on IIS あなたの可能性を広げる、Windows環境へ

  • 【IIS7】 Tech・Ed 2008 セッション振り返り(07)

    この追加機能をインストールすることで PowerShell でより本格的に管理できるようになります。
    今までも Windows PowerShell 内で appcmd.exe を使う方法や.NETのクラス(Microsoft.Web.Administrationをたたく)を直接取り扱う方法も用意されていたわけでこのプロバイダが必須というわけではありません。ただ、より PowerShell の文法に即した形で自然に管理ができるようになるというわけですね。

    アイテム №6
    「PowerShell Provider for IIS7」

     image

    説明

    既にIISマネージャ、appcmd、WMI、Microsoft.Web.Administrationを通じて管理が可能なIIS7にさらに Windows PowerShell による管理を提供する

    特徴

    ●サイト、アプリケーション、仮想ディレクトリの作成・変更・削除
    ●構成プロパティの変更
    ●実行時データをクエリーする
    ●他のPowerShellスナップインとの統合による複雑な管理

    ベネフィット

    PowerShellが持つ強力なスクリプティング機能とこのツールで追加されるIISネームスペース、コマンドレットを使用した柔軟で複雑な管理を可能にする

    利用可能 OS

    Windows Vista SP1、Windows Server 2008
    IIS7.0がインストールされていること
    Windows PowerShell 1.0 以降がインストールされていること

    その他前提条件

    このツールは管理者実行でインストールする必要がある

    入手先

    PowerShell Provider for IIS 7.0 (x86) - CTP2
    PowerShell Provider for IIS 7.0 (x64) – CTP2

    Windows PowerShell 1.0

    Windows Vista 用 Windows PowerShell 1.0 インストール パッケージ (KB928439)
    Windows Vista x64 Edition 用 Windows PowerShell 1.0 インストール パッケージ (KB928439)
    Windows Server 2008 では 標準機能なので追加インストールは不要です。
    サーバーマネージャで機能から Windows PowerShell をインストールします。
    ServerManagerCmd.exe –install PowerShell –a でインストールも可能です。

    開発ステージ

    Community Technology Preview(CTP) 2

    ドキュメンテーション

    Getting Started with the IIS 7.0 PowerShell Provider
    http://learn.iis.net/page.aspx/428/getting-started-with-the-iis-70-powershell-provider/


    セッションより

    Windows PowerShell は新たな Windows 環境の管理手法として大変注目が集まっているのはご存じの方も多いと思います。コードネーム「Monad」と呼ばれていたころに比べるとインターネットで検索した時の結果数や本の冊数は比べ物にならないくらいです。私がIIS7.0を2006年から追いかけているように同僚の田辺はMonadのころからPowerShellを追いかけてきましたのでぜひ彼のブログとそこからリンクされている有用のサイトを是非ご覧いただきたいと思います。今後のマイクロソフトのサーバー製品は必ず PowerShell で管理できるようになる開発基準もできましたので、この時点で Windows PowerShell 自身に目を向けて情報収集いただくのはとても有用です。

    さて、IIS7.0という観点では何故か appcmd.exe という専用のコマンドが用意されていて、PowerShell 対応からスタートしていません。これはまさに開発の時期が PowerShell と同時期に行われていたからで、IIS7.0の出荷時にコマンドで管理できるインタフェースを用意する必要があったからです。一方で Windows PowerShell の有用性はIISの開発チームもよく知っていましたので、今 現在 CTP版としてネイティブに PowerShell で IIS7.0 を管理するプロバイダを提供しようと開発を進めているわけです。ということでこのプロバイダを使用すると PowerShell の一般的な文法に近い形で IIS7.0を管理できますので一番きれいな形なのかもしれません。

    一方で、このプロバイダが無いとIIS7.0は管理しにくいのでしょうか? そうではないです。IIS7.0にはスクリプティングに利用できる管理手法が appcmd、WMIプロバイダ、Microsoft.Web.Administration(MWA)クラスと3つも用意されています。なので、ちょっと考えてみただけでも下記のような組合せが考えられます。Administration Pack の Configuration Editor でもこの3種類の出力をしてくれましたよね。

    PowerShell内で

    - appcmdを直に対話的に実行する
    - appcmdを含んだbatファイルを実行する
    - WMIを操作するのが得意な PowerShell 機能をフル活用して対話的に実行する
    - WMIプロバイダのスクリプトを記述し、それを実行する
    - PowerShell は対話的に.NETのクラスが利用できるので、対話的にMWAを実行する
    - 管理を行うプログラムをMWAを使って開発し、それをコマンドで利用する
    - 実は構成ファイルはXMLなので、手動で.configファイルを書き換えるつもりでXMLを操作する
    ・・・winrs.exeを使ってリモート処理、WMIのリモート管理機能でリモート処理 etc…

    などなど、やりようによってはすごくPowerShellと親和性が高いことがわかると思います。また、システム構成がXMLファイルになり、アプリケーションをフォルダコピーで配布することが可能、システム構成ファイルもコピーすることが可能な点から PowerShell の中でファイルコピー操作を駆使することでIIS7.0自身の構成展開をはじめ、アプリケーションの配布も可能です。PowerShell は UNIX系のテキストをパースしてコマンドで利用することのできる機能を継承しているのでとにかく PowerShell で何かをするように検討することは管理の自動化と省力化において非常に重要な要素に今後なってくるはずです。

    感想

    私はこのプロバイダが開発完了したら、このプロバイダを使用することが一番の推奨です。もちろんGUIで操作することと自動化系でこの PowerShell を使用することの組合せになるのかなと思っています。他の環境をも操作できる PowerShell を理解しておくととにかくバラバラで何かを覚えなくても管理が簡単にできることから PowerShell で覚えることが一押しです。UNIX技術者の方であれば当たり前ということかもしれませんが、コマンドを知らなくてヘルプをどんどん引くことで利用できる対話型インタフェースの存在はすごく大きいですね。なんとなく管理方法の想像がつくはずですから。PowerShell 自身も進化していくので2.0以降ではもっともっと便利になるでしょうね。

    それと Server Core で PowerShell が使えないのはASP.NETが使えないのと同じ理由です。この点については当面ほかの機能のリモート管理手法を使って代替することになるでしょうね。

    下記の PowerShell タグでの RSS をアクセスする中で以前に私が「独自翻訳」した手順もありますので日本語は?と思ったらこちらも参照ください。いずれは PHP on IIS でやっている「IIS7.0を極める」シリーズで取り上げたり、Webcastを用意しようと思っていますので。。。
    http://blogs.technet.com/hirookun/archive/tags/PowerShell/default.aspx

    余談

    このプロバイダの最初のころ操作をした方は「使いずらーい」と思ったに違いありません。今回のCTP2では随分よくなりました。これは開発工程に影響しているのです。CTP1のころは文字列を自分で指定して実行するかなりローレベルなコマンドしか用意されておらず、その代わり汎用的なコマンドを用意していたからです。CTP2ではラッパーのような感覚で特定の操作を行うコマンドが増えたことにより、もっと便利になっています。結果的に IIS7.0 を管理するということは XMLファイルを操作することに行きつくわけで、何もかもやり方は自分のお好みのままですね。まあ HTTP.sys の構成は IIS7.0 の構成とは切り離されているのでまだまだなんでも自由というわけにはいかないのが実情ですけどね。(*^_^*)

  • 【IIS7】 Tech・Ed 2008 セッション振り返り(06)

    Administration Pack から独立した Database Manager です。

    アイテム №5
    「Database Manager for IIS7」

    image

    説明

    IISマネージャ内からデータベースを管理できるようにするツール。以前のビルドではAdminstration Packに入っていたが、本CTPから独立した。

    特徴

    ●複数のデータベースへの接続
    ●テーブルの作成・編集、キーの追加・編集
    ●クエリーの作成と実行
    ●ストアドプロシジャーの管理

    ベネフィット

    リモートのユーザーがHTTPS経由でIISのマシンを通してデータベースを管理できる。拡張することで他の種類のデータベースにもアクセス可能。

    利用可能 OS

    Windows Server 2008 (IIS 7.0)
    セットアップの過程で SQL Server Management Obejcts Collection、SQL Server Native Clientがインストールされる
    日本語環境では個別にSQL Server系のコンポーネントを入れておくといいでしょう。

    その他前提条件

    リモート接続するユーザーは追加でセットアップされるSQL Server系のコンポーネントは不要

    入手先

    Database Manager for IIS 7.0 CTP2 (x86)
    Database Manager for IIS 7.0 CTP2 (x64)

    Microsoft SQL Server 2005 用 Feature Pack- 2007 年 2 月
    http://www.microsoft.com/downloads/details.aspx?FamilyID=50b97994-8453-4998-8226-fa42ec403d17&DisplayLang=ja

    Microsoft SQL Server 2008 用 Feature Pack - 2008 年 8 月
    http://www.microsoft.com/downloads/details.aspx?FamilyID=c6c3e9ef-ba29-4a43-8d69-a2bed18fe73c&DisplayLang=ja

    開発ステージ

    Community Technology Preview(CTP) 2

    ドキュメンテーション

    Using the Administration Pack & Database Manager
    http://learn.iis.net/page.aspx/401/using-the-administration-pack/


    セッションより

    SQLのコンポーネントが必要となるこのツールは他の Administration Pack の機能とは少し趣きが違うので分離されたのは当然かなというところはあります。IIS7の接続文字列やASP.NETメンバーシップを活用するような機能などはSQL Server 2008の開発中から先行していて開発してきたもので、SQL Server 2008 には対応できていない点があるかもしれないのが注意点です。なので、ここでもSQLのコンポーネント系は両方リンクを貼っています。

    開発ツールの中からもSQLにはアクセスできるし、敢えてなんで?という質問もあるかもしれませんが、こういうことだと考えています。IISマネージャが拡張されることで、リモート管理を行う前提で考えてみると、IISのサーバーに接続するIISマネージャだけ入っているマシンでもサーバー上のデータベースを管理する仕組みというのはなかなか難しいですよね。このツールはサーバーにだけSQL系コンポーネントが必要であることからもわかるようにリモート端末はIISマネージャだけで動作します。これによって実はホスティングを行っているような環境に対してユーザーにデータベース簡易操作(クエリーを実行できる機能があるので知っていればかなりなことができるが)をHTTP経由で渡すことができます。これが実はこの機能の肝のような気がしています。IISの開発チームはホスティングに最適なWebサーバーという大きな目標を持っているのでその方向性でこの機能が便利というフィードバックが多くあったと聞いています。

    感想

    最近 どこにでもデータベースを管理するUIがつく傾向にあるような感覚を覚えますが、それほどに必ずデータベースを使う状況というのが増えているんだと思います。Windows Web Server 2008 と SQL Server 2008 Web の登場で 純粋なMS 環境でもかなり経済的に Webサーバー+データベースサーバーを組めるようになってくることから今後もこのエリアでは色々な機能が登場してくるのが予想できます。ASP+MDBでの軽装が好まれているのはよく知っていますが、今後はセキュリティ面などを強化する意味でもバックに SQL Server が控えている構成というのがもっと流行ると思っています。

    余談

    当日はデータベースを事前に作っていなくて、クエリーをばんばん投げる仕事を最近していないので結構ばたばたしてしまいましたが、まあ操作に慣れれば、結構 Webを管理する用途だけという意味では Visual Studio ベースの Management Studio を起動するよりはかなり便利かもなとふと思いました。

  • 【IIS7】 Tech・Ed 2008 セッション振り返り(05)

    IISマネージャを拡張する Administration Pack です。

    アイテム №4
    「Administration Pack for IIS7」

    imageimageimageimageimageimage

    説明

    IIS7.0サーバーを管理する上で便利ないくつかの機能をパックにしたものから構成されている
    ※Database Managerはこのパックから独立したもの

    特徴

    ●IISマネージャ内で構成情報の値を検索、直接参照、編集、ロックがconfigファイルを意識せずに可能
    ●指定した構成変更のC#、Jscript、AppCmdスクリプトを生成
    ●グラフや表を含むレポートを表示
    ●IISマネージャのUIを拡張(リクエストフィルタリング、ASP.NETの認証とカスタムエラー、FastCGIのUI追加)

    ベネフィット

    標準のGUIで不足しているとお客様からご指摘とご要望の多かったものを追加してくれる非常に便利なツールのセット。特に利用確実なリクエストフィルタリングのUI追加、カスタマイズして作成できるレポートプラットフォームの追加はかなり便利。

    利用可能 OS

    Windows Server 2008 (IIS 7.0)

    その他前提条件

    IIS7.0がインストールされていること

    入手先

    Administration Pack for IIS 7.0 CTP2 (x86)
    Administration Pack for IIS 7.0 CTP2 (x64)

    開発ステージ

    Community Technology Preview(CTP) 2

    ドキュメンテーション

    Using the Administration Pack & Database Manager
    http://learn.iis.net/page.aspx/401/using-the-administration-pack/


    セッションより

    Windows Server 2008 そして IIS7.0 は拡張性が高いのですが、この Pack はその象徴みたいな機能です。OS出荷段階で登場した機能に対して多くのお客様フィードバックをいただいた結果、不便な点やこんな機能が欲しいというのにお応えしていくのがこんな形ですぐに出てくるのは非常に喜ばしいことです。

    この Administration Pack には大きく分けて3つの拡張が含まれています。

    一つ目は元々GUIがなくてconfigファイルに設定を書かないとできなかったことで不便と指摘のあった4つの機能に対してGUIを用意しました。

    imageimageimageimage

    特に Request Filtering は UrlScan の後継であることから、セキュアな環境を設定するには欠かせない機能ですのでUIでもできるようにと声が多く上がったことは間違いところでしょう。ちなみに UrlScan3.0というのが出ていて、今回のセッションでも取り上げていますが、この Request Filtering の機能は UrlScan2.5 相当の後継であって、現時点では SQL Injection対応ができていないと思われるコードが結構あると想定される環境では IIS7であっても UrlScan3.0 をインストールするのが推奨です。今後は UrlScan3.0 相当の機能を実装した Request Filtering のモジュールが提供されることになると思います。

    二つ目は簡易的なレポートが欲しいという要望に応えたもので、IIS Reportです。もっと早い時期のビルドではLogParserをインストールしてくださいというメッセージが出ていたのですが、それはなくなって、いきなりレポートが使えます。Webサーバーのレポートというのは専用のAgentを入れてデータを蓄積するものやそもそもアクセス分析をするために別のサーバーで管理するものなど様々ですが、最も多いケースはIISログを何かしらの方法で解析する方法でしょう。そういう意味ではExcelなどにデータを持ちこんで格闘する前にこのReportを見ていただくのがいいのではないかと思っています。
    注意:Vistaに接続しているとエラーが出るかもです。

    三つ目は階層型のシステム構成が結局処理される最終configが把握しにくいという要望に応えたもので、GUIで何か設定をするのではなく、configをいじくるXMLエディタのような機能が追加されています。それ自身は特に面白みもない機能かもしれませんが、ちょっと憎らしい機能がついています。config を設定した後で操作ウィンドウを見ると Generate Script という機能を利用できるのがわかります。まだ PowerShellのスクリプト出力するところまではいっていませんが、MWAを利用するC#のコード、JavaScriptのコード、appcmdのコマンドラインを出力してくれますので今後の自動化に役に立つこと間違いなしでしょう。

    感想

    とても管理の面を楽にしよう、楽にしようという製品開発チームの気持ちが伝わってくる一品です。特にレポートは拡張が可能であり、独自のレポートを作成することもできることからビジネスチャンスでもありますし、Excelで不毛な時間を過ごしている運用管理者にとっても他のことに時間を振り向けることができるチャンスだと思います。そして、Configuration Editor は自動化を意識している点がすごく気にいっています。他のサーバー製品のように操作に対してPowerShell のスクリプトを出力できるように早くなって欲しいですが、これはまず PowerShell Provider の方が RTW しないといけないという順番待ちなんでしょう。

    余談

    このブログを書きだしてからアクセス解析にとても興味があります。そういう意味では自分で管理するIISを運用されている方はぜひ今回のこの Adminstration Pack をきっかけに色々と運用にメスを入れていただきたいと思います。まあ運動選手はひじにメスを入れると周りの筋肉を復活させるのが大変なんていう話もありますので無理することはないと思うんですが、IIS7をきっかけに何かが便利にできたとか改造できたなんていう話がもしあればぜひ教えてくださいね。