2016年6月15日水曜日

Azure SQL Databaseの互換性レベルの変更方法

2016年6月中旬より、Azure SQL Databaseでは新規作成したデータベースの既定の互換性レベルが120から130に変更されます。これ以前に作成した既存のデータベースへの影響はなく、各データベースの互換性レベル(100、110、120のいずれか)が維持されます。

このため、SQL Server 2016のクエリプロセッサの機能強化のメリットを得るために、Azure SQL Databaseの互換性レベルを変更することが推奨されています。

互換性レベルは、以下のSQLで変更できます。
ALTER DATABASE <データベース名> SET COMPATIBILITY_LEVEL = 130

なお、互換性レベルは以下の通りです。
  • SQL Server 2008 + SQL Database v11: 100
  • SQL Server 2012: 110
  • SQL Server 2014 + SQL Database v12: 120
  • SQL Server 2016 + SQL Database v12: 130

2016年6月2日木曜日

Azure Machine Learningのモジュール名変更

気が付いたら、Azure Machine Learningのいくつかのモジュール名が変更になっていました。
  • Project Columns -> Select Columns in Dataset
  • Quantize Data -> Group Data into Bins
  • Sweep Parameters -> Tune Model Hyperparameters
  • Metadata Editor -> Edit Metadata
  • Descriptive Statistics -> Summarize Data
  • Reader -> Import Data
  • Writer -> Export Data
  • Image Reader -> Import Images

2016年5月18日水曜日

SQL DW May 2016 updateにおけるLarge-row support

SQL DWのMay 2016 updateで行あたりのバイト数が32KBという制限が外れ、SQL Serverと同様になったようです。
ただし、May 2016 updateではPolybaseを使った場合の32KBの制限は残っています。(そのうち外れる様子)

2016年4月8日金曜日

Bot Frameworkベースのアプリ実行に、401 Unauthorizedや403 Forbiddenが出る場合

Bot Frameworkでアプリを作成してデプロイした場合、Basic認証ができずにエラーになることがあります。 これは、Emulatorを使った場合、App Appsとしてデプロイした場合、双方で発生します。

これは、どうやらBot FrameworkがBasic認証をうまくハンドリングできていないのが原因のようです。

回避策としては、
1. HTTPSで接続できるようにする
2. Basic認証を外す
となるのですが、お試しでやるときにHTTPSを構成するまでもないと思うので、Basic認証の外し方を記述しておきます。

やり方は単純で、MessageController.cs内の[BotAuthentication]属性をコメントアウトするだけです。
namespace Bot_Application1
{
    //[BotAuthentication] //この属性をコメントアウトする
    public class MessagesController : ApiController
    {
     ......

2016年3月18日金曜日

HDInsightクラスタ(Windows)でヘッドノードに管理者権限を付与できない件について

HDInsightクラスタに紐づいたストレージ間でAZCopyでデータコピーをしようという要件がありそうなのですが、これは第3者のVMを経由しないとだめなようです。
AZCopyをインストールするにはWindowsの管理者権限が必要なのですが、これが不可とのことです。

参考:Administrator Privileges on Headnode of HDInsight-Cluster

2016年3月14日月曜日

Azure SQL DatabaseでSQLの実行時間を図る方法

SQL文の実行時間を測定したい場合は
set statistics time on
をSQL文の前に実行します。
例えば
set statistics time on;
go
select * from saleslt.Customer;
go
といったSQL文を実行すると
SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 1 ms.

    (847 row(s) affected)    

 SQL Server Execution Times:
   CPU time = 16 ms,  elapsed time = 8 ms.
といった実行時間の情報が得られます。

また、平均CPUに基づいて上位N位のSQL文を取得したい場合には、動的管理ビュー「sys.dm_exec_query_stats」を使います。
例えば上位5位までのSQL文を取得したい場合には
SELECT TOP 5 query_stats.query_hash AS "Query Hash", 
    SUM(query_stats.total_worker_time) / SUM(query_stats.execution_count) AS "Avg CPU Time",
    MIN(query_stats.statement_text) AS "Statement Text"
FROM 
    (SELECT QS.*, 
    SUBSTRING(ST.text, (QS.statement_start_offset/2) + 1,
    ((CASE statement_end_offset 
        WHEN -1 THEN DATALENGTH(st.text)
        ELSE QS.statement_end_offset END 
            - QS.statement_start_offset)/2) + 1) AS statement_text
     FROM sys.dm_exec_query_stats AS QS
     CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as ST) as query_stats
GROUP BY query_stats.query_hash
ORDER BY 2 DESC;
GO
といったSQL文を実行します。

なお、残念ながらこれらはAzure SQL Datawarehouseでは使用できないようです。

参考:https://technet.microsoft.com/ja-jp/library/gg457940.aspx

2016年2月5日金曜日

リモートデスクトップの接続数制限解除

AzureでSQL Database等を操作するときに、踏み台用のWindows VMを構成し、リモートデスクトップ経由で操作することがあるかと思います。 Windows Server 2012 R2のリモートデスクトップ接続はデフォルトだと1セッションしか接続出来ないので、この制限を解除する手順を紹介します。

  1. 「ファイル名を指定して実行」より「gpedit.msc」と入力
  2. 「ローカルコンピューターポリシー」->「コンピューターの構成」->「管理用テンプレート」->「Windowsコンポーネント」->「リモートデスクトップサービス」->「リモートデスクトップセッションホスト」->「接続」を選択
  3. 「リモートデスクトップサービスユーザーに対してリモートデスクトップサービスセッションを1つに制限する」を「無効」に変更

これでリモート接続上限2になり、コンソールと合わせると3セッションの操作が可能になります。
同一ユーザでも2セッション張る事が可能です。