質問: sql server 2012から2008にデータベースを移動する sql server 2012インスタンス上のデータベースがあり、それを2008サーバーにコピーします。 2008サーバーは、2012サーバーによって作成されたバックアップを復元できません(私が試したことがあります)。2012年には、2008互換のバックアップを作成するためのオプションが見つかりません。私は何かが足りないのですか?スキーマとデータをバージョンに依存しない形式にエクスポートする簡単な方法はありますか?それから2008年にインポートできますか?データベースは、2012年の特定の機能を使用していません。テーブル、データ、ストアドプロシージャが含まれています。これまでに試したことがあります2012サーバーでタスク→スクリプトの生成を試してみましたが、 sqlスクリプトとしてスキーマ(ストアドプロシージャを含む)を生成できます。ただし、これにはデータが含まれていませんでした。そのスキーマを2008年のマシンで作成した後、2012年のマシンで[データのエクスポート]ウィザードを開くことができ、2012年をソースマシンとして、2008年をターゲットマシンとして設定した後、テーブルのリストが表示されました。コピーすることができます。私は自分のすべてのテーブル(300+)を選択し、そしてウィザードを通してクリックした。残念ながら、スクリプトの生成に時間がかかり、「読み取り専用列への挿入に失敗しました 'foo_id'」のようなエラーで失敗します。私はまた、 "2000年以降から2005年以降"にコピーできると主張している "データベースコピーウィザード"を試しました。 2つのモードがあります。 エラーで失敗した「デタッチとアタッチ」: message: index was outside the bounds of the array. stacktrace: at microsoft.sqlserver.management.smo.propertybag.setvalue(int32 index, object value) ... at microsoft.sqlserver.management.smo.datafile.get_filename() エラーで失敗したsql管理オブジェクトメソッド isfilestreamプロパティを読み取れません。このプロパティはsql server 7.0では利用できません。 "
回答: そのスキーマを2008年のマシンで作成した後、2012年のマシンで[データのエクスポート]ウィザードを開くことができ、2012年をソースマシンとして、2008年をターゲットマシンとして設定した後、テーブルのリストが表示されました。コピーすることができます。私は自分のすべてのテーブル(300+)を選択し、そしてウィザードを通してクリックした。残念ながら、スクリプトの生成に時間がかかり、「読み取り専用列への挿入に失敗しました 'foo_id'」のようなエラーで失敗します。 問題は、id列を挿入できないためです。 チェックしてすべてのテーブルを選択します すべてのテーブルを選択します(これを行うには、最初のテーブルをクリックしてshiftキーを押しながら最後のテーブルをクリックします)。 [マッピングの編集]をクリックします - 次のボタンの上とプレビューの隣に表示されます。 ウィンドウが表示されたら、[idの挿入を有効にする]をクリックして[次へ]をクリックして先に進みます。これでうまくいくはずです。それは私のために働きました。