Windows Azure

A6又はA7の仮想マシンサイズを使おうとしたときに、「Failed to configure virtual machine <machine name>.」や「Failed to create virtual machine <machine name>.」というエラーに遭遇するかもしれません。主に次の3つの場合に、エラーが発生します。

  1. A6やA7以外の既存の仮想マシンをサイズ変更してA6やA7にする
  2. 2013/4/16以前に作成した仮想ネットワークに新しいA6又はA7サイズの仮想マシンを作成する
  3. 既存のクラウドサービスに新しいA6又はA7サイズの仮想マシンを追加する

この問題に遭遇した場合には、シナリオケースごとに次の対応をする必要があります。

1. A6/A7に仮想マシンサイズを変更しようとすると失敗する

既存の仮想マシンを削除し、ディスクは維持します。既存のOSディスクか、オリジナルの仮想マシンディスクを使用して、新たにA6/A7サイズの加増マシンを作成します。

もしサイズ変更しようとしている仮想マシンと同じクラウドサービスに別の仮想マシンがデプロイされている場合、それらの仮想マシンも削除し、新しいクラウドサービスに再デプロイする必要があります。

2. A6/A7仮想マシンを既存の仮想ネットワークに追加しようとすると失敗する

新しい仮想ネットワークを作成し、その仮想ネットワークにA6/A7サイズの仮想マシンをデプロイします。

2013/4/15以降に作成された全ての仮想ネットワークは、全てのリージョンで高メモリの仮想マシンが提供された場合、A6/A7サイズの仮想マシンをサポートします。

3. 既存のクラウドサービスにA6/A7仮想マシンを追加する

既存のクラウドサービスを削除し、新たに作成したクラウドサービスにA6/A7をデプロイします。

一次ソース

MSDNフォーラム:「Error: “Failed to configure virtual machine” with new A6 or A7 size

SQL Azure

Handling Error 40552 IN SQL Azureをざっくりと日本語訳した投稿です。

エラー40552が発生する理由

SQL Azureは、サーバを複数ユーザで共有するクラウドデータベースサービスです。
全ユーザが等しくSQL Azureを快適に使えるように、一部のユーザがリソースを占有しないように幾つかのセーフ機能を持っています。

セーフ機能の1つに、トランザクションで大量にアクティブトランザクションログを生成していないか監視しています。
大量のトランザクションログ容量を使用するトランザクションを実行しているアプリケーションは、SQL Azureから次のエラーを受け取ることになります。

Msg 40552, Level 20, State 1, Line 1
The session has been terminated because of excessive transaction log space usage. Try modifying fewer rows in a single transaction.

インデックスの作成、再構築、削除をする際に40552を回避する方法

インデックスの削除、再構築、作成は、大量のトランザクションログレコードを生成するので、大きなテーブル上でこのエラーメッセージを受け取る可能性があります。

この問題を回避する為に、新しいテーブルを作成しインデックスのレイアウトを完成され、その新しいテーブルに小さな粒度でデータを移行します。
しかし、たいていの場合、ONLINEオプションを使用してインデックス操作をするほうが、必要なトランザクションログスペースを少なくすることができます。
ONLINE=ONを指定して、CREATEやALTER、DROP INDEX操作をすると、実行方法が変わります。
一つの大きなトランザクションに変わって、長時間広いロックを取得することなく、裏側で複数の小さなトランザクションを実行する操作になります。

どちらの方法でも、操作に必要なトランザクションログ容量を減らすことができ、操作を実行している間でも、対象テーブルの使用を継続できます。

SQL Azure

SQL Azureデータベースにユーザを追加する」で紹介したように、SQL Azureデータベースでも、ユーザーを追加することができます。

新規に追加したユーザーでSQL Azureデータベースに接続しようとすると、次のような「18453」エラーが出て接続できない人がいるかもしれません。

*****.database.windows.net に接続できません。

Login failed for user ‘******’.

This session has been assigned a tracing ID of ‘*******-0230-4743-a8c4-5fb532996fec’.  Provide this tracing ID to customer support when you need assistance. (Microsoft SQL Server、エラー: 18456)

000001

Windows Azure

SDK 1.3で、CloudDrive.InitializeCache() とCloudDrive.Mount() が、たまにERROR_UNSUPPORTED_OSで失敗するとの報告を受けました。
Azure CloudDrive サービスのOSが起動する前に、CloudDrive API を呼び出した時に、このエラーが発生します。旧バージョンのSDKでは、アプリケーションの開始が遅かったので、Azure CloudDrive サービスが起動しきった後に、起動していました。

この問題は将来バージョンで修正する予定です。修正するまでは、CloudDrive API を呼び出したときに、問題が発生した場合は、リトライすることを推奨します。CloudDrive.InitializeCache()を以下のサンプルコードのようにリトライします。
CloudDrive.CreateやCloudDrive.Mount、CloudDrive.GetMountedDrivesを含むCloudDrive APIsを最初に呼び出したときに、ループを回すようにします。

For (int i = 0; i < 30; i++)
{
       try
       {
           CloudDrive.InitializeCache(localCache.RootPath,localCache.MaximumSizeInMegabytes);
           break;                   
       }
       catch (CloudDriveException ex)
       {
           if (!ex.Message.Equals("ERROR_UNSUPPORTED_OS") || i == 29)
                 throw;
           Thread.Sleep(10000);
       }
}