Tech Days 2009
こんにちは、naginoです。
昨日今日と Microsoft 社の Tech Days 2009 に参加していました。
http://www.microsoft.com/japan/events/techdays/default.mspxこのカンファレンスは技術系カンファレンスですが少々毛色が異なっています。
というのも、元々はアメリカで開催された PDC(Professional Developers Conference) を日本向けに翻訳・サマリした内容なのですが、その PDC が将来の技術(実装中・実装予定・計画など)についてのカンファレンスのため、内容が非常に高度なセッションが多くありました。
一部はデモなどもあるのですが、ほとんどの場合で既存技術の知識を前提とするため、得意分野でないととても難しかったです。
また、実業務などではその既存技術の最新版を触っているとは限らず、一つ前のバージョンなどを使っていることも多いため、より一層厳しいところがありました。
ただ、その分勉強になることも多く、また面白そうな話も多数ありました。
そのうちのいくつかは、今後このブログで取り上げて生きたいと思います。
# その前に IIS+PowerShell の記事の続きをまとめないといけないのですが・・・。
ちなみに、今回のメインテーマは Windows Azure(アジュールと呼んでいました) と Windows 7 でしたが、.NET 4.0 関連の開発系を中心に受けました。
C# 4.0 はより一層リッチになって難しくなりそうです。
日々勉強あるのみです。
LIKE演算子の謎 ~その後~
こんにちは、naginoです。
以前の記事 で書きました LIKE 演算子の挙動ですが、SQL Server 2005 SP3 で修正されました。
http://support.microsoft.com/default.aspx/kb/959019/ja
どれどれ、と思って
SET SHOWPLAN_TEXT ON
GO
select * from T WHERE CAST(P AS NCHAR(3)) LIKE '20%' COLLATE Japanese_CI_AS
GO
select * from T WHERE CAST(P AS NCHAR(3)) LIKE '20%' COLLATE Japanese_90_CI_AS
GO
SET SHOWPLAN_TEXT OFF
として見てみると、SP3 適用前も後も
|--Nested Loops(Inner Join, OUTER REFERENCES:([Expr1011], [Expr1012], [Expr1013]))
|--Merge Interval
| |--Concatenation
| |--Compute Scalar(DEFINE:(([Expr1006],[Expr1007],[Expr1005])=GetRangeThroughConvert(N'20',NULL,(22))))
| | |--Constant Scan
| |--Compute Scalar(DEFINE:(([Expr1009],[Expr1010],[Expr1008])=GetRangeThroughConvert(NULL,N'2¼',(10))))
| |--Constant Scan
|--Index Seek(OBJECT:([like_test].[dbo].[T].[I]), SEEK:([like_test].[dbo].[T].[P] > [Expr1011] AND [like_test].[dbo].[T].[P] < [Expr1012]), WHERE:(CONVERT(nchar(3),[like_test].[dbo].[T].[P],0) like N'20%') ORDERED FORWARD)
|--Index Scan(OBJECT:([like_test].[dbo].[T].[I]), WHERE:(CONVERT_IMPLICIT(nchar(3),CONVERT(nchar(3),[like_test].[dbo].[T].[P],0),0) like N'20%'))
でした。
つまり、GetRangeThroughConvert の引数ではなく、挙動自体がおかしかったようです。
まあ、いずれにせよ直ったのは良いのですが、この現象に直面していた環境では、かなり影響が大きいのではないでしょうか。
PowerShell で IIS 管理 (情報取得 その1)
こんにちは、naginoです。
今回は、PowerShell Snap-in for IIS 7.0 がインストールされている前提での記事です。
Snap-in をインストールするとスタートメニューに追加されるショートカットから PowerShell を起動すると、プロバイダに IIS が選択された状態でコンソールが起動します。
PS IIS:\>
さて、せっかく Snap-in をインストールしたので、追加されたコマンドレットを見ていっても良いのですが、先ずは基本のプロバイダのオブジェクトを把握しないと始まりません。
PowerShell では、例えばコマンドプロンプトのカレントディレクトリといった、現在の処理対象も全てオブジェクトとなっています。
そしてオブジェクトには親子関係があります。
ディレクトリの下にはサブディレクトリやファイルがあるように、IIS のプロバイダでも以下のような親子関係があります。(一部私の推測によるため、正確かはわかりません)
現在の、言うなればカレントオブジェクト(?)の子供を取得するのが、もっとも基本である以下のコマンドになります。
PS IIS:\> Get-ChildItem
Name
----
Sites
AppPools
SslBindings
実行結果は環境によって異なりますので、一例と捉えてください。
この実行結果は、Name属性を持ったオブジェクトの配列になっています。
ちなみに配列も(おそらく)オブジェクトですが、ForEach-Objectといった列挙体(配列を含む)にのみ使えるコマンドレットがあるため、列挙体のオブジェクトとそうではないオブジェクトは区別して扱う必要があります。
さて、これだけではつまらないのですが、このコマンドだけで簡単な情報取得が行えます。
例えばNamespaceの全体像を把握したいときは、以下のコマンドで一覧を取得できます。
PS IIS:\> Get-ChildItem -Recurse -Name | Sort-Object
AppPools
AppPools\DefaultAppPool
AppPools\DefaultAppPool\WorkerProcesses
Sites
Sites\Default Web Site
Sites\Default Web Site\iisstart.htm
Sites\Default Web Site\welcome.png
SslBindings
これでサーバ内の名前空間の状態が全て把握できます。
これはインストール直後のIISですので、サイトは「Default Web Site」で、コンテンツは2ファイルのみ、アプリケーションプールも「DefaultAppPool」のみで、ワーカープロセスはまだ1つも起動していないということがわかります。
もうちょっと実用的なものとしては、次のようなものもあります。
次のコマンドレットでサーバに作成されているアプリケーションプールの一覧を取得できます。
PS IIS:\> Get-ChildItem -Path AppPool -Name | Sort-Object
DefaultAppPool
この実行結果はオブジェクトですので、さらにパイプをつなげることで、より詳細な情報を取得することもできます。
少々長くなってきましたので、そのあたりはまた次回とします。
PowerShell Snap-in for IIS 7.0 RC1 リリース
こんにちは、naginoです。
PowerShell の IIS7 用スナップインですが、機能強化された RC1 が 1/14 にリリースされました。
英語ですが、関連情報が以下にあります。
http://learn.iis.net/page.aspx/428/getting-started-with-the-iis-70-powershell-snap-in/ (英語)
RC1 になる前の情報については、以下に日本語訳があります。
http://blogs.technet.com/hirookun/archive/2008/04/24/iis-7-0-powershell.aspx
ダウンロードは以下からできます。
32bit 版と 64bit 版で異なりますので、注意してください。
http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1664 (x86)
http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1665 (x64)
さて、リリースの紹介だけでは面白くありませんので、Hyper-V 上の Windows 2008 Server に実際にインストールの流れを紹介します。
ここでは 32bit 版のほうを使用しています。
ここで IIS7 がインストールされていないと、以下の警告が表示されてインストールできません。
また、PowerShell がインストールされていないと、やはり以下の警告が表示されてインストールできません。
予断ですが、メッセージを見る限りは PowerShell v2.0 にも対応しているみたいですね。
IIS7 と PowerShell がインストールされていると、使用許諾の画面が表示されます。
内容を確認して、同意できる場合はチェックボックスにチェックします。
少々待ちます。
インストールが完了すると、スタートメニューに項目が追加されています。
ここから PowerShell を起動すると、プロバイダが IIS に切り替えられた状態で起動するため、お試しで使用するには便利です。
確か設定次第だったと思いますが、デフォルトで安全側に設定されている証拠です。
今回は「R」で実行しました。
ちなみに、ここでも大文字と小文字を区別していました。
【2009/01/20訂正】2回聞かれますが、大文字小文字は区別されていませんでした。
このようにインストール自体はとても簡単です。
予定より遅れていますが、実際の使用例などは追々記事にしていきます。
ビルド番号とSPの対応 改
こんにちは、naginoです。
以前、SQL Server のビルド番号と SP の対応について記事 にしましたが、CU まで含めてより詳細にまとまっているページ がありました。
調べるときにとても便利です。
英語のページですが、製品名とビルド番号が表にまとまっていますので、問題ないかと思います。