SQL Azure

バージョンアップ内容

2011年8月9日にマイクロソフトがリリースした.NET Framework4の信頼性に関する更新1(http://support.microsoft.com/kb/2533523)で、本問題の改善が図られています。

基本的に、SqlClientがアプリケーションにプールを返す前に、プールのコネクションが無効化されていないかを確認します。もしコネクションが無効の場合、SqlClientは単純にアプリケーションにコネクションを返す前に再接続処理をします。

この修正は、サーバのラウンドトリップを増やしません。代わりに、TCPレイヤでソケット状態を確認するので、速く効果的です。しかし、この修正は再接続処理の代わりになるわけではありません。特にSQL Azureに接続する場合、再接続処理の実装は、まだ必要なプラクティスとして推奨します。この改善により、SQL ServerとSQL Azureへの接続時に、節奥に失敗する機会を減らしました。

導入背景

SQL Azureに接続した時に、よく遭遇するエラーの一つが、「A transport-level error has occurred when sending the request to the server. (provider: TCP Provider, error: 0 – An established connection was aborted by the software in your host machine.)」です。このエラーは、SqlClientがプールから無効なコネクションを取得したときに発生し、アプリケーションに返されます。。プール上のコネクションは、ネットワークやSQL Azureで制限されて無効化されます。結果的に、たとえば実行コマンドなどでSqlException例外が発生します。

以下のようなコードを検討しましょう。

try

{

    // Let’s assume the connection string uses default connection pool set to true

    // and the connection pool was already previously created for this same

    // connection string

    using (SqlConnection connection = new SqlConnection("…"))

    {

        // If the connection pool in not empty,

        // even if the connection returned above is dead,

        // the SqlConnection.Open command below executes succesfully.

        connection.Open();

 

        SqlCommand command = new SqlCommand("select product_name from products");

        command.Connection = connection;

        command.CommandTimeout = 3;

 

        // The Sqlexception gets thrown here,

        // when it tries to send the command to SQL Server.

        SqlDataReader reader = command.ExecuteReader();

 

        while (reader.Read())

        {

            …

        }

    }

}

catch (SqlException ex)

{

    MessageBox.Show(ex.Message);

}

この例では、Openメソッドがいつでも成功します。アプリケーションからSQL Azureに接続する旅に、再接続処理を追加しています。

情報源

MSDNのBlogに掲載されたMinimizing Connection Pool errors in SQL Azureをざっくり意訳した投稿です。

SQL Azure

SQL Azure Labsが装いも新たに、まるっと過去を清算して新たなサービス展開を模索し始めましたよ。

image

今、SQL Azure Labsで担当しているのは、「Data Explorer」と「Social Analytics」の2つ。そのうち、「Social Analytics」が使用できるようになったので、早速触ってみたぞ。

image

上記画像が、Sosical Analyticsの実行状況。まぁ簡単に言うとこれがすべて。
現在のところ、フィルタリングできるのは、ビル・ゲイツとWindows 8のみでユーザが任意に追加することはできない。

何するもの?

再集計として提示されているのは、各種ソーシャルサービスから特定キーワードで情報を収集してくる。

image

収集してきた情報を一覧表示にする。
また、収集した情報を集計・分析し、活発にRTやメンションされている発言をカウントしランキング表示する。その発言に対して、ネガティブ発言数・ポジティブ発言数をカウントし表示する。その発言にたいする会話についてを、さらにピックアップする。

まぁ、ソーシャルな発言を収集して分析して、把握しやすいようにしてやろう!っというサービスなのかな?

各パネルの説明

image

image

参考情報

SQL Azure

SQL PASSサミット2日目のキーノートにて、SSMS 2012のSQL Azureサポート状況の一部がでもされました。

  • SQL Server Management Studio 2012のGUIウィザードで、SQL Azureデータベースを直接Blobへバックアップ可能
  • SQL Server Management Studio 2012からWindows Azure Storage Blobに接続
    オブジェクトエクスプローラーにBlobのツリーが表示され、blob一覧も表示された。

SQL Azure

※Windows Azureチームブログに投稿されたSQL Azureのアップデートに関する投稿をざっくり意訳した意訳です。

SQL PASSサミット2012の2日目のキーノートで、マイクロソフトはSQL Azureにとって重要な内容を含むいくつかのアップデートを発表しました。

SQL Azure ReportingとSQL Azure Data SyncのCTP版提供の開始と、SQL Azureサービスリリース2011 Q4で提供予定の内容について発表しました。

SQL Azure提供予定の機能

2011年の終わりまでに提供する予定のSQL Azure サービスリリース2011Q4は、シンプルかつ柔軟にスケールアウトするのに必要な機能を提供することを目的としています。

  • 個々のSQL Azureデータベースの最大サイズを現在の50GBから、3倍の150GBに増やします。
  • Federation
  • 新しいSQL Azure管理ポータルの強化。もっと簡単にデータベースを監視できるように新しい機能を提供します。スキーマのドリルダウン、クエリプランの表示、空間データの表示、インデックス/キーの表示、クエリパフォーマンス統計情報の表示。
  • ユーザが管理できる照合順序のサポートを拡張

SQL Azure Reporting CTP

  • 可用性とパフォーマンスの改善
  • SQL Azure Reportingサーバーのセルフプロビジョニングが可能
  • Windows Azure管理ポータルを更新し、ユーザを簡単に管理できレポートをデプロイできるようにしました。
  • 世界中のWindows Azureデータセンターでの提供を開始
  • このCTP版からマイクロソフトの公式サポート開始
  • 認証不要でレポートを参照できるようにするアクセスコントロールに対応

SQL Azure Data Sync CTP

  • 新しい管理ポータルで簡単に使用できるようになりました
    新しい管理ポータルを提供し、同期の監視管理、設定をしやすくなりました
  • 同期グループの設定とフィルタリングを柔軟にできるように強化しました
    フィルタリング:特定のテーブル列、特定の行だけを同期できるようになりました
    同期グループの設定:グループメンバーごとに同期衝突が発生した場合の解決方法を設定できるようになりました
  • すべてのユーザが使用できるようになりました
    特別な登録をすることなく、全SQL Azureユーザが試せるように新しいCTP版を提供します。

デモの様子などは、SQL PASSサミット2012のサイトで公開されます。
http://www.sqlpass.org/summit/2011/Live/LiveStreaming.aspx

SQL Azure

先日、SQL AzureからWindows Azure ストレージBlobに直接データのバックアップを取る「管理ポータルからSQL Azureデータベースのインポート/エクスポート」を紹介した。この機能は、Blobに直接バックアップを保存する機能だったため、ローカルに保存するにはBlobからダウンロードする必要があった。

しかし、SQL Azureから直接ローカルにバックアップをとる機能がすでにリリースされていたのだから、びっくりしちゃいますよね。公開した機能は、ちゃんとアピールしてくれないと見落としちゃうので、ちゃんとアピールしてください!マイクロソフトさん。

SQL AzureのURL=Database Managerのログイン画面」で、個別URLが存在することを説明しました。今回紹介する機能は、このURLが非常に重要になります。

まず、SQL Azure Database Manager改め、SQL Azure管理ポータル(Management Portal for SQL Azure)に名称が変わり、従来のDatabase Managerの機能に加えて、データベースを作成、削除できる機能とデータベースのバックアップと、バックアップから新規DBとしてデプロイできる機能が追加されました。

上述した機能の内、後者については注意が必要です。この機能を使用するには、直接個別URLに接続しなければなりません。

https://lpw5xv9un1.database.windows.net
こんな感じのURLです。

Windows Azure管理ポータルから「管理」ボタンをクリックすることでもSQL Azure管理ポータルにアクセスできますが、微妙に違いが発生します。

image

image

上記画像は、とてもよく似ているが微妙に違いが発生している。上の画像は、直接URLにアクセスした場合、下の画像は、「管理」ボタンをクリックしてアクセスした場合である。
これから紹介する機能は、上側のDatabaseがブランクでOptionとなっている方を使用しなければならない。
上側で、dtabaseをブランクにしたまま、ログインする。

image

image

これまた、非常にひているが、微妙に違う。
上側はデータベース名をブランクでログインした時の画面で、下側はデータベース名を入力してログインした時の画面。
下側だと、「Database Life Cycle」ワークスペースが無いのです。。。。

そして、、「Database Life Cycle」ワークスペースを表示させると次のメニューが表示される。

image

あら素敵。

Extractをクリックする。

image

Saveボタンをクリックすると。。。

SNAGHTML67e16a

保存ダイアログが表示されてdacpac形式で保存できることがわかる。

 

一方、deployボタンをクリックしてみる

image

あら素敵。

dacpacから新たにデプロイできちゃうんですね。