SQL Database Basic/Standard でも Active Geo Replication がサポートされました

azure.microsoft.com

Active Geo Replication が Basic / Standard でも使えるようになりました。

これに伴い、Standard / Premium で使えた、Standard Geo Replication は 2017/04 で廃止になります。

Standard Geo Replication が Active Geo Replication に勝ってるとこは、セカンダリの価格位かな?
2台目が * 0.75 だったのが * 1 倍の価格になってしまうのがネックですかね。

Azure WebApps サイト単位で IP 制限をする

Build とか SQL Server 2016 RC1 とかの話題が出てますが、気にせずメモ書き。

Microsoft Azure Web Site Cheat Sheet
Cheap and easy IP blocking in Azure Web Apps – Shawn Cicoria

Web.config に書けばいいんですが、諸々の事情でサイト毎に設定したい場合のメモ。

d:\home\site に applicationHost.xdt を配置する。

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <location path="サイト名" xdt:Locator="Match(path)" xdt:Transform="InsertIfMissing">
    <system.webServer xdt:Transform="InsertIfMissing">
      <security xdt:Transform="InsertIfMissing">
        <ipSecurity allowUnlisted="false" denyAction="NotFound" xdt:Transform="Replace">
          <add allowed="true" ipAddress="許可するIP" xdt:Transform="InsertIfMissing"/>
        </ipSecurity>
      </security>
    </system.webServer>
  </location>
</configuration>

location 指定しないと、kudo や site extensions の方*1に対して設定されてしまいました。
これで kudo に繋がらなくなったりします。 そうなった場合は、FTP から applicationHost.xdt を削除すると設定も解除されました。

*1:~.scm.azurewebsites.net

T-SQL 非決定的関数やサブクエリを case / choose / coalesce の条件部で使うときは注意が必要!

T-SQL でズンドコキヨシを書こうとして気付いたのですが、

select case cast(RAND() * 100 as int) % 2 + 1 
  when 1 then N'ズン' 
  when 2 then N'ドコ' 
  else '意図していない!' end

これが '意図していない!' を返す時があったり、

select choose(cast(RAND() * 100 as int) % 2 + 1, N'ズン', N'ドコ')

これが null を返す時があります。

バグってるのかと思って調べてみると以下のサイトが見つかりました。
SQL Server CASE Law
COALESCE((subquery), 1) may return NULL | Microsoft Connect

ここでは coalesce ですが、case / choose も同じようです。

非決定的な関数の場合、条件判定の際に、複数回実行するそうです。

case の例だと、1つ目の条件(when 1)の時の実行結果が 2 で、2つ目の条件(when 2)の時の実行結果が 1 になると、else の '意図していない!' になってしまうという。
choose も中で同じような事やってるんですかねー。

上の記事でも書いてる通り、条件決める値は1回だけの実行が直感的で良いと思うけど。。

これ調べててズンドコキヨシ書けてない。。

メモ:Azure WebApps で 1つのリポジトリに複数の Webアプリがある時のデプロイ

Deploying TWO websites to Windows Azure from one Git Repository - Scott Hanselman

WebApps の Application settings の app settings に Project = Webアプリ.*proj を指定するだけでOK。

WebJobs だけを載せる場合も同様に、コンソールアプリ.*proj でOK。

ちなみに、WebApps と WebJobs を一緒に載せる場合は、
WebJobs を含むソリューションを Azure Web Apps へソース管理からデプロイする方法 - しばやん雑記
で紹介されている カスタムデプロイスクリプト でもいいですし、
Webアプリの .*proj ファイルの AfterBuild で コンソールアプリをビルドして、WebApps の App_Data 以下に配置する方法でもいけました。

メモ:SQL Server ScriptDom の 2016 対応

Feature Pack に居なかったので調べたら
Download Microsoft® SQL Server® 2016 Community Technology Preview 3.2 (CTP3.2) Feature Pack from Official Microsoft Download Center

リリース時期は未定のようです。はよ!
What’s new in the Server 2016 CTP 3.3 ScriptDom Parser | Esoteric

リリースされてる JDK のバージョンを取得する方法 (解決)

リリースされてる JDK のバージョンを取得する方法 (未解決) - お だ のスペース の続き。

Java の更新とか忘れてた。。