SQL Server と Azure SQL Managed Instance での T-SQL の相違点
適用対象: Azure SQL Managed Instance
この記事では、Azure SQL Managed Instance と SQL Server の構文および動作の相違点について簡単に説明します。
SQL Managed Instance は、SQL Server データベース エンジンとの高い互換性を備えており、ほとんどの機能は SQL Managed Instance でサポートされています。
SQL Managed Instance には、SQL Server と比べて PaaS の制限と動作の違いがいくつかあります。 それらの相違点は、次のカテゴリに分けることができます。
[ 可用性](#availability) には、[ Always On 可用性グループ](#always-on-availability-groups) と[ バックアップ](#backup) の相違点が含まれます。[ セキュリティ](#security) には、[ 監査](#auditing) 、[ 証明書](#certificates) 、[ 資格情報](#credential) 、[ 暗号化プロバイダー](#cryptographic-providers) 、[ ログイン/ユーザー](#logins-and-users) 、[ サービス キーとサービス マスター キー](#service-key-and-service-master-key) の相違点が含まれます。[ 構成](#configuration) には、[ バッファー プール拡張機能](#buffer-pool-extension) 、[ 照合順序](#collation) 、[ 互換性レベル](#compatibility-levels) 、[ データベース ミラーリング](#database-mirroring) 、[ データベース オプション](#database-options) 、[ SQL Server エージェント](#sql-server-agent) 、[ テーブル オプション](#tables) の相違点が含まれます。- 機能には、BULK INSERT/OPENROWSET、CLR、DBCC、分散トランザクション、拡張イベント、外部ライブラリ、FILESTREAM と FileTable、フルテキスト セマンティック検索、リンク サーバー、PolyBase、レプリケーション、RESTORE、Service Broker、ストアド プロシージャ、関数、およびトリガーが含まれます。
- VNet やサブネット構成などの
[ 環境設定](#Environment) 。
これらの機能の大半はアーキテクチャ上の制約であり、サービスの機能を表します。
SQL Managed Instance で見つかり、将来解決される予定の一時的な既知の問題については、新機能に関するページで説明しています。
Note
Microsoft Entra ID の、旧称は Azure Active Directory(Azure AD)です。
可用性
Always On 可用性グループ
- CREATE ENDPOINT … FOR DATABASE_MIRRORING
[ CREATE AVAILABILITY GROUP](/sql/t-sql/statements/create-availability-group-transact-sql) - ALTER AVAILABILITY GROUP
[ DROP AVAILABILITY GROUP](/sql/t-sql/statements/drop-availability-group-transact-sql) [ ALTER DATABASE](/sql/t-sql/statements/alter-database-transact-sql) ステートメントの[ SET HADR](/sql/t-sql/statements/alter-database-transact-sql-set-hadr) 句
バックアップ
Azure SQL Managed Instance には自動バックアップがあるので、ユーザーは完全なデータベースの COPY_ONLY
バックアップを作成できます。 差分、ログ、ファイル スナップショットの各バックアップはサポートされていません。
- SQL Managed Instance では、Azure Blob Storage アカウントにのみインスタンス データベースをバックアップできます。
- サポートされるのは
BACKUP TO URL
のみです。 `FILE` 、`TAPE` 、およびバックアップ デバイスはサポートされていません。
- サポートされるのは
- ほとんどの一般的な
`WITH` オプションがサポートされています。COPY_ONLY
は必須です。FILE_SNAPSHOT
とCREDENTIAL
はサポートされません。- テープ オプション:
`REWIND` 、`NOREWIND` 、`UNLOAD` 、`NOUNLOAD` はサポートされていません。 - ログ固有のオプション:
`NORECOVERY` 、`STANDBY` 、`NO_TRUNCATE` はサポートされていません。
制限事項:
SQL Managed Instance では、最大 32 個のストライプを使用するバックアップにインスタンス データベースをバックアップできます。バックアップの圧縮を使用した場合、このバックアップで最大 4 TB のデータベースに十分対応できます。
サービス管理 Transparent Data Encryption (TDE) を使用して暗号化されたデータベースでは、
`BACKUP DATABASE ... WITH COPY_ONLY` は実行できません。 サービス管理 TDE では、バックアップを内部の TDE のキーで暗号化するように強制します。 キーはエクスポートできないので、バックアップを復元することはできません。 自動バックアップとポイントインタイム リストアを使用するか、代わりに[ 顧客管理 (BYOK) TDE](../database/transparent-data-encryption-tde-overview.md#customer-managed-transparent-data-encryption---bring-your-own-key) を使用します。 また、データベースで暗号化を無効にすることができます。SQL Managed Instance 上で行われたネイティブ バックアップを SQL Server 2022 インスタンスのみに復元することはできません。 これは、SQL Server の他のバージョンと比べて、SQL Managed Instance の内部データベース バージョンが高いためです。 詳細については、SQL Managed Instance データベース バックアップの SQL Server 2022 への復元に関するページを参照してください。
Azure ストレージとの間でデータベースのバックアップまたは復元を行うには、Azure Storage リソースへの制限付きアクセス権が付与される URI である、マネージド ID か Shared Access Signature (SAS) のいずれかを使って認証できます。詳細についてはこちらを参照してください。 これらのシナリオでのアクセス キーの使用はサポートされていません。
SQL Managed Instance で
`BACKUP` コマンドを使用した場合の最大バックアップ ストライプ サイズは、最大 BLOB サイズである 195 GB です。 バックアップ コマンドでストライプ サイズを増やして、個々のストライプ サイズを減らし、この制限内に収まるようにします。ヒント
次の操作を実行すると、オンプレミス環境の SQL Server または仮想マシンからデータベースをバックアップするときに、この制限を回避できます。
`URL` にバックアップする代わりに`DISK` にバックアップします。- バックアップ ファイルを BLOB ストレージにアップロードします。
- SQL Managed Instance に復元します。
SQL Managed Instance で
`Restore` コマンドを実行すると、アップロードされたバックアップ ファイルに対して異なる BLOB タイプが使用されるため、より大きな BLOB サイズがサポートされます。
T-SQL を使用したバックアップについては、
セキュリティ
監査
Microsoft Azure SQL と SQL Server での監査の主な違いは次のとおりです。
- SQL Managed Instance では、監査はサーバー レベルで機能します。
`.xel` ログ ファイルは、Azure BLOB ストレージに格納されます。 - Azure SQL Database では、監査はデータベース レベルで機能します。
`.xel` ログ ファイルは、Azure BLOB ストレージに格納されます。 - オンプレミスまたは仮想マシンの SQL Server では、監査はサーバー レベルで機能します。 イベントは、ファイル システムまたは Windows イベント ログに格納されます。
SQL Managed Instance の XEvent 監査では、Azure Blob Storage のターゲットがサポートされます。 ファイル ログと Windows ログはサポートされていません。
Azure Blob Storage を監査するための CREATE AUDIT
構文の主な相違点は次のとおりです。
.xel
ファイルが配置されている Azure BLOB ストレージ コンテナーの URL を指定する新しいTO URL
構文が用意されています。- SQL Managed Instance は Windows ファイル共有にアクセスできないため、
`TO FILE` 構文はサポートされていません。
詳細については、次を参照してください。
証明書
SQL Managed Instance はファイル共有と Windows フォルダーにはアクセスできないので、次の制約が適用されます。
`CREATE FROM` / `BACKUP TO` ファイルは、証明書ではサポートされていません。`FILE` / `ASSEMBLY` からの`CREATE` / `BACKUP` 証明書はサポートされていません。 秘密キー ファイルは使用できません。
CREATE CERTIFICATE
FROM BINARY = asn_encoded_certificate
WITH PRIVATE KEY (<private_key_options>);
資格情報
マネージド ID、Azure Key Vault、SHARED ACCESS SIGNATURE
の ID がサポートされています。 Windows ユーザーはサポートされていません。
暗号化プロバイダー
SQL Managed Instance はファイルにアクセスできないため、暗号化プロバイダーは作成できません。
CREATE CRYPTOGRAPHIC PROVIDER
はサポートされていません。[ CREATE CRYPTOGRAPHIC PROVIDER](/sql/t-sql/statements/create-cryptographic-provider-transact-sql) に関する記事をご覧ください。ALTER CRYPTOGRAPHIC PROVIDER
はサポートされていません。[ ALTER CRYPTOGRAPHIC PROVIDER](/sql/t-sql/statements/alter-cryptographic-provider-transact-sql) に関する記事をご覧ください。
ログインとユーザー
`FROM CERTIFICATE` 、`FROM ASYMMETRIC KEY` 、`FROM SID` を使用して作成された SQL ログインはサポートされています。[ CREATE LOGIN](/sql/t-sql/statements/create-login-transact-sql) に関する記事をご覧ください。 サーバー プリンシパル (ログイン) はサーバー レベルで作成され、ユーザー (データベース プリンシパル) はデータベース レベルで作成されます。 CREATE LOGIN 構文で作成された Microsoft Entra ログインと、CREATE USER FROM LOGIN 構文で作成された Microsoft Entra ユーザーがサポートされます。 ユーザーを作成してFROM LOGIN
を指定すると、そのユーザーはログインに関連付けられ、割り当てられたサーバー ロールとアクセス許可を継承します。SQL Managed Instance では、
CREATE USER [AADUser/AAD group] FROM EXTERNAL PROVIDER
構文 による Microsoft Entra ID に基づいた包含データベース ユーザーの作成がサポートされています。 この方法で作成されたユーザーは、master
データベースに同じ名前のサーバー プリンシパルが存在する場合でも、サーバー プリンシパルには関連付けられません。`CREATE LOGIN ... FROM WINDOWS` 構文を使用して作成された Windows ログインはサポートされていません。 Microsoft Entra ログインとユーザーを使用します。インスタンスの Microsoft Entra 管理者は、無制限の管理特権を持ちます。
一部の機能では、インスタンス間の対話で Microsoft Entra ログインの使用はサポートされていませんが、SQL Server レプリケーションなど、単一の SQL Managed Instance 内でのみサポートされます。 ただし、リンク サーバー機能では、Microsoft Entra サーバー プリンシパル (ログイン) を使用したクロスインスタンス認証がサポートされています。
Microsoft Entra ログインを、データベース所有者の Microsoft Entra グループにマップすることはサポートされていません。 Microsoft Entra グループのメンバーは、データベースにログインが作成されていない場合でも、データベース所有者になることができます。
EXECUTE AS 句など、他の Microsoft Entra プリンシパルを使用することによる Microsoft Entra サーバー レベル プリンシパルの権限の借用はサポートされています。 EXECUTE AS の制限事項は次のとおりです。
名前がログイン名と異なる場合、EXECUTE AS USER は Microsoft Entra ユーザーに対してサポートされません。 たとえば、
CREATE USER [myAadUser] FROM LOGIN [john@contoso.com]
構文を使用してユーザーが作成されて、EXEC AS USER = myAadUser
を使用して権限借用が試行された場合などです。 Microsoft Entra ログインから USER を作成するときに、LOGIN の login_name と同じように user_name を指定します。Microsoft Entra プリンシパルを対象とした次の操作を実行できるのは、
sysadmin
ロールに属している SQL Server レベル プリンシパル (ログイン) のみです。- EXECUTE AS USER
- EXECUTE AS LOGIN
EXECUTE AS ステートメントを使用してユーザーを偽装するには、そのユーザーが Microsoft Entra ログインに直接マップされる必要があります。 Microsoft Entra サーバー プリンシパルにマップされた Microsoft Entra グループのメンバーであるユーザーは、指定されたユーザー名に対する偽装権限を呼び出し元が持っている場合でも、EXECUTE AS ステートメントを使用して有効に偽装できません。
bacpac ファイルを使用したデータベースのエクスポートおよびインポートは、SSMS V 18.4 以降または SqlPackage のいずれかを使用している SQL Managed Instance 内の Microsoft Entra ユーザーに対してサポートされています。
- データベース bacpac ファイルを使用すると、次の構成がサポートされます。
- 同じ Microsoft Entra ドメイン内の異なるマネージド インスタンス間でのデータベースのエクスポート/インポート。
- SQL Managed Instance からデータベースをエクスポートし、同じ Microsoft Entra ドメイン内の SQL Database にインポートする。
- SQL Database からデータベースをエクスポートし、同じ Microsoft Entra ドメイン内の SQL Managed Instance にインポートする。
- SQL Managed Instance からデータベースをエクスポートし、SQL Server (バージョン 2012 以降) にインポートする。
- この構成では、すべての Microsoft Entra ユーザーが、ログインなしの SQL Server データベース プリンシパル (ユーザー) として作成されます。 ユーザーの種類は
SQL
であり、sys.database_principals
ではSQL_USER
として表示されます。 これらのアクセス許可とロールは SQL Server データベースのメタデータに残り、権限の借用に使用できます。 ただし、これらの資格情報を使用して SQL Server にアクセスしてサインインすることはできません。
- この構成では、すべての Microsoft Entra ユーザーが、ログインなしの SQL Server データベース プリンシパル (ユーザー) として作成されます。 ユーザーの種類は
- データベース bacpac ファイルを使用すると、次の構成がサポートされます。
SQL Managed Instance のプロビジョニング プロセスによって作成されるサーバーレベル プリンシパル ログイン、
securityadmin
やsysadmin
などのサーバー ロールのメンバー、あるいはサーバー レベルの ALTER ANY LOGIN アクセス許可を持つその他のログインのみが、SQL Managed Instance のmaster
データベースに Microsoft Entra サーバー プリンシパル (ログイン) を作成できます。Microsoft Entra ID のログインを作成するには、SQL 認証ベースのログインに
sysadmin
ロールを割り当てる必要があります。Azure SQL Managed Instance がホストされている Microsoft Entra テナントと、ログインが同じメンバーである必要があります。
Microsoft Entra サーバー プリンシパル (ログイン) は、SQL Server Management Studio 18.0 プレビュー 5 から、オブジェクト エクスプローラーに表示されます。
sysadmin アクセス レベルのサーバー プリンシパルは、インスタンスで有効にされた後、Microsoft Entra 管理者に対して自動的に作成されます。
認証時、認証するプリンシパルを解決するために次の順序が適用されます。
- Microsoft Entra ログインに Microsoft Entra アカウントが直接マップされている場合は、
sys.server_principals
に "E" 型として存在し、アクセス権が付与されて、そのログインのアクセス許可が適用されます。 - Microsoft Entra アカウントが Microsoft Entra ログインにマップされているグループのメンバーであり、
sys.server_principals
に "X" 型として存在する場合は、アクセス権が付与されて、そのログインのアクセス許可が適用されます。 - Microsoft Entra アカウントが、データベース内の Microsoft Entra ユーザーに直接マップされたものとして存在する (
sys.database_principals
に "E" 型と指定されている) 場合、アクセス権が付与され、Microsoft Entra データベース ユーザーのアクセス許可が適用されます。 - Microsoft Entra アカウントが、データベース内の Microsoft Entra ユーザーにマップされている Microsoft Entra グループのメンバーである場合は、
sys.database_principals
内に "X" 型として存在し、アクセス権が付与され、Microsoft Entra グループ ユーザーのアクセス許可が適用されます。
- Microsoft Entra ログインに Microsoft Entra アカウントが直接マップされている場合は、
サービス キーとサービス マスター キー
[ マスター キーのバックアップ](/sql/t-sql/statements/backup-master-key-transact-sql) はサポートされていません (SQL Database サービスによって管理されます)。[ マスター キーの復元](/sql/t-sql/statements/restore-master-key-transact-sql) はサポートされていません (SQL Database サービスによって管理されます)。[ サービス マスター キーのバックアップ](/sql/t-sql/statements/backup-service-master-key-transact-sql) はサポートされていません (SQL Database サービスによって管理されます)。[ サービス マスター キーの復元](/sql/t-sql/statements/restore-service-master-key-transact-sql) はサポートされていません (SQL Database サービスによって管理されます)。
構成
バッファー プール拡張
[ バッファー プール拡張機能](/sql/database-engine/configure-windows/buffer-pool-extension) はサポートされていません。ALTER SERVER CONFIGURATION SET BUFFER POOL EXTENSION
はサポートされていません。[ ALTER SERVER CONFIGURATION](/sql/t-sql/statements/alter-server-configuration-transact-sql) に関する記事をご覧ください。
照合順序
既定のインスタンスの照合順序は
互換性レベル
- サポートされている互換性レベルは、100、110、120、130、140、150、160 です。
- 100 より低い互換性レベルはサポートされていません。
- 新しいデータベースの既定の互換性レベルは 150 です。 互換性レベルが 100 以上のデータベースが復元された場合、互換性レベルは変更されません。
データベース ミラーリング
データベース ミラーリングはサポートされていません。
`ALTER DATABASE SET PARTNER` オプションと`SET WITNESS` オプションはサポートされていません。CREATE ENDPOINT … FOR DATABASE_MIRRORING
はサポートされていません。
詳細については、
データベース オプション
- 複数のログ ファイルはサポートされていません。
- インメモリ オブジェクトは、General Purpose サービス レベルではサポートされていません。
- General Purpose インスタンスあたり 280 ファイル (データベースあたり最大 280 ファイル) の制限があります。 General Purpose レベルのデータ ファイルとログ ファイルの両方がこの制限にカウントされます。
[ Business Critical レベルでは、データベースあたり 32,767 ファイルがサポートされます](./resource-limits.md#service-tier-characteristics) 。 - FILESTREAM データを含むファイル グループをデータベースに含めることはできません。
.bak
にFILESTREAM
データが含まれていると、復元は失敗します。 - すべてのファイルが Azure Blob Storage に配置されます。 ファイルあたりの IO およびスループットは、個々のファイルのサイズによって異なります。
CREATE DATABASE ステートメント
次の制限事項が
ファイルおよびファイル グループは定義できません。
メモリ最適化ファイル グループとファイルは自動的に追加され、XTP と呼ばれます。
`CONTAINMENT` オプションはサポートされていません。`WITH` オプションはサポートされていません。ヒント
対処法として、
`CREATE DATABASE` の後に`ALTER DATABASE` を使用して、ファイルの追加またはコンテインメントの設定を行うデータベース オプションを設定します。`FOR ATTACH` オプションはサポートされていません。`AS SNAPSHOT OF` オプションはサポートされていません。
詳細については、
ALTER DATABASE ステートメント
ファイルの一部のプロパティは設定または変更できません。
`ALTER DATABASE ADD FILE (FILENAME='path')` T-SQL ステートメントでは、ファイル パスは指定できません。 ファイルは SQL Managed Instance によって自動的に配置されるため、スクリプトから`FILENAME` を削除します。`ALTER DATABASE` ステートメントを使用してファイル名を変更することはできません。- XTP ファイルまたはファイル グループの変更は許可されていません。
次のオプションは既定で設定されており、変更することはできません。
MULTI_USER
ENABLE_BROKER
AUTO_CLOSE OFF
次のオプションは変更できません。
AUTO_CLOSE
AUTOMATIC_TUNING(CREATE_INDEX=ON|OFF)
AUTOMATIC_TUNING(DROP_INDEX=ON|OFF)
DISABLE_BROKER
EMERGENCY
ENABLE_BROKER
FILESTREAM
HADR
NEW_BROKER
OFFLINE
PAGE_VERIFY
PARTNER
READ_ONLY
RECOVERY BULK_LOGGED
RECOVERY_SIMPLE
REMOTE_DATA_ARCHIVE
RESTRICTED_USER
SINGLE_USER
WITNESS
一部の
詳細については、
SQL Server エージェント
- SQL Managed Instance では現在、SQL Server エージェントの有効化/無効化はサポートされていません。 SQL エージェントは常に実行されています。
- アイドル状態の CPU に基づくジョブ スケジュール トリガーはサポートされていません。
- SQL Server エージェントの設定は読み取り専用です。
`sp_set_agent_properties` プロシージャは、SQL Managed Instance ではサポートされていません。 - ジョブ
- T-SQL ジョブ ステップがサポートされています。
- 次のレプリケーション ジョブがサポートされています。
- トランザクション ログ リーダー
- スナップショット
- ディストリビューター
- SSIS ジョブ ステップがサポートされています。
- その他の種類のジョブ ステップは現在サポートされていません。
- マージ レプリケーション ジョブ ステップはサポートされていません。
- キュー リーダーはサポートされていません。
- コマンド シェルはまだサポートされていません。
- SQL Managed Instance は、外部リソース (例: robocopy を介したネットワーク共有) にはアクセスできません。
- SQL Server Analysis Services はサポートされていません。
- 通知は部分的にサポートされています。
- 電子メール通知がサポートされていますが、データベース メール プロファイルを構成する必要があります。 SQL Server エージェントで使用できるデータベース メール プロファイルは 1 つだけであり、
`AzureManagedInstance_dbmail_profile` という名前である必要があります。- Pager はサポートされていません。
- NetSend はサポートされていません。
- アラートはまだサポートされていません。
- プロキシはサポートされていません。
- EventLog はサポートされていません。
- SQL Agent ジョブを作成、変更、実行するために、ユーザーは Microsoft Entra サーバーログイン に直接マップされる必要があります。 直接マップされていないユーザー (たとえば、SQL Agent ジョブを作成、変更、または実行する権利を持つ Microsoft Entra グループに属しているユーザー) は、これらの操作を実質的に実行できません。 これは、SQL Managed Instance の借用と EXECUTE AS の制限事項のためです。
- マスター/ターゲット (MSX/TSX) ジョブのマルチサーバー管理機能はサポートされていません。
SQL Server エージェントについては、「
テーブル
次のテーブルの種類はサポートされていません。
- FILESTREAM
[ FILETABLE](/sql/relational-databases/blob/filetables-sql-server) - EXTERNAL TABLE (PolyBase を除く)
[ MEMORY_OPTIMIZED](/sql/relational-databases/in-memory-oltp/introduction-to-memory-optimized-tables) (General Purpose レベルでのみサポートされません)
テーブルの作成および変更方法については、
機能
一括挿入/OPENROWSET
SQL Managed Instance はファイル共有や Windows フォルダーにアクセスできないため、ファイルは Azure BLOB ストレージからインポートする必要があります。
- が、Azure BLOB ストレージからファイルをインポートしている間、
`BULK INSERT` コマンドで`DATASOURCE` が必要です。[ BULK INSERT](/sql/t-sql/statements/bulk-insert-transact-sql) に関する記事をご覧ください。 - Azure BLOB ストレージからのファイルの内容を読み取る場合、
`OPENROWSET` 関数で`DATASOURCE` が必要です。[ OPENROWSET](/sql/t-sql/functions/openrowset-transact-sql) に関する記事をご覧ください。 `OPENROWSET` を使用すると、Azure SQL Database、Azure SQL Managed Instance、または SQL Server インスタンスからデータを読み取ることができます。 Oracle データベースや Excel ファイルなどのその他のソースはサポートされていません。
CLR
SQL Managed Instance はファイル共有と Windows フォルダーにはアクセスできないので、次の制約が適用されます。
- サポートされるのは
CREATE ASSEMBLY FROM BINARY
のみです。[ CREATE ASSEMBLY FROM BINARY](/sql/t-sql/statements/create-assembly-transact-sql) に関する記事をご覧ください。 CREATE ASSEMBLY FROM FILE
はサポートされていません。[ CREATE ASSEMBLY FROM FILE](/sql/t-sql/statements/create-assembly-transact-sql) に関する記事をご覧ください。`ALTER ASSEMBLY` ではファイルを参照できません。[ ALTER ASSEMBLY](/sql/t-sql/statements/alter-assembly-transact-sql) に関する記事をご覧ください。
データベース メール (db_mail)
sp_send_dbmail
では、@file_attachments パラメーターを使用して添付ファイルを送信できません。 この手順では、ローカル ファイル システムと外部共有または Azure Blob Storage にはアクセスできません。`@query` パラメーターと認証に関連する既知の問題をご覧ください。
DBCC
SQL Server で有効になっている、ドキュメントに記載されていない DBCC ステートメントは、SQL Managed Instance ではサポートされていません。
- サポートされるグローバル トレース フラグの数は限られています。 セッションレベルの
`Trace flags` はサポートされません。[ トレース フラグ](/sql/t-sql/database-console-commands/dbcc-traceon-trace-flags-transact-sql) に関する記事をご覧ください。 [ DBCC TRACEOFF](/sql/t-sql/database-console-commands/dbcc-traceoff-transact-sql) と[ DBCC TRACEON](/sql/t-sql/database-console-commands/dbcc-traceon-transact-sql) で使用できるトレースフラグの数が限られています。- DBCC CHECKDB とオプション REPAIR_ALLOW_DATA_LOSS、REPAIR_FAST、REPAIR_REBUILD の組み合わせは使用できません。これは、データベースを
SINGLE_USER
モードで設定することはできないためです。ALTER DATABASE の相違点を参照してください。 データベースが破損した場合は Azure サポート チームが対応します。 データベースが破損している徴候がある場合は、Azure サポートにお問い合わせください。
分散トランザクション
マネージド インスタンス間の T-SQL および .NET ベースの分散トランザクションが一般公開されています。 XA トランザクションや、マネージド インスタンスと他の参加者との間の分散トランザクションなど、その他のシナリオは、パブリック プレビューで利用可能な Azure SQL Managed Instance 用 DTC でサポートされています。
拡張イベント
拡張イベント (XEvents) の一部の Windows 固有のターゲットはサポートされていません。
etw_classic_sync
ターゲットはサポートされていません。 Azure BLOB ストレージに.xel
ファイルを保存します。 「[ etw_classic_sync ターゲット](/sql/relational-databases/extended-events/targets-for-extended-events-in-sql-server#etw_classic_sync_target-target) 」をご覧ください。`event_file` ターゲットはサポートされていません。 Azure BLOB ストレージに`.xel` ファイルを保存します。 「[ event_file ターゲット](/sql/relational-databases/extended-events/targets-for-extended-events-in-sql-server#event_file-target) 」をご覧ください。
外部ライブラリ
In-Database R および Python 外部ライブラリは、限られたパブリック プレビューでサポートされています。 「
FILESTREAM と FileTable
- FILESTREAM データはサポートされていません。
`FILESTREAM` データを含むファイル グループをデータベースに含めることはできません。FILETABLE
はサポートされていません。- テーブルに
`FILESTREAM` 型を含めることはできません。 - 次の関数はサポートされていません。
GetPathLocator()
GET_FILESTREAM_TRANSACTION_CONTEXT()
PathName()
GetFileNamespacePat)
FileTableRootPath()
詳細については、
フルテキスト セマンティック検索
リンク サーバー
SQL Managed Instance のリンク サーバーがサポートするターゲットの数は限られています。
- サポートされているターゲットは、SQL Managed Instance、SQL Database、Azure Synapse SQL の
[ サーバーレス](https://devblogs.microsoft.com/azure-sql/linked-server-to-synapse-sql-to-implement-polybase-like-scenarios-in-managed-instance/) と専用プール、および SQL Server インスタンスです。 - サポートされていないターゲットは、ファイル、Analysis Services、他の RDBMS です。 ファイル インポートの代わりに
`BULK INSERT` または`OPENROWSET` を使用して Azure Blob Storage からネイティブ CSV インポートを使用するか、[ Azure Synapse Analytics 内のサーバーレス SQL プール](https://devblogs.microsoft.com/azure-sql/linked-server-to-synapse-sql-to-implement-polybase-like-scenarios-in-managed-instance/) を使用してファイルの読み込みを試行します。
操作:
- リンク サーバーの削除で
`sp_dropserver` がサポートされています。[ sp_dropserver](/sql/relational-databases/system-stored-procedures/sp-dropserver-transact-sql) に関する記事をご覧ください。 - SQL Server インスタンスでのみ、
`OPENROWSET` 関数を使用してクエリを実行できます。 これらは、マネージド、オンプレミス、仮想マシンのいずれかで配置できます。[ OPENROWSET](/sql/t-sql/functions/openrowset-transact-sql) に関する記事をご覧ください。 - SQL Server インスタンスでのみ、OPENDATASOURCE 関数を使用してクエリを実行できます。 これらは、マネージド、オンプレミス、仮想マシンのいずれかで配置できます。 たとえば
SELECT * FROM OPENDATASOURCE('SQLNCLI', '...').AdventureWorks2022.HumanResources.Employee
です。 プロバイダーとしてサポートされる値は、SQLNCLI
、SQLNCLI11
、SQLOLEDB
、MSOLEDBSQL
だけです。 SQL Server Native Client (SNAC と略されることがよくあります) は、SQL Server 2022 と SQL Server Management Studio 19 (SSMS) から削除されました。 SQL Server Native Client (SQLNCLI または SQLNCLI11) とレガシ Microsoft OLE DB Provider for SQL Server (SQLOLEDB) は、新しい開発には推奨されません。 今後、新しい Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server または最新の Microsoft ODBC Driver for SQL Server に切り替えてください。 - リンク サーバーを使用してネットワーク共有からファイル (Excel、CSV) を読み取ることはできません。
[ BULK INSERT](/sql/t-sql/statements/bulk-insert-transact-sql#e-importing-data-from-a-csv-file) 、[ OPENROWSET](/sql/t-sql/functions/openrowset-transact-sql#g-accessing-data-from-a-csv-file-with-a-format-file) (Azure Blob Storage から CSV ファイルを読み取る)、または[ Synapse Analytics 内のサーバーレス SQL プールを参照するリンク サーバー](https://devblogs.microsoft.com/azure-sql/linked-server-to-synapse-sql-to-implement-polybase-like-scenarios-in-managed-instance/) の使用を試行します。 この要求は、SQL Managed Instance フィードバック項目で追跡してください
Azure SQL Managed Instance のリンク サーバーでは、SQL 認証と Microsoft Entra 認証の両方がサポートされています。
PolyBase
Azure SQL Managed Instance によるデータ仮想化では、Azure Data Lake Storage Gen2 または Azure Blob Storage に保存されているファイルのデータに対して Transact-SQL (T-SQL) クエリを実行し、結合を使用してローカルに保存されたリレーショナル データと結合することができます。 Parquet 形式と区切りテキスト (CSV) ファイル形式が直接サポートされています。 JSON ファイル形式は、クエリがすべてのドキュメントを個別の行として返す CSV ファイル形式を指定することで間接的にサポートされます。 JSON_VALUE
とOPENJSON
を使って、さらに行を解析することが可能です。 PolyBase の一般情報については、
さらに、CREATE EXTERNAL TABLE AS SELECT (CETAS) を使用すると、SQL マネージド インスタンスから外部のストレージ アカウントにデータをエクスポートできます。 CETAS を使用すると、Parquet または CSV ファイルの Azure Blob Storage または Azure Data Lake Storage (ADLS) Gen2 に外部テーブルを作成できます。 また、CETAS を使用すると、作成された外部テーブルに T-SQL SELECT ステートメントの結果を並列でエクスポートすることもできます。
レプリケーション
- スナップショットおよび双方向のレプリケーションの種類がサポートされています。 マージ レプリケーション、ピア ツー ピア レプリケーション、および更新可能サブスクリプションはサポートされていません。
- トランザクション レプリケーションは SQL Managed Instance で使用できますが、制約がいくつかあります。
- すべての種類のレプリケーション参加者 (パブリッシャー、ディストリビューター、プル サブスクライバー、プッシュ サブスクライバー) を SQL Managed Instance に配置できますが、パブリッシャーとディストリビューターは両者ともクラウドに配置するか、または両者ともオンプレミスに配置する必要があります。
- SQL Managed Instance は、最新バージョンの SQL Server と通信できます。 詳細については、サポートされているバージョンのマトリックスを参照してください。
- トランザクション レプリケーションには、いくつかの
[ 追加のネットワーク要件](replication-transactional-overview.md#requirements) があります。
トランザクション レプリケーションの構成の詳細については、次に関するチュートリアルを参照してください。
[ SQL MI パブリッシャーと SQL MI サブスクライバー間のレプリケーション](replication-between-two-instances-configure-tutorial.md) [ SQL MI パブリッシャー、SQL MI ディストリビューター、および SQL Server サブスクライバー間のレプリケーション](replication-two-instances-and-sql-server-configure-tutorial.md)
RESTORE ステートメント
- サポートされている構文:
RESTORE DATABASE
RESTORE FILELISTONLY
RESTORE HEADERONLY
RESTORE LABELONLY
RESTORE VERIFYONLY
- サポートされていない構文:
RESTORE LOGONLY
RESTORE REWINDONLY
- ソース:
`FROM URL` (Azure BLOB ストレージ) が、サポートされている唯一のオプションです。`FROM DISK` / `TAPE` /バックアップ デバイスはサポートされていません。- バックアップ セットはサポートされていません。
`WITH` オプションはサポートされていません。DIFFERENTIAL
、STATS
、REPLACE
などのWITH
を含む復元の試行は失敗します。
データベースの復元操作は非同期であり、Azure SQL Managed Instance で再試行できます。 接続が失敗した場合、またはタイムアウトが発生した場合、SSMS にエラーが表示されます。 Azure SQL Managed Instance によって、バックグラウンドでデータベースの復元の試行が続けられます。復元プロセスの進行状況は、sys.dm_exec_requests および sys.dm_operation_status 動的管理ビューを使用して追跡できます。
次のデータベース オプションを設定またはオーバーライドします。これらを後で変更することはできません。
`NEW_BROKER` (.bak ファイルでブローカーが有効になっていない場合)。`ENABLE_BROKER` (.bak ファイルでブローカーが有効になっていない場合)。`AUTO_CLOSE=OFF` (.bak ファイル内のデータベースに`AUTO_CLOSE=ON` が設定されている場合)。RECOVERY FULL
(.bak ファイル内のデータベースがSIMPLE
またはBULK_LOGGED
回復モードの場合)。- メモリ最適化ファイル グループが追加され、(ソースの .bak ファイルに含まれていなかった場合) XTP という名前が付けられます。
- 既存のメモリ最適化ファイル グループの名前が XTP に変更されます。
`SINGLE_USER` および`RESTRICTED_USER` のオプションは、`MULTI_USER` に変換されます。
制限事項:
- 破損したデータベースのバックアップは、破損の種類によっては復元される可能性がありますが、破損が修正されるまで自動バックアップは実行されません。 この問題を回避するには、必ずソース SQL Managed Instance 上で
`DBCC CHECKDB` を実行し、バックアップ`WITH CHECKSUM` を使用します。 - このドキュメントで説明されている制限 (たとえば
.BAK
またはFILESTREAM
オブジェクト) を含むデータベースのFILETABLE
ファイルの復元は、SQL Managed Instance では復元できません。 `.BAK` ファイルに複数のバックアップ セットが含まれている場合、復元できません。`.BAK` ファイルに複数のログ ファイルが含まれている場合、復元できません。- 8 TB を超えるデータベース、アクティブなインメモリ OLTP オブジェクト、または 280 個を超えるファイル数を含むバックアップは、General Purpose インスタンスでは復元できません。
- 4 TB を超えるデータベース、またはリソースの制限で説明されているサイズよりも合計サイズが大きいインメモリ OLTP オブジェクトを含むバックアップは、Business Critical インスタンスでは復元できません。
RESTORE ステートメントについては、
[ RESTORE ステートメント](/sql/t-sql/statements/restore-statements-transact-sql) に関する記事をご覧ください。
重要
同じ制限が、組み込みのポイントインタイム リストア操作に適用されます。 たとえば、4 TB を超える General Purpose データベースは、Business Critical インスタンスで復元することはできません。 インメモリ OLTP ファイルまたは 280 個を超えるファイルを含む Business Critical データベースは、General Purpose インスタンスで復元することはできません。
Service Broker
クロス インスタンス Service Broker メッセージ交換は、Azure SQL Managed Instance 間でのみサポートされます。
`CREATE ROUTE` :`CREATE ROUTE` を`LOCAL` 以外の`ADDRESS` または別の Azure SQL Managed Instance の DNS 名で使用することはできません。 ポートは常に 4022 です。`ALTER ROUTE` :`ALTER ROUTE` を`LOCAL` 以外の`ADDRESS` または別の Azure SQL Managed Instance の DNS 名で使用することはできません。 ポートは常に 4022 です。
トランスポート セキュリティはサポートされていますが、ダイアログ セキュリティはサポートされていません。
CREATE REMOTE SERVICE BINDING
はサポートされていません。
Service Broker は既定で有効になっており、無効にできません。 次の ALTER DATABASE オプションはサポートされていません。
ENABLE_BROKER
DISABLE_BROKER
ストアド プロシージャ、関数、トリガー
`NATIVE_COMPILATION` は、General Purpose レベルではサポートされていません。- 次の sp_configure オプションはサポートされていません。
allow polybase export
allow updates
filestream_access_level
remote access
remote data archive
remote proc trans
scan for startup procs
- 次の sp_configure オプションは無視され、影響はありません。
Ole Automation Procedures
sp_execute_external_scripts
は、SQL MI の Machine Learning Services でのみサポートされます。それ以外の場合、sp_execute_external_scripts
は SQL Managed Instance ではサポートされません。[ sp_execute_external_scripts](/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql#examples) に関するセクションをご覧ください。xp_cmdshell
はサポートされていません。[ xp_cmdshell](/sql/relational-databases/system-stored-procedures/xp-cmdshell-transact-sql) に関する記事をご覧ください。`Extended stored procedures` はサポートされておらず、これには`sp_addextendedproc` および`sp_dropextendedproc` が含まれます。 この機能は SQL Server では非推奨になる予定のため、サポートされません。 詳細については、「拡張ストアド プロシージャ」を参照してください。`sp_attach_db` 、`sp_attach_single_file_db` 、`sp_detach_db` はサポートされていません。[ sp_attach_db](/sql/relational-databases/system-stored-procedures/sp-attach-db-transact-sql) 、[ sp_attach_single_file_db](/sql/relational-databases/system-stored-procedures/sp-attach-single-file-db-transact-sql) 、[ sp_detach_db](/sql/relational-databases/system-stored-procedures/sp-detach-db-transact-sql) に関する各記事をご覧ください。
システム関数とシステム変数
次の変数、関数、ビューは異なる結果を返します。
`SERVERPROPERTY('EngineEdition')` は値 8 を返します。 このプロパティは、SQL Managed Instance を一意に識別します。[ SERVERPROPERTY](/sql/t-sql/functions/serverproperty-transact-sql) に関する記事をご覧ください。`SERVERPROPERTY('InstanceName')` は NULL を返します。これは SQL Server に関して存在するインスタンスの概念が、SQL Managed Instance には該当しないためです。[ SERVERPROPERTY('InstanceName')](/sql/t-sql/functions/serverproperty-transact-sql) に関する説明をご覧ください。@@SERVERNAME
は、"接続可能な" 完全 DNS 名を返します (例:my-managed-instance.wcus17662feb9ce98.database.windows.net
)。 「@@SERVERNAME」を参照してください。SYS.SERVERS
は、"name" プロパティと "data_source" プロパティを表すmyinstance.domain.database.windows.net
のような、"接続可能な" 完全 DNS 名を返します。SYS.SERVERS に関するページを参照してください。`@@SERVICENAME` は NULL を返します。これは SQL Server に関して存在するサービスの概念が、SQL Managed Instance には該当しないためです。 「@@SERVICENAME」を参照してください。`SUSER_ID` はサポートされています。sys.syslogins
に Microsoft Entra ログインが存在しない場合は、NULL を返します。[ SUSER_ID](/sql/t-sql/functions/suser-id-transact-sql) に関する記事をご覧ください。SUSER_SID
はサポートされていません。 正しくないデータが返されます。これは既知の一時的な問題です。[ SUSER_SID](/sql/t-sql/functions/suser-sid-transact-sql) に関する記事をご覧ください。
環境の制約
サブネット
- SQL Managed Instance をデプロイしたサブネットに他のリソース (たとえば仮想マシン) を配置することはできません。 別のサブネットを使用してこれらのリソースをデプロイしてください。
- サブネットには、十分な数の利用可能な IP アドレスが含まれている必要があります。 最小で、サブネットに少なくとも 32 個の IP アドレスを設定します。
- リージョンでデプロイできるインスタンスの仮想コア数と種類には、いくつかの
[ 制約と制限](resource-limits.md#regional-resource-limitations) があります。 - サブネットに適用する必要がある
[ ネットワーク構成](connectivity-architecture-overview.md#network-requirements) があります。
仮想ネットワーク
- Virtual Network は、リソース モデルを使用してデプロイできます。 クラシック モデルは、Virtual Network のデプロイをサポートしていません。
- SQL managed instance を作成した後は、SQL managed instance または VNet を別のリソース グループまたはサブスクリプションへ移動することはサポートされていません。
- 2020 年 9 月 22 日より前に作成された仮想クラスターでホストされている SQL managed instance の場合は、VNet グローバル ピアリングはサポートされていません。 ExpressRoute、または VNet ゲートウェイ経由の VNet 対 VNet を介してこのようなリソースに接続できます。
フェールオーバー グループ
システム データベースは、フェールオーバー グループのセカンダリ インスタンスにはレプリケートされません。 そのため、オブジェクトがセカンダリに手動で作成されていない限り、セカンダリ インスタンスではシステム データベースのオブジェクトに依存するシナリオは実現できません。
tempdb
tempdb
システム データベースの最大ファイル サイズは、General Purpose レベルではコアあたり 24 GB より大きくすることはできません。 Business Critical レベルでは、`tempdb` の最大サイズは SQL Managed Instance ストレージ サイズによって制限されます。`Tempdb` ログ ファイルのサイズは、General Purpose レベルでは 120 GB に制限されています。`tempdb` のサイズがコアあたり 24 GB を超える場合、または 120 GB を超えるログ データが生成される場合は、一部のクエリでエラーが返されます。tempdb
は常に 12 個のデータ ファイルに分割されます (1 個のプライマリ (master
とも呼ばれる) データ ファイルと 11 個のプライマリ以外のデータ ファイル)。 ファイル構造を変更することも、tempdb
に新しいファイルを追加することもできません。- メモリ最適化 TempDB メタデータ (新しい SQL Server 2019 のメモリ内データベース機能) は、サポートされていません。
model
ではtempdb
データベースから初期オブジェクト リストが取得されないため、再起動後またはフェールオーバー後に、tempdb
データベースで作成されたオブジェクトをmodel
で自動作成できません。 再起動後またはフェールオーバー後に、`tempdb` でオブジェクトを手動で作成する必要があります。
msdb
SQL Managed Instance の msdb
システム データベースの次のスキーマは、それぞれの定義済みロールによって所有されている必要があります。
- 一般的なロール
- TargetServersRole
- 固定データベース ロール
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
- DatabaseMail ロール:
- DatabaseMailUserRole
- 統合サービスのロール:
- msdb
- db_ssisltduser
- db_ssisoperator
重要
定義済みのロール名、スキーマ名、スキーマ所有者を顧客が変更すると、サービスの通常の動作に影響します。 通常のサービス動作を保証するために、これらに加えられた変更は検出されるとすぐに、または次の最新のサービス更新時に、事前に定義済みの値に戻されます。
エラー ログ
SQL Managed Instance では、エラー ログに詳細情報が書き込まれます。 エラー ログに記録される内部システム イベントが数多く存在します。 カスタムの手順を使用して、関連のない項目をフィルターで除外するエラー ログを読み取ります。 詳細については、Azure Data Studio の
保持されるエラー ログの数の変更はサポートされていません。