SQL Server から Azure SQL Managed Instance への移行に関する評価ルール

適用対象:Azure SQL Managed Instance

移行ツールは、多数の評価ルールを実行して、ソース SQL Server インスタンスを検証します。 このルールは、SQL Server データベースを Azure SQL Managed Instance に移行する前に対処しなければならない問題を特定します。

この記事では、SQL Server データベースを Azure SQL Managed Instance に移行する実現可能性を評価するために使用されるルールの一覧を示します。

ルールの概要

ルールのタイトル Level カテゴリ 詳細
AnalysisCommandJob インスタンス 警告 AnalysisCommand ジョブ ステップは Azure SQL Managed Instance ではサポートされていません。
AnalysisQueryJob インスタンス 警告 AnalysisQuery ジョブ ステップは Azure SQL Managed Instance ではサポートされていません。
AssemblyFromFile データベース 問題 Azure SQL Managed Instance では、ファイル パラメーターが指定されている 'CREATE ASSEMBLY' および 'ALTER ASSEMBLY' はサポート対象外です。
BulkInsert データベース 問題 Azure BLOB 以外のデータ ソースの BULK INSERT は、Azure SQL Managed Instance ではサポートされていません。
ClrStrictSecurity データベース 警告 SAFE または EXTERNAL_ACCESS とマークされた CLR アセンブリは UNSAFE と見なされます。
ComputeClause データベース 警告 COMPUTE 句はサポートされなくなったので、削除されました。
CryptographicProvider データベース 問題 CREATE CRYPTOGRAPHIC PROVIDER または ALTER CRYPTOGRAPHIC PROVIDER の使用が検出されました。 これは Azure SQL Managed Instance ではサポートされていません。
DatabasePrincipalAlias データベース 問題 SYS.DATABASE_PRINCIPAL_ALIASES は廃止され、削除されました。
DbCompatLevelLowerThan100 データベース 警告 100 未満のデータベース互換レベルはサポートされていません。
DisableDefCNSTCHK データベース 問題 SET オプション DISABLE_DEF_CNST_CHK は廃止され、削除されました。
FastFirstRowHint データベース 警告 FASTFIRSTROW クエリ ヒントはサポートされなくなったので、削除されました。
FileStream データベース 問題 FILESTREAM と Filetable は Azure SQL Managed Instance ではサポートされていません。
LinkedServerWithNonSQLProvider データベース 問題 SQL Server プロバイダー以外のリンク サーバーは Azure SQL Managed Instance ではサポートされていません。
MergeJob インスタンス 警告 マージ ジョブ ステップは Azure SQL Managed Instance ではサポートされていません。
MIDatabaseSize データベース 問題 Azure SQL Managed Instance では、16 TB を超えるデータベース サイズはサポートされていません。
MIHeterogeneousMSDTCTransactSQL データベース 問題 SQL Server 以外のリモート サーバーを使用する BEGIN DISTRIBUTED TRANSACTION は、Azure SQL Managed Instance ではサポートされていません。
MIHomogeneousMSDTCTransactSQL データベース 問題 BEGIN DISTRIBUTED TRANSACTION は、Azure SQL Managed Instance の複数のサーバーにわたってサポートされています。
MIInstanceSize インスタンス 警告 Azure SQL Managed Instance でのインスタンス ストレージの最大サイズを 8 TB より大きくすることはできません。
MultipleLogFiles データベース 問題 Azure SQL Managed Instance では複数のログ ファイルを持つデータベースはサポートされていません。
NextColumn データベース 問題 Azure SQL Managed Instance では、NEXT という名前のテーブルや列があると、エラーが発生します。
NonANSILeftOuterJoinSyntax データベース 警告 ANSI 以外のスタイルの左外部結合はサポートされなくなったので、削除されました。
NonANSIRightOuterJoinSyntax データベース 警告 ANSI 以外のスタイルの右外部結合はサポートが終わり、削除されました。
NumDbExceeds100 インスタンス 警告 Azure SQL Managed Instance では、インスタンスあたり最大 100 個のデータベースがサポートされます。
OpenRowsetWithNonBlobDataSourceBulk データベース 問題 Azure SQL Managed Instance では、Azure BLOB ストレージ以外のデータ ソースでの一括操作で使用される OpenRowSet はサポートされていません。
OpenRowsetWithNonSQLProvider データベース 問題 Azure SQL Managed Instance では、SQL 以外のプロバイダーでの OpenRowSet はサポートされていません。
PowerShellJob インスタンス 警告 PowerShell ジョブ ステップは Azure SQL Managed Instance ではサポートされていません。
QueueReaderJob インスタンス 警告 キュー リーダー ジョブ ステップは Azure SQL Managed Instance ではサポートされていません。
RAISERROR データベース 警告 レガシ スタイルの RAISERROR 呼び出しは、相当する最新のものに置き換える必要があります。
SqlMail データベース 警告 SQL Mail はサポートが終わりました。
SystemProcedures110 データベース 警告 Azure SQL Managed Instance では使用できない削除されたシステム ストアド プロシージャを参照するステートメントが検出されました。
TraceFlags インスタンス 警告 Azure SQL Managed Instance でサポートされていないトレース フラグが検出されました。
TransactSqlJob インスタンス 警告 TSQL ジョブ ステップに、Azure SQL Managed Instance でサポートされていないコマンドが含まれています。
WindowsAuthentication インスタンス 警告 Windows 認証 (統合セキュリティ) にマップされたデータベース ユーザーは、Azure SQL Managed Instance ではサポートされていません。
XpCmdshell データベース 問題 xp_cmdshell は Azure SQL Managed Instance ではサポートされていません。

AnalysisCommand ジョブ

タイトル: AnalysisCommand ジョブ ステップは Azure SQL Managed Instance ではサポートされていません。
カテゴリ: 警告

説明
これは、Analysis Services コマンドを実行するジョブ ステップです。 AnalysisCommand ジョブ ステップは Azure SQL Managed Instance ではサポートされていません。

推奨事項
Azure Migrate の [影響を受けるオブジェクト] セクションを確認し、Analysis Service コマンド ジョブ ステップを使用してすべてのジョブを表示し、ジョブ ステップまたは影響を受けるオブジェクトを削除できるかどうかを評価します。 または、Azure 仮想マシン上の SQL Server に移行します。

詳細情報: Azure SQL Managed Instance での SQL Server エージェントの相違点

AnalysisQuery ジョブ

タイトル: AnalysisQuery ジョブ ステップは Azure SQL Managed Instance ではサポートされていません。
カテゴリ: 警告

説明
これは、Analysis Services クエリを実行するジョブ ステップです。 AnalysisQuery ジョブ ステップは Azure SQL Managed Instance ではサポートされていません。

推奨事項
Azure Migrate の [影響を受けるオブジェクト] セクションを確認し、Analysis Service クエリ ジョブ ステップを使用してすべてのジョブを表示し、ジョブ ステップまたは影響を受けるオブジェクトを削除できるかどうかを評価します。 または、Azure 仮想マシン上の SQL Server に移行します。

詳細情報: Azure SQL Managed Instance での SQL Server エージェントの相違点

ファイルからのアセンブリ

タイトル: Azure SQL Managed Instance では、ファイル パラメーターが指定されている 'CREATE ASSEMBLY' および 'ALTER ASSEMBLY' はサポート対象外です。
カテゴリ: 問題

説明
Azure SQL Managed Instance は、ファイル パラメーターでは CREATE ASSEMBLYALTER ASSEMBLY をサポートしていません。 バイナリ パラメーターはサポートされています。 ファイル パラメーターが使用されている特定のオブジェクトについては、[影響を受けるオブジェクト] セクションを参照してください。

推奨事項
ファイル パラメーターで CREATE ASSEMBLY もしくは ALTER ASSEMBLY を使用しているオブジェクトを確認すること。 このようなオブジェクトが必要な場合は、ファイル パラメーターをバイナリ パラメーターに変換します。 または、Azure 仮想マシン上の SQL Server に移行します。

詳細情報: Azure SQL Managed Instance での CLR の相違点

BULK INSERT

タイトル: Azure BLOB 以外のデータ ソースの BULK INSERT は、Azure SQL Managed Instance ではサポートされていません。
カテゴリ: 問題

説明
Azure SQL Managed Instance では、ファイル共有または Windows フォルダーにアクセスできません。 Azure blob を参照しない BULK INSERT ステートメントの具体的な使用方法については、[影響を受けるオブジェクト] セクションを参照してください。 ソースが Azure Blob Storage ではない "BULK INSERT" でのオブジェクトは、Azure SQL Managed Instance に移行した後は機能しません。

推奨事項
ローカル ファイルまたはファイル共有を使っている BULK INSERT ステートメントは、Azure SQL Managed Instance に移行するときに、代わりに Azure Blob Storage のファイルを使うように変換する必要があります。

詳細情報: Azure SQL Managed Instance での BULK INSERT と OPENROWSET の相違点

CLR のセキュリティ

タイトル: SAFE または EXTERNAL_ACCESS とマークされた CLR アセンブリは UNSAFE と見なされる
カテゴリ: 警告

説明
Azure SQL Managed Instance には CLR Strict Security モードが適用されます。 このモードは既定で有効になり、SAFE または EXTERNAL_ACCESS のいずれかのマークが付けられたユーザー定義の CLR アセンブリを含むデータベースで破壊的変更が発生します。

推奨
CLR では、セキュリティ境界としてサポートされなくなった、.NET Framework のコード アクセス セキュリティ (CAS) が使用されます。 SQL Server 2017 (14.x) データベース エンジン以降では、CLR アセンブリのセキュリティを強化するために、clr strict security という sp_configure オプションが導入されています。 clr strict security は既定で有効になり、SAFE および EXTERNAL_ACCESS CLR アセンブリは UNSAFE とマークされている場合と同じように扱われます。 clr strict security が無効になっていると、PERMISSION_SET = SAFE で作成された CLR アセンブリで、外部のシステム リソースにアクセスし、アンマネージド コードを呼び出し、sysadmin 特権を取得できる場合があります。 厳密なセキュリティを有効にした場合、未署名のアセンブリの読み込みは失敗します。 また、データベースに SAFE または EXTERNAL_ACCESS アセンブリがある場合、RESTORE または ATTACH DATABASE ステートメントは完了できますが、アセンブリの読み込みに失敗するおそれがあります。 アセンブリを読み込むには、各アセンブリを変更または削除して再作成し、サーバーでの UNSAFE ASSEMBLY アクセス許可のある対応するログインを含む証明書または非対称キーで署名されるようにする必要があります。

詳細情報: CLR の厳密なセキュリティ

COMPUTE 句

タイトル: COMPUTE 句はサポートされなくなったので、削除されました。
カテゴリ: 警告

説明
COMPUTE 句では、結果セットの最後に集計列として追加される総計が生成されます。 しかし、この句は Azure SQL Managed Instance ではサポートされなくなりました。

推奨
代わりに ROLLUP 演算子を使用して、T-SQL モジュールを書き直す必要があります。 以下のコードは、COMPUTE を ROLLUP に置き換える方法を示しています。

USE AdventureWorks2022;GO;

SELECT SalesOrderID,
    UnitPrice,
    UnitPriceDiscount
FROM Sales.SalesOrderDetail
ORDER BY SalesOrderID COMPUTE SUM(UnitPrice),
    SUM(UnitPriceDiscount) BY SalesOrderID GO;

SELECT SalesOrderID,
    UnitPrice,
    UnitPriceDiscount,
    SUM(UnitPrice) AS UnitPrice,
    SUM(UnitPriceDiscount) AS UnitPriceDiscount
FROM Sales.SalesOrderDetail
GROUP BY SalesOrderID,
    UnitPrice,
    UnitPriceDiscount
WITH ROLLUP;

詳細情報: SQL Server で廃止されたデータベース エンジンの機能

CRYPTOGRAPHIC PROVIDER

タイトル: Azure SQL Managed Instance ではサポートされない CREATE CRYPTOGRAPHIC PROVIDER または ALTER CRYPTOGRAPHIC PROVIDER の使用が検出されました。
カテゴリ: 問題

説明
Azure SQL Managed Instance では、ファイルにアクセスできないため、CRYPTOGRAPHIC PROVIDER ステートメントをサポートしていません。 CRYPTOGRAPHIC PROVIDER ステートメントの具体的な使用方法については、[影響を受けるオブジェクト] セクションを参照してください。 'CREATE CRYPTOGRAPHIC PROVIDER' または 'ALTER CRYPTOGRAPHIC PROVIDER' を使用するオブジェクトは、Azure SQL Managed Instance への移行後は正しく機能しません。

推奨事項
'CREATE CRYPTOGRAPHIC PROVIDER' または 'ALTER CRYPTOGRAPHIC PROVIDER' を使用するオブジェクトを確認します。 そのようなオブジェクトが必須の場合、これらの機能の使用を削除してください。 または、Azure 仮想マシン上の SQL Server に移行します。

詳細情報: Azure SQL Managed Instance での暗号化サービス プロバイダーの相違点

データベース互換

タイトル: 100 未満のデータベース互換レベルはサポートされていません
カテゴリ: 警告

説明
データベース互換レベルは、SQL Server データベース エンジンのアップグレードを可能にし、それと同時に、アップグレード前と同じデータベース互換レベルを維持することで接続するアプリケーションの機能的な状態を保つという点で、データベースの最新化支援に有益なツールです。 Azure SQL Managed Instance では、100 未満の互換レベルはサポートされません。 互換レベルが 100 未満のデータベースを Azure SQL Managed Instance で復元すると、その互換レベルは 100 にアップグレードされます。

推奨事項
Azure SQL Managed Instance でデータベース互換レベルを 100 にアップグレードしたとき、アプリケーションの機能が損なわれないか評価します。 または、Azure 仮想マシン上の SQL Server に移行します。

詳細情報: Azure SQL Managed Instance でサポートされている互換レベル

データベース プリンシパルの別名

タイトル: SYS.DATABASE_PRINCIPAL_ALIASES は廃止され、削除されました。
カテゴリ: 問題

説明
SYS.DATABASE_PRINCIPAL_ALIASES は、Azure SQL Managed Instance でのサポートが終わり、削除されました。

推奨
別名の代わりにロールを使用してください。

詳細情報: SQL Server で廃止されたデータベース エンジンの機能

DISABLE_DEF_CNST_CHK オプション

タイトル: SET オプション DISABLE_DEF_CNST_CHK はサポートが終わり、削除されました。
カテゴリ: 問題

説明
SET オプション DISABLE_DEF_CNST_CHK は、Azure SQL Managed Instance でのサポートが終わり、削除されました。

詳細情報: SQL Server で廃止されたデータベース エンジンの機能

FASTFIRSTROW ヒント

タイトル: FASTFIRSTROW クエリ ヒントはサポートされなくなったので、削除されました。
カテゴリ: 警告

説明
FASTFIRSTROW クエリ ヒントは、Azure SQL Managed Instance でのサポートが終わり、削除されました。

推奨
FASTFIRSTROW クエリ ヒントの代わりに OPTION (FAST n) を使用します。

詳細情報: SQL Server で廃止されたデータベース エンジンの機能

FILESTREAM

タイトル: Filestream と Filetable は Azure SQL Managed Instance ではサポートされていません。
カテゴリ: 問題

説明
テキスト ドキュメント、画像、動画などの構造化されていないデータを NTFS ファイル システムに格納できる FILESTREAM 機能は、Azure SQL Managed Instance ではサポートされていません。 このデータベースは、FILESTREAM ファイルグループを含むバックアップを Azure SQL Managed Instance で復元できないため、移行できません。

推奨
構造化されていないファイルを Azure Blob Storage にアップロードし、これらのファイルに関するメタデータ (名前、種類、URL の場所、ストレージ キーなど) を Azure SQL Managed Instance に格納します。 Azure SQL Managed Instance 間で BLOB をストリーミングできるように、アプリケーションを再設計する必要がある場合があります。 または、Azure 仮想マシン上の SQL Server に移行します。

詳細情報: SQL Azure 間での BLOB のストリーミングに関するブログ

異種 MS DTC

タイトル: SQL Server 以外のリモート サーバーを使用する BEGIN DISTRIBUTED TRANSACTION は、Azure SQL Managed Instance ではサポートされていません。
カテゴリ: 問題

説明
リモート サーバーが SQL Server ではない場合、Transact SQL BEGIN DISTRIBUTED TRANSACTION によって開始され、Microsoft 分散トランザクション コーディネーター (MS DTC) で管理される分散トランザクションは、Azure SQL Managed Instance ではサポートされません。

推奨事項
Azure Migrate の [影響を受けるオブジェクト] セクションを確認し、BEGIN DISTRUBUTED TRANSACTION を使用するすべてのオブジェクトを確認すること。 複数のインスタンス間での分散トランザクションがサポートされている Azure SQL Managed Instance に参加しているデータベースを移行することを検討してください。 詳細については、「Azure SQL Managed Instance の複数のサーバーにまたがるトランザクション」を参照してください。

または、Azure 仮想マシン上の SQL Server に移行します。

同種 MS DTC

タイトル: BEGIN DISTRIBUTED TRANSACTION は、Azure SQL Managed Instance の複数のサーバーにわたってサポートされています。
カテゴリ: 問題

説明
Transact SQL BEGIN DISTRIBUTED TRANSACTION によって開始され、Microsoft 分散トランザクション コーディネーター (MS DTC) で管理される分散トランザクションは、Azure SQL Managed Instance の複数のサーバーにわたってサポートされています。

推奨事項
Azure Migrate の [影響を受けるオブジェクト] セクションを確認し、BEGIN DISTRUBUTED TRANSACTION を使用するすべてのオブジェクトを確認すること。 複数のインスタンス間での分散トランザクションがサポートされている Azure SQL Managed Instance に参加しているデータベースを移行することを検討してください。 詳細については、「Azure SQL Managed Instance の複数のサーバーにまたがるトランザクション」を参照してください。

または、Azure 仮想マシン上の SQL Server に移行します。

リンク サーバー (SQL 以外のプロバイダー)

タイトル: SQL 以外のサーバー プロバイダーのリンク サーバーは Azure SQL Managed Instance ではサポートされていません。
カテゴリ: 問題

説明
リンク サーバーを使用すると、SQL Server のインスタンス外の OLE DB データ ソースに対して、SQL Server データベース エンジンでコマンドを実行できます。 SQL Server プロバイダー以外のリンク サーバーは Azure SQL Managed Instance ではサポートされていません。

推奨事項
リモート サーバー プロバイダーが Oracle、Sybase などの SQL 以外のサーバーである場合、Azure SQL Managed Instance でリンク サーバー機能はサポートされません。

リンク サーバーが必要なくなるようにするには、次のアクションが推奨されます。

  • リモートの SQL 以外のサーバーから依存データベースを特定し、これらを移行するデータベースに移動することを検討します。
  • SQL Managed Instance、SQL Database、Azure Synapse SQL、SQL Server インスタンスなど、サポートされているターゲットに依存データベースを移行します。
  • Azure SQL Managed Instance と Azure 仮想マシン上の SQL Server (SQL VM) の間にリンク サーバーを作成することを検討します。 その後、SQL VM から、Oracle や Sybase へのリンク サーバーを作成します。この方法には 2 つのホップが含まれますが、一時的な回避策として使用できます。
  • または、Azure 仮想マシン上の SQL Server に移行します。

詳細情報: Azure SQL Managed Instance でのリンク サーバーの相違点

マージ ジョブ

タイトル: マージ ジョブ ステップは Azure SQL Managed Instance ではサポートされていません。
カテゴリ: 警告

説明
これは、レプリケーション マージ エージェントをアクティブにするジョブ ステップです。 レプリケーション マージ エージェントは、データベース テーブルに保持された初期スナップショットをサブスクライバーに適用するユーティリティ実行可能ファイルです。 さらに、初期スナップショットの作成後にパブリッシャーで発生したデータの増分変更をマージし、ユーザーが構成したルールに従って、またはユーザーが作成したカスタムリゾルバーを使用して、競合を調整します。 マージ ジョブ ステップは Azure SQL Managed Instance ではサポートされていません。

推奨事項
Azure Migrate の [影響を受けるオブジェクト] セクションを確認して、マージ ジョブ ステップを使用してすべてのジョブを表示し、ジョブ ステップまたは影響を受けるオブジェクトを削除できるかどうかを評価します。 または、Azure 仮想マシン上の SQL Server に移行します。

詳細情報: Azure SQL Managed Instance での SQL Server エージェントの相違点

MI データベースのサイズ

タイトル: Azure SQL Managed Instance では、16 TB を超えるデータベース サイズはサポートされていません。
カテゴリ: 問題

説明
データベースのサイズがインスタンスの予約済み最大ストレージよりも大きくなっています。 このデータベースは、サイズが許可されている制限を超えているため、移行用に選択できません。

推奨
データをアーカイブまたは圧縮できるか、あるいは複数のデータベースにシャード化できるかを評価します。 または、Azure 仮想マシン上の SQL Server に移行します。

詳細情報: Azure SQL Managed Instance のハードウェアの特性

MI のインスタンス サイズ

タイトル: Azure SQL Managed Instance でのインスタンス ストレージの最大サイズを 8 TB より大きくすることはできません。
カテゴリ: 警告

説明
すべてのデータベースのサイズが、インスタンスの予約済み最大ストレージよりも大きくなっています。

推奨
データベースを別の Azure SQL Managed Instance に移行するか、すべてのデータベースが同じインスタンス上に存在する必要がある場合は Azure 仮想マシン上の SQL Server に移行することを検討してください。

詳細情報: Azure SQL Managed Instance のハードウェアの特性

複数のログ ファイル

タイトル: Azure SQL Managed Instance では複数のログ ファイルはサポートされていません。
カテゴリ: 問題

説明
SQL Server を使用すると、データベースで複数のファイルにログを記録できます。 このデータベースには、Azure SQL Managed Instance でサポートされていない複数のログ ファイルがあります。 **このデータベースは、Azure SQL Managed Instance でバックアップを復元できないため、移行できません。
**

推奨
Azure SQL Managed Instance では、データベースごとに 1 つのログのみがサポートされます。 このデータベースを Azure に移行する前に、ログ ファイルの 1 つを除くすべてのログ ファイルを削除する必要があります。

ALTER DATABASE [database_name] REMOVE FILE [log_file_name]

詳細情報: Azure SQL Managed Instance でサポートされていないデータベース オプション

Next 列

タイトル: Azure SQL Managed Instance では、NEXT という名前のテーブルと列があると、エラーが発生します。
カテゴリ: 問題

説明
NEXT という名前のテーブルまたは列が検出されました。 Microsoft SQL Server で導入されたシーケンスでは、ANSI 標準の NEXT VALUE FOR 関数が使用されます。 NEXT という名前のテーブルまたは列、および ANSI 標準 AS を省略して VALUE として別名が付けられた列では、エラーが発生する可能性があります。

推奨
ステートメントを書き直し、テーブルまたは列の別名を指定するときに ANSI 標準の AS キーワードを使用してください。 たとえば、列の名前が NEXT で、その列に VALUE という別名が付けられている場合、クエリ SELECT NEXT VALUE FROM TABLE を使用するとエラーが発生するため、SELECT NEXT AS VALUE FROM TABLE に書き直す必要があります。 同様に、テーブルの名前が NEXT で、VALUE という別名が付けられている場合、クエリ SELECT Col1 FROM NEXT VALUE を使用するとエラーが発生するため、SELECT Col1 FROM NEXT AS VALUE に書き直す必要があります。

ANSI 以外のスタイルでの左外部結合

タイトル: ANSI 以外のスタイルの左外部結合はサポートが終わり、削除されました。
カテゴリ: 警告

説明
Azure SQL Managed Instance では、ANSI 以外のスタイルでの左外部結合はサポートが終わり、削除されました。

推奨
ANSI 結合構文を使用してください。

詳細情報: SQL Server で廃止されたデータベース エンジンの機能

ANSI 以外のスタイルでの右外部結合

タイトル: ANSI 以外のスタイルの右外部結合はサポートが終わり、削除されました。
カテゴリ: 警告

説明
Azure SQL Managed Instance では、ANSI 以外のスタイルでの右外部結合はサポートが終わり、削除されました。

詳細情報: SQL Server で廃止されたデータベース エンジンの機能

推奨
ANSI 結合構文を使用してください。

データベースの数が 100 を超えている

タイトル: Azure SQL Managed Instance では、インスタンスあたり最大 100 個のデータベースがサポートされます。
カテゴリ: 警告

説明
インスタンス ストレージ サイズの制限に達していない限り、Azure SQL Managed Instance でサポートされるデータベースの最大数は 100 です。

推奨
データベースを別の Azure SQL Managed Instance に移行するか、すべてのデータベースが同じインスタンス上に存在する必要がある場合は Azure 仮想マシン上の SQL Server に移行することを検討してください。

詳細情報: Azure SQL Managed Instance のリソース制限

OPENROWSET (BLOB 以外のデータ ソース)

タイトル: Azure SQL Managed Instance では、Azure Blob Storage 以外のデータ ソースでの一括操作で使用される OpenRowSet はサポートされていません。
カテゴリ: 問題

説明
OPENROWSET では組み込みの BULK プロバイダーによる一括操作がサポートされ、ファイルのデータを行セットとして読み取り、返すことができます。 Azure Blob Storage 以外のデータ ソースでの OPENROWSET は、Azure SQL Managed Instance ではサポートされていません。

推奨事項
Azure SQL Managed Instance はファイル共有や Windows フォルダーにアクセスできないため、Azure Blob Storage からファイルをインポートする必要があります。 そのため、OPENROWSET 関数でサポートされる BLOB の型は DATASOURCE のみとなります。 または、Azure 仮想マシン上の SQL Server に移行します。

詳細情報: Azure SQL Managed Instance での BULK INSERT と OPENROWSET の相違点

OPENROWSET (SQL 以外のプロバイダー)

タイトル: Azure SQL Managed Instance では、SQL 以外のプロバイダーでの OpenRowSet はサポートされていません。
カテゴリ: 問題

説明
このメソッドは、リンク サーバー内のテーブルにアクセスする代わりに、OLE DB を使用してリモート データに接続しアクセスするアドホック メソッドです。 Azure SQL Managed Instance では、SQL 以外のプロバイダーでの OpenRowSet はサポートされていません。

推奨事項
OPENROWSET 関数は、SQL Server インスタンス (マネージド、オンプレミス、または Virtual Machines 内) でのみ、クエリを実行するために使用できます。 プロバイダー SQLNCLISQLNCLI11SQLOLEDBMSOLEDBSQL (推奨) がサポートされています。 新しい開発には、Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server をお勧めします。

推奨されるアクションは、リモートの SQL 以外のサーバーから依存データベースを特定し、これらを移行するインスタンスに移動するのを検討してください。

詳細情報: Azure SQL Managed Instance での BULK INSERT と OPENROWSET の相違点

PowerShell ジョブ

タイトル: PowerShell ジョブ ステップは Azure SQL Managed Instance ではサポートされていません。
カテゴリ: 警告

説明
これは、PowerShell スクリプトを実行するジョブ ステップです。 PowerShell ジョブ ステップは Azure SQL Managed Instance ではサポートされていません。

推奨事項
Azure Migrate の [影響を受けるオブジェクト] セクションを確認し、PowerShell ジョブ ステップを使用してすべてのジョブを表示し、ジョブ ステップまたは影響を受けるオブジェクトを削除できるかどうかを評価します。 Azure Automation を使用できるかどうかを評価します。 または、Azure 仮想マシン上の SQL Server に移行します。

詳細情報: Azure SQL Managed Instance での SQL Server エージェントの相違点

キュー リーダー ジョブ

タイトル: キュー リーダー ジョブ ステップは Azure SQL Managed Instance ではサポートされていません。
カテゴリ: 警告

説明
これは、レプリケーション キュー リーダー エージェントをアクティブにするジョブ ステップです。 レプリケーション キュー リーダー エージェントは、Microsoft SQL Server キューまたは Microsoft メッセージ キューに格納されたメッセージを読み取ってから、これらのメッセージをパブリッシャーに適用する実行可能ファイルです。 キュー リーダー エージェントは、スナップショット、およびキュー更新を許可するトランザクション パブリケーションで使用されます。 キュー リーダー ジョブ ステップは Azure SQL Managed Instance ではサポートされていません。

推奨事項
Azure Migrate の [影響を受けるオブジェクト] セクションを確認し、Queue Reader ジョブ ステップを使用してすべてのジョブを表示し、ジョブ ステップまたは影響を受けるオブジェクトを削除できるかどうかを評価します。 または、Azure 仮想マシン上の SQL Server に移行します。

詳細情報: Azure SQL Managed Instance での SQL Server エージェントの相違点

RAISERROR

タイトル: レガシ スタイルの RAISERROR 呼び出しは、それに相当する最新のものに置き換える必要があります。
カテゴリ: 警告

説明
次の例のような RAISERROR 呼び出しは、コンマとかっこが含まれないため、レガシ スタイルと呼ばれます。 RAISERROR 50001 'this is a test'. Azure SQL Managed Instance では、RAISERROR を呼び出すこのメソッドはサポートが終わり、削除されました。

推奨
現在の RAISERROR 構文を使用してステートメントを書き直すか、最新のアプローチの BEGIN TRY { } END TRY BEGIN CATCH { THROW; } END CATCH を使用できるかどうかを評価してください。

詳細情報: SQL Server で廃止されたデータベース エンジンの機能

SQL Mail

タイトル: SQL Mail はサポートが終わりました。
カテゴリ: 警告

説明
Azure SQL Managed Instance では、SQL Mail はサポートが終わり、削除されました。

推奨
データベース メールを使用してください。

詳細情報: SQL Server で廃止されたデータベース エンジンの機能

SystemProcedures110

タイトル: Azure SQL Managed Instance では使用できない削除されたシステム ストアド プロシージャを参照するステートメントが検出されました。
カテゴリ: 警告

説明
Azure SQL Managed Instance では、sp_dboptionsp_addserversp_dropaliassp_activedirectory_objsp_activedirectory_scp、および sp_activedirectory_start のサポート対象外のシステムおよび拡張ストアド プロシージャは使用できません。

推奨事項
Azure SQL Managed Instance で削除されたサポート対象外のシステム プロシージャへの参照を削除します。

詳細情報: SQL Server で廃止されたデータベース エンジンの機能

Transact-SQL ジョブ

タイトル: TSQL ジョブ ステップには、Azure SQL Managed Instance でサポートされていないコマンドが含まれています
カテゴリ: 警告

説明
これは、スケジュールされた時刻に TSQL スクリプトを実行するジョブ ステップです。 TSQL ジョブ ステップには、Azure SQL Managed Instance でサポートされていないサポート対象外のコマンドが含まれています。

推奨事項
Azure Migrate の [影響を受けるオブジェクト] セクションを確認し、Azure SQL Managed Instance でサポートされていないコマンドを含むすべてのジョブを表示し、ジョブ ステップまたは影響を受けるオブジェクトを削除できるかどうかを評価すること。 または、Azure 仮想マシン上の SQL Server に移行します。

詳細情報: Azure SQL Managed Instance での SQL Server エージェントの相違点

トレース フラグ

タイトル: Azure SQL Managed Instance でサポートされていないトレース フラグが見つかりました
カテゴリ: 警告

説明
Azure SQL Managed Instance では、限られた数のグローバル トレース フラグのみがサポートされます。 セッション トレース フラグはサポートされていません。

推奨事項
Azure Migrate の [影響を受けるオブジェクト] セクションを確認し、Azure SQL Managed Instance でサポートされていないすべてのトレース フラグを表示し、それらを削除できるかどうかを評価します。 または、Azure 仮想マシン上の SQL Server に移行します。

詳細情報: トレース フラグ

Windows 認証

タイトル: Windows 認証 (統合セキュリティ) にマップされたデータベース ユーザーは、Azure SQL Managed Instance ではサポートされていません
カテゴリ: 警告

説明
Azure SQL Managed Instance では次の 2 種類の認証がサポートされます。

  • SQL 認証。ユーザー名とパスワードを使用します。
  • Microsoft Entra 認証では、Microsoft Entra ID (旧 Azure Active Directory) で管理されている ID を使用し、管理、統合されたドメインをサポートしています。

Windows 認証 (統合セキュリティ) にマップされたデータベース ユーザーは、Azure SQL Managed Instance ではサポートされていません。

推奨事項
ローカル Active Directory を Microsoft Entra ID とフェデレーションすること。 その後、Windows ID を同等の Microsoft Entra ID に置き換えることができます。 または、Azure 仮想マシン上の SQL Server に移行します。

詳細情報: SQL Managed Instance のセキュリティ機能

XP_cmdshell

タイトル: xp_cmdshell は Azure SQL Managed Instance ではサポートされていません。
カテゴリ: 問題

説明
Windows コマンド シェルを生成し、実行用の文字列を渡す xp_cmdshell は、Azure SQL Managed Instance ではサポートされていません。

推奨事項
Azure Migrate の [影響を受けるオブジェクト] セクションで ‭xp_cmdshell‬ を使用するすべてのオブジェクトを確認し、‭xp_cmdshell‬ または影響を受けるオブジェクトに対する参照を削除できるか評価すること。 クラウドベースの自動化と構成サービスを提供する Azure Automation の調査を検討してください。 または、Azure 仮想マシン上の SQL Server に移行します。

詳細情報: Azure SQL Managed Instance でのストアド プロシージャの相違点