データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

MicrosoftSQLServerデータベースの互換性レベル

データベースレベル設定の1つであるデータベース互換性レベルは、データベースの機能に影響を与えます。 Microsoft®SQLServer®の新しいバージョンごとに多くの新機能が導入されていますが、そのほとんどは新しいキーワードを必要とし、以前のバージョンに存在していた特定の動作を変更します。最大限の下位互換性を提供するために、Microsoftでは必要に応じて互換性レベルを設定できます。

データベース互換性レベルのデフォルト

デフォルトでは、すべてのデータベースは、それが作成されたモデルデータベースバージョンの互換性レベルを継承します。たとえば、SQL Server 2012データベースの互換性レベルは、変更しない限り、デフォルトで110になります。

復元後の互換性レベル

古いバージョンのSQLで作成されたデータベースバックアップを復元する場合、ソースの互換性レベルがサポートされている最小レベルよりも低い場合を除き、データベースの互換性レベルはバックアップを作成したインスタンスと同じままです。その場合、データベースの互換性レベルはサポートされている最低バージョンに変更されます。たとえば、SQLServer2005データベースのバックアップをSQLServer 2017に復元する場合、復元されたデータベースの互換性レベルは100に設定されます。これは、サポートされているSQL2017の最小レベルであるためです。

アップグレード後の互換性レベル

tempdb、model、msdb、およびresourceデータベースの互換性レベルは、アップグレード後に現在の互換性レベルに設定されます。マスターシステムデータベースは、アップグレード前の互換性レベルを保持します。

互換性レベルを決定する

現在の互換性レベルを確認するには、 compatibility_levelにクエリを実行します sys.databasesの列 。

別の互換性レベルに変更するには、ALTER DATABASEを使用します 次の例に示すコマンド:

Use Master
Go
ALTER DATABASE <database name>SET COMPATIBILITY_LEVEL = <compatibility-level>;

必要に応じて、ウィザードを使用して互換性レベルを変更できます。ただし、ユーザーがデータベースにオンラインでアクセスする場合は、最初にデータベースをシングルユーザーモードに変更する必要があります。次に、ウィザードを使用してレベルを変更した後、データベースをマルチユーザーモードにする必要があります。

ウィザードとの互換性レベルを変更するには、データベース–>プロパティ–>オプション–>データベース互換性レベルを右クリックします。 次の画像に示すように:

MicrosoftSQLServerデータベースの互換性レベル (/article/uploadfiles/202207/2022070812110977.png)

デフォルトおよびサポートされている互換性レベル

次の表に、SQL Serverのバージョンと、デフォルトの互換性、およびサポートされている互換性レベルのリストを示します。

MicrosoftSQLServerデータベースの互換性レベル (/article/uploadfiles/202207/2022070812110959.png)

ソース :https://www.sqlskills.com/blogs/glenn/database-compatibility-level-in-sql-server/

データベースの互換性レベルとパフォーマンス

SQL2014より前のバージョンのSQLServerでは、データベース管理者はパフォーマンスの観点からデータベースの互換性レベルについて心配することはありませんでした。データベースの互換性レベルは、主に、そのバージョンで導入された新機能を使用できるかどうか、またはサポートされていない機能を無効にするかどうかを制御するメカニズムとして使用されていました。また、下位互換性を制御するためにも使用されました。

ここで、あるバージョンから別のバージョンに移行するときは、パフォーマンスの変化を理解するために完全回帰テストを実行する必要があります。場合によっては、移行後も古い互換性レベルでクエリのパフォーマンスが向上することがあります。ただし、それ以外の場合は逆になる可能性があるため、完全な回帰テストを必ず実行してください。

SQL Server 2014以降、互換性レベル120以上で実行されているデータベースは、新しいカーディナリティ推定値を利用できます。 関数。カーディナリティ推定は、推定コストに基づいてSQLServerがクエリを実行する方法を決定するために行われるロジックです。見積もりは、そのクエリに関係するオブジェクトに関連付けられた統計からの入力を使用して計算されます。実際には、カーディナリティの見積もりは、クエリで参照されるテーブルとオブジェクトに含まれる値の分布、個別の値のカウント、重複するカウントに関する情報と組み合わされた行数の見積もりです。これらの見積もりを間違えると、不要なディスクIが発生する可能性があります。 / Oメモリの付与が不十分なため(TempDBの流出など)、または並列プランの実行よりもシリアルプランの実行を選択したため、いくつかの可能性があります。カーディナリティの見積もりについては、次のブログ投稿で詳しく説明する予定です。

互換性レベルの変更による影響

互換性レベルを変更すると、データベースに機能セットを変更するように指示されます。つまり、一部の機能が追加され、同時に一部の古い機能が削除されます。たとえば、FOR BROWSE INSERTでは句は使用できません およびSELECT INTO 互換性レベル100のステートメント。互換性レベル90では許可されますが、無視されます。アプリケーションでこの機能を使用する場合、この変更により予期しない結果が生じる可能性があります。

データベースを低い互換性レベルから高い互換性レベルに移動する場合、互換性が変更されていないと、新しい機能を使用できないことが予想される場合があります。しかし、それは完全には正しくありません。これは、データベースレベルの機能にのみ当てはまります。互換性レベルを変更しなくても、インスタンスレベルの機能を使用できます。

結論

データベース互換性レベルは、SQL Serverが特定の機能を使用する方法を定義します。具体的には、SQL Serverの特定のバージョンのように動作させます。これは通常、ある程度の下位互換性を提供するために行われます。これはデータベースプロパティであるため、互換性はその特定のデータベースのデータベースレベルの機能にのみ影響します。

データベースをより高いバージョンのサーバーに移動するか、インスタンスアップグレードを実行してデータベースをアップグレードする場合、互換性レベルがサポートされている限り、互換性レベルは同じままです。

互換性レベルがSQL2014以上に設定されている場合、SQLServerは新しいカーディナリティ推定機能を使用します。互換性レベルが2012以下に設定されている場合は、古いオプティマイザーが使用されます。

[フィードバック]タブを使用して、コメントを書き込んだり、質問したりします。

専門家による管理、管理、構成で環境を最適化する

Rackspaceのアプリケーションサービス(RAS) 専門家は、幅広いアプリケーションポートフォリオにわたって次の専門的かつ管理されたサービスを提供します。

  • eコマースおよびデジタルエクスペリエンスプラットフォーム
  • エンタープライズリソースプランニング(ERP)
  • ビジネスインテリジェンス
  • Salesforceの顧客関係管理(CRM)
  • データベース
  • メールホスティングと生産性

お届けします:

  • 偏りのない専門知識 :私たちは、即時の価値を提供する機能に焦点を当てて、お客様の近代化の旅を簡素化し、導きます。
  • 狂信的な経験 ™:最初にプロセスを組み合わせます。テクノロジーセカンド。包括的なソリューションを提供するための専用のテクニカルサポートを備えたアプローチ。
  • 比類のないポートフォリオ :豊富なクラウドエクスペリエンスを適用して、適切なテクノロジーを適切なクラウドに選択して導入できるようにします。
  • アジャイルデリバリー :私たちはあなたがあなたの旅の途中であなたに会い、あなたの成功と一致します。

今すぐチャットして始めましょう。


  1. MicrosoftSQLServerの高度な破損と回復

    このブログでは、Microsoft®SQLServer®のデータベースレベルで発生する可能性のある破損、それらを検出する方法、および高度な復元と修復の手法を使用してそれらを修正する方法について説明しています。 はじめに 現在、SQL Serverは、その高度な内部構造と優れた信頼性により、最も一般的で広く使用されているリレーショナルデータベース管理システムの1つです。多くの組織は、重要なビジネスデータを維持および保存するためにSQLServerデータベースを選択しています。 企業は、データベース管理者(DBA)がデータベースのパフォーマンス、保守、およびセキュリティを継続的に改善することを

  2. MS Access から SQL Server データベースにデータを移行する

    最近、データベースが大きくなりすぎて Access で処理できなくなったため、Access データベースから SQL Server 2014 にデータを移行する必要がありました。プロセスはかなり単純ですが、段階的な手順を記載した記事を書こうと思いました. まず、コンピューターに SQL Server または SQL Server Express がインストールされていることを確認する必要があります。 PC に SQL Server Express をダウンロードする場合は、必ず Advanced Services を含むバージョンをダウンロードしてください。 .そうしないと、データベース エ