2012-05-25 22 views
23

元々SQL Server 2008のデータベースがSQL Server 2012に復元されました.SQL Server 2012からのバックアップが作成されましたが、ローカルのSQL Server 2008 Expressで復元しようとしています。しかし、私はエラー '指定されたキャストは有効ではありません'(SQLManagerUI)を取得します。SQL Server 2012からSQL Server 2008 Expressにデータベースバックアップファイル(.bak)を復元するにはどうすればよいですか?

私は2012年からSQLスクリプトを生成し、SQL Server 2008との互換性をもって生成するように設定しました。しかし、700mb程度の大規模なSQLファイルです。

私は前に、自分のローカルSQLExpressでこのサイズのスクリプトを実行しようとしていましたが、エラーも発生しました。

SQL Server 2012からSQL Server 2008 Expressに「大きな」データベースを取得する方法はありますか?

+4

SQL Serverのバージョンに関しては、決して**戻ることはできません。 2012バージョンでデータベースをバックアップした場合、そのバックアップを2008バージョンに復元することはできません。ちょっとしたことやそれを回避する方法はありません:-( –

+0

ああ、ありがとうMarc。私は生成されたSQLスクリプトを実行して、ローカルSQLにデータベースのコピーを取得できるかどうかを調べるつもりです – stormwild

+1

[SQL Serverでバックアップを以前のバージョンに復元できない理由](http://www.mytechmantra.com/LearnSQLServer/Unable_to_Restore_Database_From_Backup.html) –

答えて

21

答えを提供してくれたMarcとAaronに感謝します。

いいえ、バックアップファイルをSQL Serverの上位バージョンから下位バージョンにリストアすることはできません。

回避策は、データベースを作成するスクリプトを生成することです。

スクリプト生成をより低いバージョンにすることができます。

詳細については、上記のコメントをご覧ください。

リンク:それを追加する

Why an SQL Server Database from a higher version cannot be restored onto a lower version of SQL Server?

Create Database in SQL Server 2012, Script and Use in 2008?

3

カップルの事が人々

SSMSでスクリプトウィザードを使用して大規模なデータベースをスクリプトする場合、それは実行を確認するために本当に重要だと役に立つかもしれません注文し、それを手作業で手配してください。 SSMSの以前のバージョンでは、おそらくsp_dependsに頼っており、bugがあるため、この問題が発生しました。

このようなケースで私が本当に役に立ちましたのは、ApexSQL Diffのようなツールで、データベースのバックアップを読み込んで正しい実行順序のスクリプトを生成するために使用できます。方法のいずれもがキャッチしないことを

SQL Server database backup restore on lower version

一つは、アーロンは、より高いバージョンに固有の機能を使用する方法について述べたものです。

1

SSMSスクリプトウィザードを使用するよりも、SQLデータベース移行ウィザード - http://sqlazuremw.codeplex.com/releases/view/32334というCodeplexで入手できる同様のツールを使用する方が良いでしょう。最新バージョンのv4.xをSQL Server 2012で使用したい場合。

このツールは、もともとSQL ServerとAzureの間でデータベースを移行するためのものです。ただし、このツールはSQL ServerとSQL Serverの間でも同様に機能します。この方法は、高度なオプションではAzureではなくSQL Serverをターゲットとして設定することです。

これはSSMSスクリプトウィザードよりも優れている理由は、TSQLではなくデータ転送にBCPを使用するため、はるかに効率的です。

関連する問題