SQL Azure

SQL Data Sync (SQL Azure Data Sync) の新しいサービスアップデート(Service Update 5 / SU5)が、6月6日(PST)から6月7日の間で実施されます。
新しいクライアントエージェント(バージョン4.0.46.0)のダウンロード提供もされます。

今まで提供されてきたすべてのクライアントエージェントは、アップグレードする必要があります。クライアントエージェントのアップグレード方法について説明します。

補足

クライアントエージェントのデフォルトパスが、次のパスに変更になります。

32ビット
C:\Program Files\Microsoft SQL Data Sync

64ビット
C:\Program Files (x86)\Microsoft SQL Data Sync

アップグレード方法

ここ」で説明している手順に従って、現在インストールされているエージェントのバージョンを確認してください。

  1. もしクライアントエージェントを起動していない場合は、クライアントエージェントをインストールしている場所に移動します。

    32ビット
    C:\Program Files\Microsoft SQL Azure Data Sync

    64ビット
    C:\Program Files (x86)\Microsoft SQL Azure Data Sync

  2. インストールディレクトリのbin配下にある「SqlAzureDataSyncAgent」を起動します。
  3. クライアントエージェントウィンドウ上で、Upgrade Agent をクリックします。

    アップグレードウィザードで、エージェントのアップグレードが進行します。アップグレードが完了すると、インストールパスが変わります。

  4. アップグレード処理が完了すると、クライアントエージェントウィンドウが閉じます。

    補足:旧エージェントのインストールパスは削除してはいけません

  5. Windows Explorerで、ステップ1で示したインストールパスを開きます。
  6. dataディレクトリに移動し、「AgentConfigData.xml」ファイルなどを確認します。

    32ビット
    C:\Program Files\Microsoft SQL Azure Data Sync\data

    64ビット
    C:\Program Files (x86)\Microsoft SQL Azure Data Sync\data

  7. AgentConfigData.xmlファイルをコピーします。
  8. アップグレードしたエージェントの新しいディレクトリに移動します。
  9. 手順7でコピーしたAgentCOnfigData.xmlファイルをdataディレクトリに張り付けます。

    32ビット
    C:\Program Files\Microsoft SQL Data Sync\data

    64ビット
    C:\Program Files (x86)\Microsoft SQL Data Sync\data

  10. システム上で、Microsoft SQL Data Sync Windows Serviceを再起動します。
  11. Microsoft SQL Data Sync Agent Previewを実行します。
    1. 補足

      さりげなく記述されていますが、

      「SQL Azure Data Sync」は、「SQL Data Sync」と記載されていますね。

      さて、これがどういう意味かは、今週末のお楽しみってことで。

      参照元情報

      Client Agent Upgrade Notification

    SQL Azure

    image

    SEの雑記にて紹介されている「SQL Server 2012 の SSMS を使用して SQL Azure にデータベースを配置」は、データ層アプリケーション(DAC Framework)をSQL Server Management Studioの裏側で使用して実現しています。

    SQL Server Management Studioで使用する以外にも、自分でDAC Frameworkを使用したコードを書いてバックアップ、デプロイをすることもできます。

    SQL Server 2008 R2、SQL Server 2012それぞれでライブラリが提供されていますが、SQL Server 2008 R2とSQL Server 2012で名前空間が変わっています。

    SQL Server 2008 R2では、「Microsoft.SqlServer.Management.Dac」

    SQL Server 2012では、「Microsoft.SqlServer.Dac」

    必要なライブラリ

    Microsoft SQL Server 2012 Feature Packから「Microsoft SQL Server 2012 Data-Tier Application Framework」をダウンロードしてインストールします。

    インストールをすると、「C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin」配下に、「Microsoft.SqlServer.Dac.dll」が配置されています。

    最少コード

    using Microsoft.SqlServer.Dac;
    static void Deploy(string conx, string databaseName, string path)
    {
        DacServices dacServices = new DacServices(conx);
        DacPackage dacpac = DacPackage.Load(path);
        dacServices.Deploy(dacpac, databaseName);
    }

    pathに「.dacpac」のファイルパス

    databasenameに、「SQL Azureに新たに作成したいデータベース名」

    conxに、接続文字列

    を渡してあげれば、SQL Azureデータベースのデプロイの完成。

     

    リファレンス

    SQL Azure

    Windows Azure管理ポータルのデータベース管理で、「接続のテスト」ボタンをクリックすると、

    Invoke 操作 ‘TestConnectionToDatabase’ に失敗しました。種類 ‘System.ServiceModel.DomainServices.Client.DomainOperationException’ の例外がスローされました。

    とエラーが発生し、接続できない場合があると、MSDNフォーラム「Azure: problem with ‘Test Connectivity’」で報告されています。image

    発見された再現方法は、管理者ログインにメールアドレスを指定すること。SQL Azureサーバーを作成時に、管理者ログイン名を指定します。その際に、メールアドレス、もっと言うと「@」が含まれていると再現します。「@」が含まれていても、次の画像を見ると分かる通り、バリデーションエラーにならないのです。

    image

    さて、真の不幸はここから。
    「@」が含まれたログイン名では、SQL Azureデータベースに接続することができないのです。SQL Server Management Studioで接続しようとすると、

    SNAGHTML752ae8

    ——————————

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

    ——————————
    ADDITIONAL INFORMATION:

    Server name cannot be determined.  It must appear as the first segment of the server’s dns name (servername.database.windows.net).  Some libraries do not send the server name, in which case the server name must be included as part of the user name (username@servername).  In addition, if both formats are used, the server names must match. (Microsoft SQL Server、エラー: 40531)

    ヘルプを表示するには http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=40531&LinkId=20476 をクリック

    と、エラーが発生し接続することができません。

    結論

    SQL Azureデータベースサーバーを作成する際に、ログイン名に「@」を使用してはいけません。使用してしまった場合は、記念に残しておくか、サーバーごと削除してしまいましょう。

    image

    SQL Azure

    クラウド間、クラウドとオンプレミス間のデータ同期をノーコーディングで実現するSQL Azure Data Syncは、現在Preview版が提供されています。
    定期定期に更新が加えられ、最近では2012年1月にメジャーアップデートされています。

    現在、SQL Azure Data Syncは、製品フィードバックを得るための実験段階で、本番運用では使用できません。ライセンス的にダメなのかは不明慮なのですが、公式サポートは提供されていません。つまり、本番環境で使用して、本番環境のデータが吹っ飛んだり、同期ミスで不整合が発生しても、サポート提供してないから自己責任だし、マイクロソフトは保障も復旧の手伝いもしませんよって段階です。
    間際らしいのですが、SQL Azure Reportingは、同じくPreview版での提供ですが、公式サポートの提供が始まっています。

    そんなSQL Azure Data Syncなので、使用したい人にとっては、一刻も早いリリースが待ち望まれるわけです。気になるリリース時期は、

    If you mean Data Sync Service release date, from what I know it is likely in second half of this year, possibly in 3rd quarter.

    Jin H. Microsoft(MSFT)
    MSDNフォーラム:SQL Azure Sync release date

    のようです。

    ただし、フォーラムでのマイクロソフト社員の回答は、あくまでも個人的見解で公式情報ではないので、参考程度にとらえてください。

    SQL Azure

    Windows Azure書籍

    Windows Azureについて書かれた書籍が、ここ最近立て続けに発売されています。年が明けてから発売されたものでも、次の3冊が発売されています。

    書籍という定型・固定的な情報源と、進化の速いクラウドの相性が悪い部分が出てしまっています。上記の書籍3冊で共通して、「SQL Azureで日本語を使用するには・・・」と特別にピックアップして説明しています。実際、あえて説明する必要があるトピックだったのです。

    しかし、2011年12月にリリースされた「既定の照合順序の変更」機能により、今でも通用するけど、あえてしなくても良い話となってしまいました。

    2011年12月より前にSQL Azureで日本語を使用するには・・・。

    従来、SQL Azureの照合順序は、「SQL_Latin_General_CP1_CI_AS」でした。
    その為、日本語を格納するには次のような対応が必要でした。

    • varchar、char、textデータ型に日本語を格納するには、個別に日本語照合順序を指定する
    • nvarchar、nchar、ntext型のようなユニコード対応データ型を使用する
    • 日本語を格納する際には、Nプレフィックスを記述する(例:「N’日本語を格納’」)

    現在、SQL Azureで日本語を使用するには

    2011年12月に、データベースの既定の照合順序を指定できるようになりました。そのため、データベース作成時に、照合順序を変更しておけば普通に日本語を格納することができます。

    照合順序を指定してデータベースを作成するには、SQL Azure管理ポータルを使用します。Windows Azure管理ポータルからデータベースを作成する時には、照合順序を指定できません。

    SQL Azure管理ポータルで、データベースを新規作成するときに照合順序を「Japanese_CS_AI」を指定します。そうすると、日本語環境のWindows Serverに日本語版のSQL Serverをインストールしたときと同じ状態になります。

    image

    image

    とはいえ・・・

    これで、話が完結しないのが日本語。

    JIS2004対応をするには、結局のところ、「nvarchar、nchra、ntextデータ型を使用して、Nプレフィックスを使用する」必要があるので、結局のところ、状況はあまり変わらないのでありました。