Azure SQL Data Warehouse の機能強化 – AAD のサポート、行サイズの拡張、新しい T-SQL 機能の追加

執筆者: Sonya Marshall (Senior Program Manager, SQL Engineering)

このポストは、5 月 17 日に投稿された Azure SQL Data Warehouse now supports AAD, large rows and additional T-SQL features の翻訳です。

 

Azure SQL Data Warehouse の機能が強化されました。安定性と信頼性が強化されたほか、複数の新機能が追加されています。その多くはお客様からのフィードバックを直接反映したものです。今後のバージョンで追加してほしいという機能がありましたら、フィードバック ページ (英語) までご要望をお寄せください。

Azure Active Directory (AAD) 認証

Azure Active Directory (ADD) を使用してデータ アクセス管理を大幅に簡略化できるようになりました。AAD は現在、約 950 万件のディレクトリと 6 億件のユーザー アカウントをホストしています。AAD 認証を使用することでデータベースや他のマイクロソフト サービスのユーザーの ID を一元的に管理することができます。今回 AAD とのシームレスな統合がサポートされたことにより以下のことが可能になりました。

  • ユーザー名とパスワードを個別に作成することなく、エンド ユーザーにデータ ウェアハウスへのアクセス許可を付与する

 

  • ドメイン セキュリティ グループまたはドメイン ユーザーのリストを使用して、データベースへのシングル サインオンを提供する

 

  • SQL Data Warehouse に接続するアプリケーションに対して、トークンベースの認証を有効化する

 

  • Windows 認証や、Azure Active Directory でサポートされている他の認証方法を利用できるため、パスワードを保存する必要がない

 

  • 複数のデータベース サービスにわたって多数のユーザー ID が存在する状況を回避する

 

詳細については、Azure Active Directory 認証を使用して SQL Data Warehouse に接続する方法に関するドキュメント (英語) をご覧ください。

行サイズの拡張

行サイズの拡張については、ユーザーの皆様からたびたびご要望が寄せられていました。今回の更新により、32 K を超える行と 8 K を超えるデータ型がサポートされるようになりました。サイズの大きな行のサポートに伴い、varchar(max)nvarchar(max)varbinary(max) のサポートが追加されます。これらのデータ型が加わることにより、既存のテーブル定義よりも使用できるデータ型が増えるため、クラウドへの移行がさらに容易になります。

行サイズの拡張に関する初回の更新では数点の制限がありますが、これらの制限は今後の更新で解除される予定です。今回の更新では、サイズの大きな行の読み込みは Azure Data Factory (BCP ユーティリティを使用)、Azure Stream AnalyticsSSIS (英語)BCP、.NET の SqlBulkCopy クラスでのみサポートされています。PolyBase でのサポートは今後のリリースで追加される予定です。Azure SQL Database と同様に、varchar(max) などのサイズの大きなデータ型のサポートは、ヒープ テーブルとクラスター化インデックス テーブルに限定されています。クラスター化列ストア テーブルでもサイズの大きな行についてはサポートされますが、サイズの大きなデータ型については今後サポートされる予定です。

トランザクションの安全性のための制限

長時間のロールバックを防止するために、トランザクションのサイズ制限が実装されています。1 時間を超える程度の処理は十分実行できますが、何時間にもわたるロールバックは実行できないように制限されています。この安全性のための制限は、長時間にわたって実行されるトランザクションをユーザーが途中で停止しようとした場合など、長時間のデータベースの中断につながる可能性のある状況を回避するために実装されました。一般的なベスト プラクティスとして、トランザクション サイズを制限することでパフォーマンスと安全性の両方が向上します。数ステップの簡単な手順を実行するだけで、このベストプラクティスを実践することができます。トランザクション サイズを制限してワークロードを最適化する方法の詳細については、トランザクションに関するベスト プラクティス ガイドをご覧ください。

Visual Studio によるサポートの強化

Visual Studio による SQL Data Warehouse のサポートが強化され、SQL Server Data Tools (SSDT) の最新バージョンの自動インストールと自動更新がサポートされました。今回の統合の強化により、SSDT の新しいバージョンがリリースされた時点で自動更新が実行されるため、SSDT を手動で検索してインストールする手間が省けます。先日、SQL Data Warehouse のサポートを強化するために SSDT に複数の修正が行われました。これらの修正をすべて適用するには、SSDT の最新バージョン (現時点では 14.0.60311.1) をご利用ください。SSDT の最新バージョンにアップグレードするには、Visual Studio から [Tools]、[Extensions and Updates]、[Updates]、[Product Updates] の順にクリックし、"Microsoft SQL Server Update for database tooling" を選択してください。SSDT の今後のバージョンでは、データベース プロジェクトのサポートなど、SQL Database ではサポートされていて SQL Data Warehouse ではまだサポートされていない機能が追加される予定です。

Visual Studio と SQL Data Warehouse を併用する方法の詳細については、記事「Visual Studio で SQL Data Warehouse に接続する」をご覧ください。

T-SQL のサポート

これまで SQL Server でのみ利用可能だった T-SQL のデータ型とコマンドの一部が SQL Data Warehouse でも利用できるようになりました。これにより機能性が向上すると共に、2 つのプラットフォーム間での移行作業が容易になります。

RAND()

今回のリリースでは RAND() 関数も追加されました。この関数は、0 ~ 1 (両端の値は含まない) の間の float 型の擬似乱数を返します。以下のクエリは、生成された 2 つの乱数を返します。

 SELECT RAND(CHECKSUM(NEWID())) as Rand, RAND(8) as RandSeed;

rand

CHECKSUM() と BINARY_CHECKSUM()

ある SQL プラットフォームから別の SQL プラットフォームにデータベースを移行する際にプラットフォーム間のデータ転送を検証するには、CHECKSUM()BINARY_CHECKSUM() 関数を使用すると便利です。この 2 つの関数は string 型の処理方法が異なります。たとえば、大文字と小文字が混在する場合、CHECKSUM は同じ値を返すのに対して、BINARY_CHECKSUM は異なる値を返します。

 SELECT
    CHECKSUM('case') as ChecksumLower,
    CHECKSUM('CASE') as ChecksumUpper,
    BINARY_CHECKSUM('case') as ChecksumBinaryLower,
    BINARY_CHECKSUM('CASE') as ChecksumBinaryUpper;

checksum

numeric、uniqueIdentifier、NEWID()

SQL Data Warehouse に numericuniqueidentifier という新しい 2 つのデータ型が追加されました。numeric 型は decimal 型と機能的に同等であり、移行を容易にするために追加されました。uniqueidentifier は GUID 用のデータ型で、GUID を格納できるほか、このデータ型を使用するデータベースの移行を容易にします。uniqueidentifier と共に一意の GUID を生成する NEWID() 関数のサポートも追加されました。以下はこれらの新機能を使用した T-SQL の例です。

 CREATE TABLE NewFeaturesTable
(
    Id UNIQUEIDENTIFIER NOT NULL,
    BigText NVARCHAR(MAX) NULL
)
WITH (HEAP);

DECLARE @ID UNIQUEIDENTIFIER = NEWID();
DECLARE @TEXT VARCHAR(MAX) = REPLICATE('This text will be long...',1000)
INSERT INTO NewFeaturesTable (Id, BigText) VALUES (@ID, @TEXT);
 
SELECT
    Id,
    DATALENGTH(BigText) AS [Length],
    CHECKSUM(*) AS [CheckSum]
FROM NewFeaturesTable;

newid

新しい管理用関数

データベースのセキュリティ プリンシパルを確認する際、IS_SRVROLEMEMBER() 関数を使用するとユーザーのサーバー ロールをチェックできます。この関数は false (ロールのメンバーではない) の場合に 0、true の場合に 1 を返します。以下の例では、指定したユーザーは sysadmin ロールのメンバーではないということがわかります。

 SELECT IS_SRVROLEMEMBER('sysadmin', 'Contoso\Hacker') as IsMember;

is_srvrolemember

データベースのプロパティ

sys.database_service_objectives (英語) ビューでは、複数の SQL Database と SQL Data Warehouse をホストできる論理サーバー上のすべてのデータベースの Database Edition (サービス レベル) と Service Objective (料金レベル) を照会できます。このダイナミック管理ビュー (DMV) へのクエリは、論理マスター データベースから実行する必要があります。

 SELECT a.name, b.edition, b.service_objective
FROM
    master.sys.databases a
    INNER JOIN master.sys.database_service_objectives b
        ON a.database_id = b.database_id
ORDER BY 1;

service_objectives

SQL Data Warehouse の管理を行う際は、DWU (英語) の現在の使用率とサイズの最大許容値を確認するとよいでしょう。これらのプロパティを照会するには、DATABASEPROPERTYEX() 関数を使用します。以下の例では、一般的に関心の高いプロパティを照会しています。

 SELECT
    DATABASEPROPERTYEX('DemoDB', 'Edition') As Edition,
    DATABASEPROPERTYEX('DemoDB', 'ServiceObjective') as ServiceObjective,
    DATABASEPROPERTYEX('DemoDB', 'MaxSizeInBytes') as MaxSizeInBytes,
    DATABASEPROPERTYEX('DemoDB', 'Collation') as Collation;

databasepropertyex

アーカイブ データの圧縮

今回のリリースでは、クラスター化列ストア テーブルにアーカイブ データ圧縮機能が導入されました。オプションとして選択できるこの圧縮アルゴリズムは、データをさらに圧縮することにより、データ保存のコストを削減できます。しかし、コストを削減できる反面、圧縮したデータへのクエリを実行する場合に CPU 使用率が増加するというデメリットもあります。そのため、あまり頻繁にクエリを実行する予定のない古いデータに対してこの機能を使用することをお勧めします。以下の例では、ALTER TABLE コマンドを使用して、テーブルに含まれる古いデータ パーティションにアーカイブ データ圧縮を適用しています。

 ALTER TABLE FactSales
REBUILD PARTITION = 1 WITH (DATA_COMPRESSION = COLUMNSTORE_ARCHIVE);

フィードバックのお願い

SQL Data Warehouse の機能を設計する際には、できるだけユーザーの皆様が望まれている機能を実装したいと考えています。機能に関するご要望は、UserVoice フィードバック (英語) サイトからお聞かせください。ご提案やフィードバックへの投票をしてくださった皆様には、最新情報を定期的にお届けすると共に、その機能のリリース情報をいち早くお知らせいたします。また、フィードバック用アンケート (英語) からご意見をいただく方法もありますのでご利用ください。

関連情報

SQL Data Warehouse に関する資料は多数あります。以下はその一部です。ぜひご参照ください。