未分類

Japan Windows Azure User Group主催のPDCパブリックビューイング内で開催されたWindows Azure模試の出題の1つにSQL Azureでの日本語の扱いに関する問題があった。
その問題と解答に違和感があったので、調査をしてみた結果、想像していたのとは違う結果となり驚いたので、メモしておく。

本調査は、Windows 7 Ultimate (x64)とSQL Server Management Studio 2008 R2とSQLCMDを使用した。SQLの発行と結果確認には、SQL Server Management Studio 2008 R2とSQLCMDの両方を使用した。
尚、オプション類は規定値を使用している。オプション設定によっては結果に変化が生じる可能性はあるが、面倒なので、オプションまでは考慮しなかった。

データベース名

日本語のデータベース作成は問題なくできた。ただし、Web上(sql.azure.com)で作成しようとすると、バリデーションチェックではじかれた。

CREATE DATABASE 経理

20101030172057

20101030172131

 

テーブル名、カラム名

日本語のテーブル名、カラム名共に問題無く作成できた。

CREATE TABLE 顧客
(  管理ID int IDENTITY(1, 1) PRIMARY KEY
  ,社員ID int
  ,名前 varchar(100)
  ,日付 datetime)

20101030172339

sp_helpでテーブル情報を取得したところ、問題無く作成でき、Identityも設定できてるのが確認できる。

次にデータを格納してみた。

INSERT INTO 顧客 VALUES(111, ‘綾貴’, ‘2010/01/05’)

上記のデータ挿入も問題なかった。

もちろん、varcharに日本語を格納しても文字化けするので、上の「綾貴」は結果を取得しても「???」と化けるが。

挿入したときの実行プランを表示ししてみる。

20101030172706

クラスター化インデックスもばっちりと日本語が含まれていることが確認できる。

データ参照をしてみた。

SELECT * FROM 顧客

SELECT 管理ID FROM 顧客

どちらでも、しっかりと結果を取得できた。

まとめ

驚くべきことに、

データベース名、テーブル名、カラム名、インデックス名に日本語を使用しても基本操作は問題なく動作できる

ことが、わかった。

出題者@harutama さんは、よく気づいたと思う。さすがだ。

 

参考

Windows Azure模試を復習 ~SQL Azureで発行するT-SQLのTIPS~ – waりとnaはてな日記

SQL Azure

SQL Azureのクエリパフォーマンスを分析するには、SQL Server Management Studioを使用するか、SET STATISTICS T-SQLコマンドを使用します。SQL Server Profilerは、今のところSQL Azureではサポートしていません。この投稿では、SQL Server Profilerの代わりに、サーバに実行されたT-SQLの結果セットを分析しパフォーマンスを改善することに焦点を当てます。

 

SQL Server Management Studio

 

SQL Server Management Studioを使用して、クエリの実行プランを表示することができます。実行プランを使用して、SQL Azureのインデックス使用状況、取得データ、各ステップごとの取得行数を知ることができます。

実行プランの取得方法

  1. SQL Server Management Studio 2008 R2を起動します。(このバージョンでは、簡単にSQL Azureに接続可能)
  2. 「新しいクエリ」ウィンドウを開きます。
  3. 新しいクエリウィンドウにクエリをコピペします。
  4. ツールバーの「実際の実行プランを含める」ボタンをクリックし、実行プランの表示を有効にします。

    000000

    または、メニューバーから「実際の実行プランを含める」を選択します。

    000001

  5. クエリを実行すると別のタブに実行プランが表示されます。

    20101026210719

実行計画の見方は、SQL Server 2008 R2と同じですので、この投稿では取り扱いません。「グラフィカル実行プランの表示 (SQL Server Management Studio)」を参照してください。クエリのパフォーマンスの改善する方法の一つに、カバードインデックスにする方法があります。「I/Oパフォーマンスを改善する」を参照してください。

 

USING "SET STATISTICS"

 

SET STATISTICSは、Transact-SQL コマンドで、SQL Server Mnagement Studioのクエリウィンドウで実行することで、クエリの実行統計を取得できます。SET STATISTICSは二種類あり、その一つが、SET STATISTICS TIME ONです。TIMEコマンドは、クエリのパースとコンパイル、実行時間を表示します。

クエリは次のようになります。

SET STATISTICS TIME ON

SELECT *

FROM SalesLT.Customer

      INNER JOIN SalesLT.SalesOrderHeader ON

            SalesOrderHeader.CustomerId = Customer.CustomerId

実行結果は、以下のようになります。ストップウォッチのような動作をします。

20101026210833

 

もう一つが、SET STATISTICSのオプションが、SET STATISTICS IO ONです。SQL AzureでのクエリのIOパフォーマンス状況が表示されます。

クエリは次のようになります。

SET STATISTICS IO ON

 

SELECT *

FROM SalesLT.Customer

      INNER JOIN SalesLT.SalesOrderHeader ON

            SalesOrderHeader.CustomerId = Customer.CustomerId

 

実行結果は、次のようになります。

20101026211540

 

実行しているSQLを取得する

 

SQL Serverでは、SQL Profilerを使用することでリアルタイムで現在実行しているクエリを取得することができます。SQL Azureでは、次のようなSQLを使用して、プロシージャキャッシュ経由で、実行回数と実行されたクエリを取得します。

SELECT q.text, s.execution_count

FROM sys.dm_exec_query_stats as s

      cross apply sys.dm_exec_sql_text(plan_handle) AS q

ORDER BY s.execution_count DESC

 

SQL Azureでのプロシージャキャッシュについては、「SQL Azure上のプロシージャキャッシュについて理解する」を参照してください。

この投稿は、Gaining Performance Insight into SQL Azure – TechNet Articles – Home – TechNet Wikiを紹介したものです。

Windows Azure

KoodibooK

 

Koodibookは、Flicker、Picasa、Facebook、Myspace、などにアクセスして写真を取得し、自分専用のアルバムをさくせいすることができるサービスです。アルバムをデザインし、写真を選んで公開をするのに10分程度でできます。

WPFで作成されたKoodibook Studioで、写真を選んだり、ページレイアウトをしたり、効果をつけたりすることができます。

20101025202256

画像は、Windows Azure Blob Storageに保存されます。全ての参照データは、SQL Azureに保存されます。

一般公開されたアルバムは、Silverlightアプリで閲覧することができます。DeepZoomも活用しています。

 

Koodibook Studioの操作は下にスクリーンショットをぺたぺたっと張ったのですが、完成度が高く迷わずに操作ができ、WPFへの印象が大きく変わるアプリケーションになっていました。一回、触ってみることをおすすめします!

詳細は、Real World Windows Azure: Interview with Richard Godfrey, Cofounder and CEO, KoodibooKを参照してくださいな。

Windows Azure

Windows Azure Storage usage in Windows Azure Companion PHPを簡単に紹介した投稿です。

Windows Azure Companion for PHPを使用するには、configure.cscfgにAzure Storageアカウントの情報を設定する必要があります。

<Setting name="WindowsAzureStorageAccountName" value=" happybuddha" />

<Setting name="WindowsAzureStorageAccountKey" value=" dyjrnWG0/ibgI4k9/j6DSZqyhCK5QlZDVYgwqyFqrH8IXW8od9XY1s1TyiDB+1nPCLrT2LOrx34TyhmsI7YyVg==" />

Windows Azure

Windows Azure Companion for PHP: Common Errorsを簡単に紹介する投稿です。

Windows Azure Companion for PHPは、Windows Azure上にPHPベースのアプリケーションを数クリックで配置できる便利なソリューションです。Windows Azure Companion for PHPを使用していると遭遇する可能性があるエラーと原因について説明します。