SQL Server 2012年のインスタンスに接続すると、データベースから以前のバージョンの SQL Server が使用できなくなった

文書翻訳 文書翻訳
文書番号: 2710782
すべて展開する | すべて折りたたむ

目次

現象

次のシナリオを検討してください:
  • Microsoft SQL Server 2005年、2008 の Microsoft SQL Server、または Microsoft SQL Server 2008 R2 のインスタンスをインストールします。
  • SQL Server のインスタンス INST1 という名前し、Test_RO_FG_DB という名前で、データベースをホストします。
  • データベースには、次のファイル グループが含まれます。
    • プライマリ
    • RO_FG
    • RW_FG
  • Read ONLY としては、RO_FG という名前のファイル グループがマークされています。
  • Microsoft SQL Server 2012年の新しいインスタンスをインストールします。INST2 SQL Server 2012年のこのインスタンスの名前です。
  • INST1 からの Test_RO_FG_DB データベースをデタッチします。
  • INST2 に Test_RO_FG_DB データベースをアタッチしようとしました。
  • 次のようなエラー メッセージが表示されます。
    メッセージ 3415、レベル 16、状態 2、行 1
    読み取り専用であるために、データベース 'Test_RO_FG_DB' をアップグレードできない読み取り専用ファイルまたはファイルの一部を変更するのには、アクセス許可を持たないユーザー。データベースまたはファイルを書き込み可能にし、回復を再実行します。
  • INST1 に Test_RO_FG_DB データベースを再アタッチしようとしました。
このシナリオでは、INST1 にデータベースを再アタッチすることはできません。SQL Server のエラー ログに次のエラー メッセージが表示されます。

2012-05-03 22:55:45.37 spid52 データベース 'Test_RO_FG_DB' のバックアップを開始します。
2012-05-03 22:55:45.78 spid52 * *******************************************************************************
2012-05-03 22:55:45.78 spid52 * 開始スタックをダンプします。
2012-05-03 22:55:45.78 spid52 * 05/03/12 22時 55分: 45 spid 52
2012-05-03 22:55:45.78 spid52 * 場所: logscan.cpp:1490
2012-05-03 22:55:45.78 spid52 * 式: FALSE
2012-05-03 22:55:45.78 spid52 * SPID: 52
2012-05-03 22:55:45.78 spid52 * プロセス ID: 9156
2012-05-03 22:55:45.78 spid52 * 説明: 無効なスイッチの値
2012-05-03 22:55:45.78 spid52 * 入力バッファー 98 バイト -
2012-05-03 22:55:45.78 spid52 * Test_RO_FG_DB 設定、オンライン データベースを変更します。
2012-05-03 22:55:51.05 spid52 エラー: 17065、レベル: 16、状態: 1。
2012-05-03 22:55:51.05 spid52 SQL Server アサーション: ファイル: <logscan.cpp>、行 1490年失敗したアサーション = 'FALSE' の無効なスイッチの値を =。このエラーは、タイミングに関連することがあります。ステートメントを再実行した後、エラーを解決できない場合は、DBCC CHECKDB を使用して、データベースの構造の整合性を確認するのにはまたは、インメモリ データ構造が破損していることを確認するのには、サーバーを再起動します。
2012-05-03 22:55:51.10 spid52 エラー: 3624、レベル: 20、状態: 1。
2012-05-03 22:55:51.10 spid52 A システム アサーション チェックが失敗しました。SQL Server のエラー ログの詳細を確認してください。通常、アサーション エラーは、ソフトウェアのバグやデータの破損によって発生します。データベースの破損を確認するには、DBCC CHECKDB の実行を検討してください。セットアップ中にダンプをマイクロソフトに送信することに同意する場合は、ミニ ダンプがマイクロソフトに送信されます。更新から Microsoft の最新の Service Pack または QFE テクニカル サポートから利用可能な場合があります。
2012-05-03 22:56:09.16 spid52 エラー: 3414、レベル: 21、状態: 1。
2012-05-03 22:56:09.16 spid52 エラー 'Test_RO_FG_DB' (データベース ID 19)、データベースを再起動できません、復旧中に発生しました。復元エラーを診断、修正や既知の正常なバックアップからの復元します。エラー修正予想されない場合は、テクニカル サポートに問い合わせてください。
2012-05-03 22:56:09.18 spid52 エラー: 928、レベル: 20、状態: 1。
2012-05-03 22:56:09.18 spid52 のアップグレード、発生データベース例外 926、レベル 14、状態 1、中に 0000000000F6A971 に対応します。原因を特定するのには、例外番号を使用します。</logscan.cpp>


この問題は、read ONLY とマークされているファイル グループが含まれているデータベースをアタッチしようとするとにのみ発生します。Read ONLY データベースのすべてのデータが READ_ONLY とマークを移動しようとすると、この問題は発生しません。

原因

この問題が発生するは、データベースのアップグレードを開始する前に SQL Server 2012年、読み取り専用のファイル グループを検出しないため。アップグレードの開始後は、SQL Server 2012年は、トランザクション ・ ログにエントリを書き込みます。以前のバージョンは、トランザクション ログの新しいエントリを読み取ることができません。

状況

マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

解決方法

累積的な更新プログラムの情報

SQL Server 2012

この問題に対する修正は SQL Server 2012 の累積的な更新の 2 に初めてリリースされました。この累積的な更新プログラム パッケージの詳細については、「サポート技術情報」資料を参照するには、次の資料番号をクリックしてください。
2703275 累積的な更新プログラム パッケージ 2 の SQL Server 2012
ビルドは累積的であるため、各新しい修正プログラム リリースすべての修正プログラムが含まれているし、以前の SQL Server 2012 に含まれていたすべてのセキュリティ修正プログラム リリースを修正します。マイクロソフトはこの修正プログラムを含む最新の修正プログラム リリースを適用を検討することをお勧めします。詳細については、「サポート技術情報」資料を参照するには、次の資料番号をクリックしてください。
2692828 SQL Server の 2012年 2012 の SQL Server のリリース後にリリースされたビルドします。
SQL Server 2012年のインストールには SQL Server 2012年の修正プログラムを適用する必要があります。

回避策

この問題を回避するには、次の方法のいずれかを使用します。

方法 1

INST2 上からは、データベースのバックアップを復元します。

以前のバージョンから、バックアップを復元する場合、「現象」に記載されている問題 SQL Server 2012 では発生しません。

方法 2

SQL Server 2012年に SQL Server の以前のバージョンのインプレース アップグレードを実行します。

方法 3

SQL Server 2012年のインスタンスに対して、読み取り専用のファイル グループを含むデータベースを移動します。これを行うには、次の手順を実行します。

手順 4 〜 11 SQL Server 2012年を実行しているサーバー上で実行します。たとえば、手順 4 〜 11 INST2 で実行します。
  1. INST1 では、データベースをデタッチします。たとえば、Test_RO_FG_DB データベースをデタッチします。
  2. INST2 インスタンスをホストするサーバーに、データベース ファイルを移動します。
  3. INST2 にデータベースをアタッチしようとしてください。次のサンプル コードこれを行う方法を示しています。
    CREATE DATABASE [Test_RO_FG_DB] ON PRIMARY ( NAME = N'Test_RO_FG', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG.mdf' ), 
    FILEGROUP [RO_FG] ( NAME = N'Test_RO_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG_File1.ndf' ), 
    FILEGROUP [RW_FG] ( NAME = N'Test_RW_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RW_FG_File1.ndf' )
    LOG ON ( NAME = N'Test_RO_FG_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG_log.ldf' )
    FOR ATTACH;
    GO
    「現象」に記載されている、3425 エラー メッセージを受け取ります。
  4. コマンド プロンプトで、データベース ファイルの名前を変更します。次のサンプル コマンドはこれを行う方法を示しています。
    rename Test_RO_FG.mdf original_Test_RO_FG.mdf
    rename Test_RO_FG_File1.ndf original_Test_RO_FG_File1.ndf
    rename Test_RW_FG_File1.ndf original_Test_RW_FG_File1.ndf
    rename Test_RO_FG_log.ldf original_Test_RO_FG_log.ldf
  5. SQL Server Management Studio では、アタッチするデータベースとして物理構造体と同じ名前を持つデータベースを作成します。次のサンプル コードこれを行う方法を示しています。
    CREATE DATABASE [Test_RO_FG_DB] ON PRIMARY ( NAME = N'Test_RO_FG_DB', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG_DB.mdf' , SIZE = 4072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), 
    FILEGROUP [RO_FG] ( NAME = N'Test_RO_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG_File1.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), 
    FILEGROUP [RW_FG] ( NAME = N'Test_RW_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RW_FG_File1.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
    LOG ON ( NAME = N'Test_RO_FG_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
    GO
  6. データベースをオフラインに設定します。これを行うには、次のコマンドを実行します。
    ALTER DATABASE [Test_RO_FG_DB] SET OFFLINE
    GO
  7. コマンド プロンプトで、新しいデータベース内のファイルを変更します。次のサンプル コマンドはこれを行う方法を示しています。
    rename Test_RO_FG.mdf new_Test_RO_FG.mdf
    rename Test_RO_FG_File1.ndf new_Test_RO_FG_File1.ndf
    rename Test_RW_FG_File1.ndf new_Test_RW_FG_File1.ndf
    rename Test_RO_FG_log.ldf new_Test_RO_FG_log.ldf
  8. コマンド プロンプトで、手順 2 に移動されたデータベース内のファイルの名前を変更します。手順 4 で作成したデータベースと一致するファイルの名前を変更します。次のサンプル コマンドはこれを行う方法を示しています。
    rename original_Test_RO_FG.mdf Test_RO_FG.mdf 
    rename original_Test_RO_FG_File1.ndf Test_RO_FG_File1.ndf 
    rename original_Test_RW_FG_File1.ndf Test_RW_FG_File1.ndf 
    rename original_Test_RO_FG_log.ldf Test_RO_FG_log.ldf
  9. データベースを ONLINE に設定します。これを行うには、次のコマンドを実行します。
    ALTER DATABASE [Test_RO_FG_DB] SET ONLINE
    GO
  10. データベースがオンラインになっていることを確認し、Service Broker 機能を再設定します。
  11. 必要のないデータベース ファイルを削除します。次のサンプル コマンドはこれを行う方法を示しています。
    del /P new_Test_RO_FG.mdf
    del /P new_Test_RO_FG_File1.ndf
    del /P new_Test_RW_FG_File1.ndf
    del /P new_Test_RO_FG_log.ldf
方法 4

SQL Server の以前のインスタンスが読み取り専用のファイル グループを含むデータベースに接続し直します。これを行うには、次の手順を実行します。

注意
  • データベースには、失敗したアップグレードからの新しいトランザクション ログ エントリも含まれています。
  • 以前のバージョンの SQL Server を実行しているサーバーに 3 〜 10 の手順を実行します。たとえば、上の手順 3 〜 10 を実行します。

  1. INST1 がホストしている、SQL Server のインスタンスに、データベース ファイルを移動します。
  2. INST1 にデータベースをアタッチしようとしてください。次のサンプル コードこれを行う方法を示しています。
    CREATE DATABASE [Test_RO_FG_DB] ON PRIMARY ( NAME = N'Test_RO_FG_DB', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_DB.mdf' ), 
    FILEGROUP [RO_FG] ( NAME = N'Test_RO_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_File1.ndf' ), 
    FILEGROUP [RW_FG] ( NAME = N'Test_RW_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RW_FG_File1.ndf' )
    LOG ON ( NAME = N'Test_RO_FG_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_log.ldf' )
    FOR ATTACH
    GO
    「現象」に記載されている、3624 エラー メッセージを受け取ります。1813 エラー メッセージを受け取ります。
  3. コマンド プロンプトで、INST1 上のデータベース ファイルの名前を変更します。次のサンプル コマンドはこれを行う方法を示しています。
    rename Test_RO_FG.mdf original_Test_RO_FG.mdf
    rename Test_RO_FG_File1.ndf original_Test_RO_FG_File1.ndf
    rename Test_RW_FG_File1.ndf original_Test_RW_FG_File1.ndf
    rename Test_RO_FG_log.ldf original_Test_RO_FG_log.ldf
  4. SQL Server Management Studio では、アタッチするデータベースとして物理構造体と同じ名前を持つデータベースを作成します。次のサンプル コードこれを行う方法を示しています。
    CREATE DATABASE [Test_RO_FG_DB] ON PRIMARY ( NAME = N'Test_RO_FG_DB', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_DB.mdf' , SIZE = 4072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), 
    FILEGROUP [RO_FG] ( NAME = N'Test_RO_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_File1.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), 
    FILEGROUP [RW_FG] ( NAME = N'Test_RW_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RW_FG_File1.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
    LOG ON ( NAME = N'Test_RO_FG_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
    GO
  5. データベースをオフラインに設定します。これを行うには、次のコマンドを実行します。
    ALTER DATABASE [Test_RO_FG_DB] SET OFFLINE
    GO
  6. コマンド プロンプトで、新しいデータベース内のファイルを変更します。次のサンプル コマンドはこれを行う方法を示しています。
    rename Test_RO_FG.mdf new_Test_RO_FG.mdf
    rename Test_RO_FG_File1.ndf new_Test_RO_FG_File1.ndf
    rename Test_RW_FG_File1.ndf new_Test_RW_FG_File1.ndf
    rename Test_RO_FG_log.ldf new_Test_RO_FG_log.ldf
  7. コマンド プロンプトで、手順 2 に移動されたデータベース内のファイルの名前を変更します。手順 4 で作成したデータベースと一致するファイルの名前を変更します。次のサンプル コマンドはこれを行う方法を示しています。
    rename original_Test_RO_FG.mdf Test_RO_FG.mdf 
    rename original_Test_RO_FG_File1.ndf Test_RO_FG_File1.ndf 
    rename original_Test_RW_FG_File1.ndf Test_RW_FG_File1.ndf 
    rename original_Test_RO_FG_log.ldf Test_RO_FG_log.ldf
  8. データベースを緊急モードに設定し、修復を実行します。これを行うには、次のコマンドを実行します。

    この手順では、データベースのトランザクション ログが再構築されます。データが失われる可能性があります。そのため、この手順を実行する前に、データベースをバックアップすることをお勧めします。
    ALTER DATABASE Test_RO_FG_DB SET EMERGENCY
    GO
    ALTER DATABASE Test_RO_FG_DB SET SINGLE_USER
    GO
    DBCC CHECKDB (Test_RO_FG_DB, repair_allow_data_loss) WITH ALL_ERRORMSGS
    GO
    ALTER DATABASE Test_RO_FG_DB SET MULTI_USER
    GO
  9. データベースがオンラインになっていることを確認し、Service Broker 機能を再設定します。
  10. 必要のないデータベース ファイルを削除します。次のサンプル コマンドはこれを行う方法を示しています。
    del /P new_Test_RO_FG.mdf
    del /P new_Test_RO_FG_File1.ndf
    del /P new_Test_RW_FG_File1.ndf
    del /P new_Test_RO_FG_log.ldf

詳細

SQL Server のインスタンスに、データベースが接続されている場合に発生するいくつかの手順です。次の手順には、データベースをリカバリして、ファイルが SQL Server の以前のバージョンからアップグレードが含まれます。

データベース内の読み取り専用のファイルが検出される前に、「現象」に記載されている問題では、SQL Server の 2012 アップグレード処理を開始します。データベースの起動ページに、"クリーン シャット ダウンする] ビットをオフにするのには、トランザクションを開始してアップグレードの手順が含まれます。以前のバージョンの SQL Server は、開始トランザクションのレコードを読み取ることができません。したがって、データベースの SQL Server、以前のバージョンで使用可能ではありません、SQL Server に 3624 エラーが生成されます。

インプレース アップグレードは、データベースと読み取り専用としてマークします。

SQL Server 2012年に Test_RO_DB という名前で、読み取り専用データベースを含む SQL Server のインスタンスのインプレース アップグレードを実行すると、SQL Server のエラー ログで、次のようなエラー メッセージが表示される場合があります。

2012-05-04 21:03:59.23 spid19s 'Test_RO_DB' データベースのバックアップを開始します。
2012-05-04 21:03:59.56 spid19s 変換データベース 'Test_RO_DB' からバージョン 661 706 の現在のバージョンにします。
2012-05-04 21:03:59.56 spid19s エラー: 928、レベル: 20、状態: 1。
2012-05-04 21:03:59.56 spid19s 中にアップグレードは、データベースは例外 3415、レベル 16、状態 1、アドレス 000007FEE66D784A を発生します。原因を特定するのには、例外番号を使用します。
2012-05-04 21:03:59.61 spid19s エラー: 3415、レベル: 16、状態: 1。
2012-05-04 21:03:59.61 spid19s は読み取り専用であるために、データベース 'Test_RO_DB' をアップグレードできない読み取り専用ファイルまたはファイルの一部を変更するのには、アクセス許可を持たないユーザー。データベースまたはファイルを書き込み可能にし、回復を再実行します。


アップグレード プロセスの最後に、Test_RO_DB データベースは、RECOVERY_PENDING 状態でになります。OR データベースを設定するのには、 ALTER DATABASEコマンドを使用する必要があります。データベースに read ONLY に設定するのには、 ALTER DATABASEコマンドを使用して。SQL Server エンジンを正しいバージョンにデータベースをアップグレードすることができます。

アップグレードは読み取り/書き込みデータベースが読み取り専用としてマークされているファイル グループが含まれている場合場で

SQL Server 2012年へのインプレース アップグレードを実行すると、SQL Server のエラー ログで、次のようなメッセージが表示される可能性があります。この問題が発生するは、SQL Server の以前のインスタンスの読み取り/書き込みデータベースをホストすると read ONLY とマークされているファイル グループが含まれています。ただし、期待どおりには、アップグレード プロセスを完了し、データベースがオンラインになった。

次のエラー メッセージが、データベースが Test_RO_FG という名前です。

2012-05-04 21:03:59.23 spid18s データベース 'Test_RO_FG' のバックアップを開始します。
2012-05-04 21:03:59.71 spid18s 変換データベース 'Test_RO_FG' からバージョン 661 706 の現在のバージョンにします。
2012-05-04 21:03:59.71 spid18s データベース 'バージョン 661 から 668 のバージョンにアップグレードの手順を実行している Test_RO_FG'。



プロパティ

文書番号: 2710782 - 最終更新日: 2012年6月18日 - リビジョン: 2.0
キーワード:?
kbtshoot kbprb kbmt kbsurveynew KB2710782 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:2710782
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com