SQL Server: Attach incorrect version 661 エラーで悩んでいるあなたへ!解決策を画像付きで丁寧に解説

2024-06-28

SQL Server: Attach incorrect version 661 エラーは、異なるバージョンの SQL Server データベースファイルをアタッチしようとすると発生します。このエラーは、データベースの互換性レベルとアタッチしようとしているファイルのバージョンレベルが一致していないことを示しています。

原因

このエラーの主な原因は次のとおりです。

  • 異なるバージョンの SQL Server データベースファイル: アタッチしようとしているファイルが、現在使用している SQL Server バージョンよりも古い、または新しいバージョンのものです。
  • データベースの互換性レベルの不一致: データベースの互換性レベルが、アタッチしようとしているファイルのバージョンレベルと一致していません。

解決策

このエラーを解決するには、以下の手順を実行します。

アタッチしようとしているファイルのバージョンを確認する:

  • ファイルのプロパティを確認して、ファイルのバージョンを確認します。
  • SQL Server Management Studio (SSMS) を使用して、ファイルのバージョンを確認することもできます。

アタッチしようとしているファイルのバージョンと一致する SQL Server バージョンを使用する:

  • アタッチしようとしているファイルが古いバージョンの場合は、そのバージョンに対応する SQL Server を使用してアタッチする必要があります。

データベースの互換性レベルを変更する:

  • アタッチしようとしているファイルと一致する互換性レベルにデータベースの互換性レベルを変更できます。
  1. SSMS でデータベースに接続します。
  2. データベースのプロパティ ダイアログボックスを開きます。
  3. オプション ページを選択します。
  4. 互換性レベル ドロップダウンリストから、アタッチしようとしているファイルと一致する互換性レベルを選択します。
  5. OK をクリックして変更を保存します。

データベースをデタッチして再アタッチする:

  • データベースをデタッチしてから、正しいバージョンの SQL Server を使用して再アタッチすることで、エラーを解決できる場合があります。
  1. タスク ペインで、データベース を展開します。
  2. データベースをデタッチ を選択します。
  3. デタッチするデータベースを選択します。
  4. OK をクリックしてデータベースをデタッチします。
  5. 追加 をクリックして、アタッチするすべてのファイルを追加します。

SQL Server Agent サービスを再起動する:

  • 一部の場合は、SQL Server Agent サービスを再起動することでエラーを解決できる場合があります。
  1. サービス コンソールを開きます。
  2. 右クリック し、再起動 を選択します。

注意事項

  • データベースをアタッチする前に、必ずバックアップを作成してください。
  • データベースの互換性レベルを変更すると、データベースの動作に影響を与える可能性があります。変更を行う前に、必ず影響を評価してください。



サンプルコード:SQL Server: Attach incorrect version 661 エラーの解決策

USE [master];

ALTER DATABASE [MyDatabase]
   SET COMPATIBILITY_LEVEL = 130;

このコードは、MyDatabase という名前のデータベースの互換性レベルを 130 に設定します。この値は、SQL Server 2016 の互換性レベルに対応します。

注: このコードを実行する前に、必ずデータベースのバックアップを作成してください。

以下のサンプルコードは、デタッチして再アタッチする方法を示しています。

USE [master];

EXEC sp_detach_db 'MyDatabase';

ATTACH DATABASE 'MyDatabase'
   FROM DATABASE_FILE = 'C:\Path\To\MyDatabase.mdf',
         RESTORE DATABASE_FILE = 'C:\Path\To\MyDatabase.ndf';

このコードは、MyDatabase という名前のデータベースをデタッチしてから、C:\Path\To\MyDatabase.mdfC:\Path\To\MyDatabase.ndf というファイルから再アタッチします。

注: このコードを実行する前に、必ず SQL Server Agent サービスを停止してください。

上記以外にも、さまざまな方法でこのエラーを解決できます。詳細については、SQL Server のドキュメントを参照してください。




SQL Server: Attach incorrect version 661 エラーの解決策:その他の方

本項では、SQL Server: Attach incorrect version 661 エラーの解決策として、既にご紹介した方法に加えて、以下の3つの方法について詳しく説明します。

  1. SQL Server データベースのアップグレードまたはダウングレード
  2. データベースのコピー
  3. サードパーティ製ツールを使用する

概要

この方法は、アタッチしようとしているデータベースファイルのバージョンと、SQL Server インスタンスのバージョンを一致させることで、エラーを解決します。具体的には、以下の2つの方法があります。

  • アップグレード: アタッチしようとしているデータベースファイルが古いバージョンの場合は、SQL Server インスタンスを新しいバージョンにアップグレードします。

利点

  • 比較的シンプルな方法です。
  • データベースファイルを変更する必要がありません。

欠点

  • SQL Server インスタンスのアップグレードまたはダウングレードには、ダウンタイムが発生する可能性があります。
  • すべてのデータベースが新しいバージョンと互換性があるとは限りません。

アップグレードまたはダウングレードの手順

SQL Server インスタンスのアップグレードまたはダウングレードの手順については、Microsoft のドキュメントを参照してください。

この方法は、互換性のあるバージョンの SQL Server でデータベースのコピーを作成してから、そのコピーをアタッチすることで、エラーを解決します。具体的には、以下の手順を実行します。

  1. 互換性のあるバージョンの SQL Server をインストールします。
  2. アタッチしようとしているデータベースファイルからデータベースのコピーを作成します。
  3. 作成したデータベースのコピーを、互換性のあるバージョンの SQL Server インスタンスにアタッチします。
  • ダウンタイムを最小限に抑えることができます。
  • 時間がかかる場合があります。
  • 追加のストレージスペースが必要となります。

データベースのコピーの手順については、Microsoft のドキュメントを参照してください。

この方法は、サードパーティ製ツールを使用して、アタッチしようとしているデータベースファイルを互換性のあるバージョンに変換してから、そのファイルをアタッチすることで、エラーを解決します。

  • データベースファイルをアップグレードまたはダウングレードする必要がありません。
  • すべてのツールがすべてのバージョンの SQL Server をサポートしているわけではありません。
  • Idera SQL Server Deployer
  • Red Gate SQL Clone
  • Quest Qntfy

サードパーティ製ツールを使用する前に、必ずそのツールのライセンス要件と機能を確認してください。

SQL Server: Attach incorrect version 661 エラーには、さまざまな解決策があります。最適な方法は、個々の状況によって異なります。


sql-server


SQL Server 2017 以前で文字列をトリムする方法

LTRIM関数は、文字列の先頭から指定した文字を削除します。各関数の詳細削除文字は省略可能です。省略した場合、デフォルトでは空白文字(スペース、タブ、改行など)が削除されます。使用例以下の例では、LTRIM関数、RTRIM関数、TRIM関数をそれぞれ使用して、文字列の先頭と末尾から空白文字を削除しています。...


T-SQLコマンドを使用してSQL Serverクエリキャッシュをクリアする

SQL Serverは、パフォーマンスを向上させるために、過去に実行されたクエリのプランをキャッシュします。しかし、キャッシュが蓄積されると、パフォーマンスの問題が発生することがあります。そのような場合、キャッシュをクリアすることで問題を解決できる可能性があります。...


あの面倒な権限付与もラクラク!SQL Server 2000でシステムビューを活用したストアドプロシージャアクセス許可設定

このチュートリアルでは、SQL Server 2000 データベース内のすべてのストアド プロシージャに対してユーザーに実行権限を付与する方法について説明します。要件SQL Server 2000 がインストールおよび構成されていることデータベースへのアクセス権を持つユーザー アカウント...


varbinary(max) データ型 vs FILESTREAM データ型

SQL Server は、画像を含むさまざまな種類のデータを格納できるデータベース管理システム (DBMS) です。画像を格納するには、主に 2 つの方法があります。方法 1: varbinary(max) データ型画像データをバイナリ形式で格納します。...


SQL Serverへの接続方法:Entity Framework Core、Dapper、LINQ to SQLなど

SQL ServerへのADO. NET接続が時々成功し、時々失敗する場合、様々な原因が考えられます。問題を特定し、解決するには、以下の点を確認する必要があります。接続文字列接続文字列に誤りがないか確認してください。サーバー名、データベース名、ユーザー名、パスワードなどが正しく設定されていることを確認します。...