mcpField
A
azuresql-db-faq

azuresql-db-faq

github.com/microsoftデータ・データベース2276 回インストール1 週間前に更新
リポジトリ

azuresql-db-faq について

Azure SQL Database コンテナーの機能やトラブルについて、ローカルエンジンとクラウドサービス、SQL Serverを混同せず回答するためのリファレンススキルです。サポートや開発の質問に対応するエージェント向けで、検証済みの挙動、制約、注意点を扱います。

主な機能

  1. 01エンジン、クラウド、SQL Serverの機能を区別
  2. 02よくあるエラーへの検証済み回答
  3. 03回避策と運用上の注意点を説明
  4. 04詳細なFAQと制約情報へのリンク

活用シーン

  1. 01コンテナーで機能が使えるか確認
  2. 02データベース切り替えやバックアップのエラー診断
  3. 03ローカルとクラウドの挙動の違いを説明

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/microsoft/azure-sql-database-container --skill azuresql-db-faq

インストール後、Claude Code で/azuresql-db-faqを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

skill.spec.jsonc
references/
faq.md
limitations.md

詳細

Azure SQL Database コンテナー:機能、制限、そしてその理由

SQL Server や Azure SQL Database に関する一般的な知識から推測するのではなく、「これはできますか/なぜできないのですか/X はサポートされていますか/クラウド版と何が違いますか」という質問に正確に答えるには、このスキルを使用してください。基本モデルは、このプレビュー製品固有の詳細を把握していません。また、正確な回答には微妙なニュアンスが含まれることがよくあります。

2026-09-19 に、コンテナーイメージタグ 18.0.226_4_147 に対して再測定しました。EngineEdition は 5、Edition は SQL Azure、ビルドは 12.0.2000.8 です。このスキルに含まれる実行可能なチェックは 7 つすべて合格しています。エンジンの識別、BACKUP と RESTORE に対する Msg 40510、USE に対する Msg 40508、包含ユーザーに対する Msg 33233、SET CONTAINMENT = PARTIAL に対する Msg 12824、ローカルファイルからの BULK INSERT に対する Msg 12713 です。このうち 2 つの番号は、この日付より前は間違っていました。このスキルでは Msg 15007 と Msg 12844 が表示されていました。どちらのステートメントも引き続き拒否されるため、回答は変わらず、番号のみが変わりました。このスキルが要約するギャップの一覧は、こうした実行とは独立して更新される公開済みの既知の制限ページに基づいているため、ギャップについて再び説明する前に、最新のページを確認してください。

基本的な考え方:エンジン、マネージドサービス、SQL Server の違い

このコンテナーは、ローカルで実行される Azure SQL Database エンジンです。マネージドクラウドサービスでも、SQL Server でもありません。「X はサポートされていますか」という質問は、ほぼすべて次の 4 つに分類でき、答えもそこから導けます。

  1. エンジン機能 -> 利用できます。 T-SQL 方言、システムビュー、VECTOR 型と VECTOR_DISTANCE、Always Encrypted(基本機能)。 SERVERPROPERTY('EngineEdition') は 5 を返し、Edition は 'SQL Azure' です。
  2. マネージドサービスの機能 -> 利用できません。 自動バックアップ、特定時点への復元、geo レプリケーション、エラスティックプール、ハイパースケール、サーバーレスの自動一時停止、データベース単位の DTU/vCore 上限、クラウドへの監査ログ出力、Azure portal/CLI/ARM による管理。これらはクラウド内でエンジンを包む機能です。このコンテナーに含まれるのはエンジンのみです。
  3. SQL Server 専用の機能 -> 意図的に含まれていません(Azure SQL Database にも含まれていません)。SQL Agent ジョブ、FILESTREAM/FileTable、インスタンス間の完全な Service Broker、リンクサーバー、サーバーをまたぐ分散トランザクション、Windows Authentication/NTLM です。
  4. このプレビューで開発中の機能 -> 注意点はありますが、動作します。 VS Code MSSQL 拡張機能の UI と SSMS、および PaaS の制限の完全な適用は、現在も完成に向けて作業中です。以前は CREATE VECTOR INDEX もここに含まれていましたが、現在は含まれません。動作しており、既知の制限ページにもそのように記載されています。以下を参照してください。

よくある質問(簡単な回答)

  • 「このコンテナーは Azure/本番環境で実行できますか?」 いいえ。これはローカルでの開発・テスト・CI・デモ向けの反復環境であり、本番用データベースではありません。本番環境では、同じコードを Microsoft Azure クラウドの Azure SQL Database にデプロイします(外側のループ)。通常、変更するのは接続文字列だけです。このコンテナーを Azure で実行することはありません。
  • 「バックアップを取得できますか?」 いいえ。コンテナーでは、すべてのセッションで BACKUP DATABASE と RESTORE DATABASE を実行すると Msg 40510(「このバージョンではサポートされていません」) が返されます。クラウドの Azure SQL Database でもサポートされていません。バックアップはプラットフォームによって管理されるため(BACKUP ステートメントでは実行しません)。ローカルデータを保持するには、Docker の名前付きボリューム(-v sqldb-data:/var/opt/mssql)を使用してください。マネージドバックアップ、ポイントインタイムリストア、または geo レプリケーションには、クラウドの Azure SQL Database を使用してください。
  • 「USE otherdb を実行すると Msg 40508 で失敗するのはなぜですか?」 ユーザーデータベースへの接続は、Azure と同様のセッションであり、クラウドの Azure SQL Database と同じ制限が適用されるためです。接続文字列でデータベースを選択してください(Database=appdb)。USE で切り替えないでください。USE が「動作する」のは、プロビジョニングセッションである master への接続時だけです。
  • 「データベースを作成するまで接続に失敗するのはなぜですか?」 エンジンは、接続時にデータベースを自動作成しません。master への接続で一度だけプロビジョニングし(CREATE DATABASE appdb)、その後 Database=appdb を指定して接続してください。
  • 「x64 以外のホストはサポートされていますか?/ARM64 ビルドはありますか?」 イメージは x64 専用で、ネイティブの ARM64 ビルドはありません。ARM64 ホストではエミュレーションで実行されます。Docker では --platform linux/amd64、Compose では platform: linux/amd64 を追加してください。「エミュレーションで実行される」と表現し、「ARM64 がサポートされている」とは決して言わないでください。また、ネイティブビルドやその提供日を約束しないでください。希望する場合は、https://aka.ms/azuresqldb-container-feature-request を案内してください。
  • 「CREATE VECTOR INDEX を実行できないのはなぜですか?」 実行できる可能性があります。ドキュメントとエンジンの挙動が異なる箇所です。Known limitations ページでは、ベクトルインデックスの DDL は現在も未解決の問題として記載されていますが、このイメージで検証したところ、DiskANN インデックスは構築され、それに対する VECTOR_SEARCH は順位付けされた結果を返します。ステートメントの実行を妨げる要因は 2 つあります。SET QUOTED_IDENTIFIER ON が必要ですが、sqlcmd では既定でオフです(これがないと Msg 1934 が発生しますが、そのメッセージには設定名が記載されません)。また、テーブルには 100 行以上の NULL ではないベクトル が必要です(それ未満では Msg 42266 が発生します)。インデックス作成後、そのテーブルに対する TRUNCATE TABLE は拒否され(Msg 42232)、DROP VECTOR INDEX はステートメントではありません(DROP INDEX name ON dbo.table を使用してください)。小規模なテーブルでは、全件スキャンによる top-k が正確なままであり、適切な選択肢です。詳しくは azuresql-db-rag スキルを参照してください。
  • 「Microsoft Entra ID(Azure AD)認証はサポートされていますか?」 はい。MSSQL_AAD_CLIENT_ID、MSSQL_AAD_PRIMARY_TENANT、MSSQL_AAD_CERTIFICATE_FILE_PATH を設定し、.pfx をマウントして構成してください(エクスポート時のパスワードは空にします)。起動時に Entra サーバー管理者を初期設定する場合は、任意で MSSQL_AAD_SERVER_ADMIN_NAME、MSSQL_AAD_SERVER_ADMIN_TYPE(0 = ユーザー、1 = グループ)、MSSQL_AAD_SERVER_ADMIN_SID も設定してください。SQL 認証(sa)も、シンプルなローカル環境での既定として引き続き使用できます。詳しい手順は azuresql-db-container スキルを参照してください。設定を始める前に開くファイルは references/entra-auth.md です。入門:Microsoft Entra ID 認証 も参照してください。
  • 「SSMS/MSSQL 拡張機能でエラーが発生するのはなぜですか?」 GUI ツールとの互換性はまだ 100% ではなく、修正中です。現在は sqlcmd またはドライバーを使用してください。どちらも動作します。コマンドラインの使い方は azuresql-db-container スキルに記載されています。MSSQL 拡張機能の GitHub Copilot 統合も動作します(https://aka.ms/vscode-mssql-copilot-docs)。
  • 「イメージが Docker Hub/MCR にないのはなぜですか?」 これはコンテナー限定の Private Preview です。イメージはプライベートレジストリにあり、pull 専用の共有認証情報は https://aka.ms/sqldbcontainerpreview-signup で Private Preview に登録すると提供されます(認証情報は変更される場合があります)。
  • 「エンジンに最近の修正が反映されていない、または古いビルドのように動作します。」 :latest は更新されるタグですが、docker run はすでにディスク上にあるコピーを再利用します(Docker の既定の pull ポリシーは missing です)。そのため、古いビルドのまま気付かずに使い続けることがあります。docker pull sqldbpreview-dpgaeqhmgphzd4bk.azurecr.io/azure-sql/db-dev:latest を実行して新しいビルドがあるか確認し、その後コンテナーを再作成してください。azuresql-db-container スキルのイメージリファレンスを参照してください。
  • 「クエリはローカルで動作するのに、クラウドでは失敗します。」 一部の PaaS の制限はまだコンテナーでは適用されていないため、クラウドでは無効なものがローカルで成功する場合があります。準備完了と判断する前に、実際の Azure SQL Database で一度検証してください(azuresql-db-local-to-cloud スキルを使うと、一度限りの確認用にターゲットをプロビジョニングできます)。
  • 「アプリユーザーを作成するとき、CREATE USER ... WITH PASSWORD が失敗するのはなぜですか?」 コンテナーでは SQL 包含ユーザーの作成に失敗し、Msg 33233 が発生します。また、包含を有効にすることもできません。ALTER DATABASE ... SET CONTAINMENT = PARTIAL は Msg 12824 で失敗します。このエラーでは、このエンジンには存在しない sp_configure の設定が求められます。代わりに、サーバーログインとそれにマッピングされたユーザーを作成してください。master で CREATE LOGIN applogin WITH PASSWORD='...' を実行し、続けて appdb で CREATE USER appuser FOR LOGIN applogin とロールの付与を行います。これは、包含ユーザーが優先されるクラウドとは逆の方法です。Entra の CREATE USER ... FROM EXTERNAL PROVIDER は動作しますが、Entra を構成して起動したコンテナー(MSSQL_AAD_*)でのみ使用できます。Entra の構成なしで起動したコンテナーでは、同じステートメントは Msg 33134 で拒否されます。エラーメッセージは「Principal '...' could not be resolved. Error message: 'Unable to query Azure AD certificate from local cert store.'」です。詳しい手順は azuresql-db-auth スキルを参照してください。 上記の簡潔な回答で質問に対応できない場合は references/faq.md を、ユーザーが回避策とともに現時点のギャップ一覧を必要としている場合は references/limitations.md を開いてください。

必ず行うこと

  • 一般的な SQL Server/Azure の知識ではなく、このスキルに基づいて回答してください。
  • 現在のギャップについて質問された場合は、回避策を示し、常に最新の一覧を掲載しているこちらを案内してください:https://microsoft.github.io/azure-sql-database-container/known-limitations.html
  • 「エンジンでは実行できない」(実際のギャップ)、「マネージドクラウドサービスでは実行できるが、エンジンでは実行できない」(設計上の違い)、「SQL Server では実行できるが、Azure SQL Database では実行できない」(意図的に含まれていない機能)を区別してください。
  • このスキルの回答が誤っていた、古くなっていた、または不足していた場合は、このスキルの不具合です。azuresql-db-feedback スキルを読み込み、レポートの提出を提案してください。

絶対にしないこと

  • マネージドサービスの機能(自動バックアップ、PITR、geo-replication、elastic pools、ポータル管理)がコンテナーで使えると主張しないでください。
  • x64 以外のホストが「サポートされている」とユーザーに伝えないでください。エミュレーションで実行されます。
  • コンテナーで BACKUP DATABASE/RESTORE DATABASE が機能すると主張しないでください。これらは Msg 40510 を返します。(クラウド上の Azure SQL Database でもサポートされていません。)ローカルでデータを永続化するには、Docker の名前付きボリュームを使用してください。

検証ルール

  • 回答は一般的な SQL Server または Azure の知識ではなく、このスキルに基づいていること。
  • 回答では、コンテナー、クラウド上の Azure SQL Database、SQL Server のうち、どれについて述べているかを明記すること。どれについての主張か明記されていない回答は、回答とはみなせません。
  • 引用するエラー番号は、このスキルまたは、簡潔な回答で対応できない場合に開く全質問リストに記載されていること。番号をでっち上げるくらいなら、わからないと伝えるほうが適切です。
  • ギャップについて述べる前に、ギャップ一覧は随時更新され、このスキルにはスナップショットしかないため、最新の制限事項ページを確認すること。
  • x64 以外のホストについては「エミュレーションで実行される」と伝え、「サポートされている」とは絶対に言わないこと。
  • 回答ではなくコマンドラインが必要な質問の場合は、ここで手順を示すのではなく、そのコマンドラインを扱うスキルを案内すること。

参考資料

  • references/faq.md:各機能とギャップの背景を分類別にまとめた、質問と回答の完全な一覧です。上記の簡潔な回答で質問に対応できない場合に読んでください。
  • references/limitations.md:既知の制限事項(現在の問題、動作上のギャップ、対象外の項目)のオフラインスナップショットです。ユーザーが回避策とともに現時点のギャップ一覧を必要としている場合に読んでください。

最新情報の確認

このスキルで使用するツールについて、バージョンが固定された信頼できる参考資料を示します(必要なものを読んでください)。

Microsoft Learn MCP サーバーが設定されている場合は、mcp__microsoft-learn__microsoft_docs_search または mcp__microsoft-learn__microsoft_docs_fetch を使って、必要に応じてこれらの最新バージョンを取得してください。これは任意です。利用できない場合は、上記の資料を信頼できる情報源として扱ってください。

コメント