web-dev-qa-db-ja.com

SQL Serverのバージョンに互換性がないため、データベースの復元に失敗しました

異なる2つのSQL Serverで作業していますが、データベースをあるサーバーから別のサーバーに転送する必要がありますが、問題はサーバーのバージョンが異なることです。

以下はエラーメッセージの画像です。

enter image description here

SELECT @@Versionを使用して、以下のようにデータベースのバージョンを確認しました。

最初のデータベースバージョン(ソースデータベース):

Microsoft SQL Server 2008 R2 (SP2) - 10.50.4260.0 (X64)   
Jul 11 2012 15:47:13   Copyright (c) Microsoft Corporation  Web Edition (64-bit) 
on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor) 

2番目のデータベースバージョン(接続先データベース):

Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64)   
Jul  9 2008 14:17:44   Copyright (c) 1988-2008 Microsoft Corporation 
Enterprise Edition (64-bit) 
on Windows NT 6.0 <X64> (Build 6001: Service Pack 1) (VM)

これどうやってするの?

2
Anvesh

Doug L.への+1、私は同じことをお勧めします(すべてのデータと構造をSQLスクリプトとデータダンプにエクスポートしてからインポートします)がその上にあります:2つのDBを接続できればクロスサーバーのSELECT/INSERTができます古いDBから新しいDBへのテーブルとデータ。 RTMサーバーをアップグレードすることを許可されている場合)-これを確認することはできませんが、SP on RTMこれは、他の人と同じバージョンと見なされます。

3
user23243
  1. 最初のサーバーのデータベースの互換性設定を変更し、それをバックアップしてから、2番目のデータベースサーバーに復元することができます[これは、以下でコメントされているように機能しないことがわかっています]。

  2. RedgateのSQL Compare ProやSQL Data Compare Proなどのサードパーティツールを使用できます。

  3. 2番目のデータベースサーバーをアップグレードします。

1

SQL Server Management Studioでソースデータベースを右クリックし、[タスク]、[スクリプトの生成]の順に選択します。これを使用して、データベース内のオブジェクトを作成および設定するSQLスクリプトを生成します。オブジェクトの選択、データの選択、サーバーバージョンのターゲット設定、目的の出力などのオプションがいくつかあります。結果のスクリプトはターゲットサーバーで実行できます。

0
Doug L.

SSMS内でデータベースコピーツールを使用するように誘惑されないでください。それは背後に大きな痛みを伴い、SSISの使用のおかげでそれを機能させるために多くの混乱を必要とします。それは単純なはずで、実際にはSQL Server 2000にあったはずですが、今ではセキュリティに多大な労力を必要とするため、実際に取り組む価値はありません。確実に機能させるために無数の時間を費やしました。

これは最も簡単でクリーンな解決策ではありませんが、DB全体をスクリプト化することが最善策であるという以前のポスターに同意します[〜#〜] if [〜#〜]大きなDB。その場合、現実的には、ターゲットサーバーを2008 R2(または2012)にアップグレードするしかありません。特定のSQL ServerバージョンのDeveloper Editionは約50ポンド(現在は約US $ 77、実際にはUS $市場よりも低い場合があります)であり、機能的には完全なEnterprise Editionと同等です。

本当に行き詰まって現金が手に入れられない場合は、最新のExpress Edition(無料)を使用して復元できるかもしれませんが、開発を妨げる可能性のある機能に制限がないことを確認してください。私は間違っている可能性がありますが、ExpressエディションはStandardエディションのほとんどの機能を備えていますが、DBサイズと接続数を制限していると思います。すでにSSMSがあるため、新しいExpressインスタンスに直接接続できます。

余談ですが、MSは2012年にデータベースコピーウィザードをより使いやすくするために努力したと思いますが、まだ試していません。

ちなみに、互換性レベルはDBバージョンとは関係なく、特定のDBで使用できる機能を制限するだけです。たとえば、古いレガシーシステムであるため、DBでCLR関数を使用しないようにしたい場合があります。そのため、互換性レベルを80に設定して、そのような機能がDBに追加されないようにします。

0
Steve Pettifer