23

元々SQLServer2008からのものであったデータベースがSQLServer2012に復元されました。SQLServer2012からのバックアップが作成され、ローカルのSQL Server2008Expressで復元しようとしています。ただし、「指定されたキャストは無効です」(SQLManagerUI)というエラーが発生します。

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

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

SQLServer2012からSQLServer2008 Expressに「大規模な」データベースを取得する方法はありますか?

4

3 に答える 3

21

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

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

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

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

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

リンク:

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

SQL Server 2012でデータベースを作成し、2008年にスクリプトを作成して使用しますか?

于 2012-05-28T09:20:49.530 に答える
3

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

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

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

下位バージョンでのSQLServerデータベースのバックアップの復元

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

于 2013-09-10T15:18:01.020 に答える
1

SSMSスクリプトウィザードを使用するよりも優れたオプションは、SQLデータベース移行ウィザードと呼ばれるCodeplexで利用可能な同様のツールを使用することです-http: //sqlazuremw.codeplex.com/releases/view/32334。最新バージョンのv4.xをSQLServer2012で動作させる必要があります。

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

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

于 2014-01-26T18:51:33.810 に答える