[アップデート] SQL Server 2022入りのAMIがリリースされました

2022.11.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

しばたです。

先週SQL Server 2022が正式リリースされ、その後わりとすぐのタイミングでSQL Server 2022入りのAMIがリリースされました。

SQL Server 2022

SQL Server 2022自体の機能面についてはリリースノートとムッシュの記事を見て頂くと良いでしょう。

AWS向けにはS3へのバックアップ機能が便利に使えそうです。

提供リージョン

SQL Server 2022入りAMIは全てのAWSリージョンで提供済みとのことです。
本日時点の東京リージョンでAMIを検索すると以下のものがヒットしました。

日本語版 Windows Server

対象OSはWindows Server 2019 - 2022、対象エディションはWeb, Standard, Enterpriseでした。

AMI ID イメージ名
ami-07ab02fb22aaf3a0e Windows_Server-2022-Japanese-Full-SQL_2022_Web-2022.11.21
ami-0eee6534cf84c69a5 Windows_Server-2022-Japanese-Full-SQL_2022_Standard-2022.11.21
ami-0441d3bb39561d31c Windows_Server-2022-Japanese-Full-SQL_2022_Enterprise-2022.11.21
ami-0b87bae1267615c91 Windows_Server-2019-Japanese-Full-SQL_2022_Web-2022.11.21
ami-0ebd4d7e044fb9546 Windows_Server-2019-Japanese-Full-SQL_2022_Standard-2022.11.21
ami-049d97d3c2744c6c8 Windows_Server-2019-Japanese-Full-SQL_2022_Enterprise-2022.11.21

英語版 Windows Server

対象OSはWindows Server 2019 - 2022、対象エディションはExpressj, Web, Standard, Enterpriseでした。

AMI ID イメージ名
ami-0b7384fb20af2c593 Windows_Server-2022-English-Full-SQL_2022_Express-2022.11.21
ami-0f8676245e2466aa2 Windows_Server-2022-English-Full-SQL_2022_Web-2022.11.21
ami-06a8816dd0dd51a60 Windows_Server-2022-English-Full-SQL_2022_Standard-2022.11.21
ami-0811ab8afb1ca5f5d Windows_Server-2022-English-Full-SQL_2022_Enterprise-2022.11.21
ami-0a4153f725af96bd6 Windows_Server-2019-English-Full-SQL_2022_Express-2022.11.21
ami-0428776bef5c330ee Windows_Server-2019-English-Full-SQL_2022_Web-2022.11.21
ami-0d3f9329b8b5a722c Windows_Server-2019-English-Full-SQL_2022_Enterprise-2022.11.21
ami-0ce2a6174d8e9ed97 Windows_Server-2019-English-Full-SQL_2022_Standard-2022.11.21

Linux

LinuxではRHEL 8.6環境のAMIが見つかりました。

AMI ID イメージ名
ami-07201676e22691102 RHEL_8.6-x86_64-SQL_2022_Express-2022.11.18
ami-064d2a8f528240c59 RHEL_8.6-x86_64-SQL_2022_Standard-2022.11.18
ami-01a8f91450a1a2493 RHEL_8.6-x86_64-SQL_2022_Web-2022.11.18
ami-0ea7bab75ee4931b9 RHEL_8.6-x86_64-SQL_2022_Enterprise-2022.11.18
ami-0365fc5e4eebb06c1 RHEL_HA_8.6-x86_64-SQL_2022_Standard-2022.11.18
ami-02dd740f01d9774dd RHEL_HA_8.6-x86_64-SQL_2022_Enterprise-2022.11.18

RDS for SQL Serverに関して

RDS for SQL Serverの対応はまだなのでご注意ください。

試してみた

それでは早速試してみます。

今回は私の検証用AWSアカウントの東京リージョンでami-0eee6534cf84c69a5 (Windows_Server-2022-Japanese-Full-SQL_2022_Standard-2022.11.21)のEC2インスタンス作ってみます。

インスタンスタイプはm6i.large、EBSは最小の65GiBにしています。
ちなみにSQL Server入りAMIの場合エディションによりサポートされるインスタンスタイプとEBSの最低容量が異なります。
EC2の料金ページに該当するインスタンスタイプが存在するかでサポート状況を判定するのが一番手っ取り早いでしょう。

作成したEC2にRDP接続しSSMSからデータベースを確認してみました。

ちゃんとSQL Server 2022ですね。

同梱されるSSMSのバージョン

このAMIにインストールされているSSMSのバージョンがVer.18.11.1だったため、GUI上でテーブル作成や編集を行おうとすると

このバックエンド バージョンでは、データベース ダイアグラムまたはテーブルのデザインはサポートされていません。 (MS Visual Database Tools)

というエラーメッセージが出てしまいます。
GUIによる操作を行いたい場合は現在プレビューのVer.19(本日時点でVer.19 Preview 3が最新)を使ってください。

S3へのバックアップ

最後にS3へのバックアップを試します。
手順としては前掲のAWS Blogの記事に倣います。

前提条件

SQL Server 2022のS3バックアップではIAMロールは使えずアクセスキーを使う必要があります。
このため適当なIAMユーザーを事前に用意し、アクセスキーを払い出しておきます。

IAMユーザーにはS3に対する

  • s3:ListBucket
  • s3:PutObject
  • s3:GetObject

の権限を与えておく必要があります。
今回はAWS Blogの例と同様に以下のsql-backups-2022で始まるS3バケットに対する権限を与えました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::sql-backups-2022*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::sql-backups-2022*/*"
            ]
        }
    ]
}

バックアップ先のS3バケットはsql-backups-2022-shibata-testという名前で用意しておきました。

資格情報の作成

はじめにCREATE CREDENTIAL文を実行して資格情報を作成する必要があります。
Microsoftのドキュメント上は

CREATE CREDENTIAL [s3://<endpoint>:<port>/<bucket>]
WITH
    IDENTITY = 'S3 Access Key',
    SECRET   = '<AccessKeyID>:<SecretKeyID>';

という書式なのですが、エンドポイント指定に関してはS3バケットをURL形式で指定する形で良い模様です。
このため今回は、

CREATE CREDENTIAL [s3://sql-backups-2022-shibata-test.s3.ap-northeast-1.amazonaws.com]
WITH IDENTITY = 'S3 Access Key'
    ,SECRET   = 'AKIAXXXXXXXXXXXXXXX:ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ'
;

という形にしています。 IDENTITYS3 Access Keyという固定文字列なので注意してください。
そしてSECRETにアクセスキーとシークレットキーをコロン区切りで記載する必要があるため、AWSで自動生成されたキーにコロンが混じっている場合は無くなるまで再作成する必要があります。

SQL文がエラー無く完了すればOKです。

データベースのバックアップ

続けてBACKUP DATABASE文を実行します。
バックアップ先を前項で指定したURLを含めた形で指定してやります。

-- 事前にデータベース mydb は作成済み
BACKUP DATABASE mydb
TO URL = 's3://sql-backups-2022-shibata-test.s3.ap-northeast-1.amazonaws.com/mydb.bak'
;

これで無事S3にバックアップができました。

データベースのリストア

データベースのリストアはRESTORE DATABASE文を実行してやればOKです。
リストア元ファイルをURL形式で指定してやります。

RESTORE DATABASE mydb
FROM URL = 's3://sql-backups-2022-shibata-test.s3.ap-northeast-1.amazonaws.com/mydb.bak'
WITH REPLACE
;

最後に

簡単ですが以上となります。
いずれRDS for SQL SeverでもSQL Server 2022が使える様になるはずですので期待して待ちたいですね。