web-dev-qa-db-ja.com

データベースバックアップファイル(.bak)をSQL Server 2012からSQL Server 2008 Expressに復元するにはどうすればよいですか?

もともとSQL Server 2008にあったデータベースがSQL Server 2012に復元されました。SQLServer 2012からバックアップが作成され、ローカルのSQL Server 2008 Expressに復元しようとしています。ただし、「指定されたキャストが無効です」というエラーが表示されます(SQLManagerUI)。

2012年からSQLスクリプトを生成し、SQL Server 2008との互換性を備えて生成されるように設定しました。ただし、これは約700MBの大きなsqlファイルです。

以前、ローカルSQLExpressでそのサイズのスクリプトを実行しようとしてエラーが発生したことを思い出しました。

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

23
stormwild

答えを提供してくれたマークとアーロンに感謝します。

簡単な答えは「いいえ」です。バックアップファイルをSQL Serverの上位バージョンから下位バージョンに復元することはできません。

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

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

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

リンク:

なぜ上位バージョンのSQL Serverデータベースを下位バージョンのSQL Serverに復元できないのですか?

SQL Server 2012でデータベースを作成、2008年にスクリプトと使用?

21
stormwild

人々に役立つかもしれない追加するいくつかの事柄

SSMSのスクリプトウィザードを使用して大規模なデータベースのスクリプトを作成する場合、実行順序を確認し、それを手動で再配置することが重要です。古いバージョンのSSMSには、(おそらく) bug を持つ sp_depends に依存していたため、この問題がありました。

このような場合に本当に役立つとわかったのは、 ApexSQL Diff のようなツールです。これを使用して、データベースのバックアップを読み取り、正しい実行順序のスクリプトを生成できます。

以前のバージョンでのSQL Serverデータベースバックアップの復元

どのメソッドもキャッチしないことの1つは、アーロンが上位バージョンに固有の関数の使用について言及したことです。

3
Jaycob Read

SSMSスクリプトウィザードを使用するよりも優れたオプションは、SQL Database Migrationと呼ばれるCodeplexで利用可能な同様のツールを使用することですWizard- http://sqlazuremw.codeplex.com/releases/view/32334 。最新バージョンv4.xがSQL Server 2012で動作するようにします。

このツールは元々、SQL ServerとAzureの間でデータベースを移行するために使用することを目的としています。ただし、このツールは、SQL ServerとSQL Serverの間で機能します。トリックは、AzureではなくSQL Serverを詳細オプションのターゲットとして設定することです。

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

1
Brian Towers