SQL Server 2012から2008にデータベースを移動

sql-server sql-server-2008 sql-server-2012

私はSQL Sever 2012インスタンス上にデータベースを持っていて、2008サーバにコピーしたいと思っています。2008サーバは2012サーバで作成したバックアップをリストアできません(試してみました)

2012年に2008互換のバックアップを作成するためのオプションが見つかりません。私は何かを見落としているのでしょうか?

スキーマとデータをバージョンに依存しない形式にエクスポートして2008にインポートする簡単な方法はありますか?

データベースは2012年特有の機能を使用していません。テーブル、データ、ストアドプロシージャが含まれています

これまでに試してきたことをご紹介します

2012年のサーバでタスク→スクリプトの生成を試してみたところ、SQLスクリプトとしてスキーマ(ストアドプロシージャを含む)を生成することができました。しかし、これにはデータは含まれていませんでした

2008年のマシンでスキーマを作成した後、2012年のマシンで「データのエクスポート」ウィザードを開くことができ、2012年をソースマシン、2008年をターゲットマシンとして設定した後、コピー可能なテーブルのリストが表示されました。私はすべてのテーブル(300以上)を選択し、ウィザードをクリックしました。残念なことに、それはそのスクリプトを生成する年齢を費やし、その後、”読み取り専用列’FOO_ID’への挿入に失敗しました “のようなエラーで失敗します

2000年以降のものから2005年以降のものまで」コピーできると謳っていた「データベースコピーウィザード」も試してみました。これには2つのモードがあります

  1. “脱着 “がエラーで失敗した

    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()
    
  2. エラーで失敗したSQL管理オブジェクトメソッド

    プロパティ IsFileStream を読み込めません。このプロパティは SQL Server 7.0 では使用できません。”

  29  Rich  2012-08-31


ベストアンサー

2012 SQL Management Studioでデータベースを右クリックし、”Tasks -> Generate Scripts “を選択します。ウェルカム画面の先をクリックし、「データベース全体とすべてのデータベースオブジェクトをスクリプト化する」を選択します。スクリプトの保存方法を指定する」ページで、「詳細」をクリックします。ポップアップされたプロパティページの「一般」で、「スクリプトに使用するデータの種類」を「スキーマのみ」から「スキーマとデータ」に変更し、「サーバーバージョンのスクリプト」を「2012」から「2008」に変更します

私はその後、データベースがどのように作成されるかを微調整するために、この巨大なSQLファイルの先頭を編集する方法を見つけなければなりませんでした — このqを参照してください。https://stackoverflow.com/questions/102829/best-free-text-editor-supporting-more-than-4gb-files

そして最後に、私はSQLスクリプトを実行する方法を見つけなければなりませんでしたが、これは大きすぎてSQL Management Studioで開くことができませんでした — このqを参照してください。https://stackoverflow.com/questions/431913/how-do-you-run-a-300mb-ms-sql-sql-file

40  Rich  2012-09-03


SQLの移行には、無料でオープンソースのSQL Database Migration Wizardを使用します

私は5GBのデータベースを持っていて、カップル〜1000万レコードを持っていて、スクリプトを生成して、sqlcmd.exeで実行することを介してルートを試してみました。まず第一に、生成されたスクリプトは常に正しく動作しているわけではありませんでした。第二に、sqlcmd.exeは大きなファイルでも失敗することがあり、利用可能なメモリの問題を訴えています

そして、SQL ServerをSQL Azureデータベースに移行するための素晴らしいツールに出会いました。これはSQL ServerからSQL Serverへの移行でも動作し、例えばSQL 2012データベースを2008 R2に移行したい場合などに有効です。これは、バルクコピーを使用しているbcp.exeを使用しています。GUI版とコマンドライン(バッチ)版があり、オープンソースです。http://sqlazuremw.codeplex.com/を参照してください。私の場合は16分ほどで処理が完了しました

詳細画面では、ターゲットがSQL AzureではなくSQL Serverであることを選択することができます

12  lvmeijer  2013-09-27


SQLは初めてですが、なんとか2012年から2008年に移行することができました。そのために私はSQLのインポートとエクスポートユーティリティを使用しました。私はSQL 2012サーバーと移行したいデータベースを選択し、最後に2008サーバーを選択して、移行先のデータベースとして新しいデータベースを作成しました。これはうまくいきました

3  Fernando  2013-03-28


APEXSQL ツールを試してみてください。彼らは、データベースをスクリプト化し、データもスクリプト化するツールを持っています

2  Paul  2012-08-31


2008年のマシンでスキーマを作成した後、2012年のマシンで「データのエクスポート」ウィザードを開くことができ、2012年をソースマシン、2008年をターゲットマシンとして設定した後、コピー可能なテーブルのリストが表示されました。私はすべてのテーブル(300以上)を選択し、ウィザードをクリックしました。残念なことに、それはそのスクリプトを生成する年齢を費やし、その後、”読み取り専用列’FOO_ID’への挿入に失敗しました “のようなエラーで失敗します

問題は、IDカラムを挿入できないことです

  1. すべてのテーブルにチェックを入れて選択します
  2. すべてのテーブルを選択します(これを行う方法は、最初のテーブルをクリックしてシフトを保持し、最後のテーブルをクリックすることです)
  3. マッピングの編集 “をクリックしてください – あなたは、次のボタンのすぐ上とプレビューの隣にそれを見ることができます
  4. あなたは、ウィンドウを取得し、”アイデンティティの挿入を有効にする “にチェックを入れてから、次をクリックして先に行く、これは動作するはずです。私の場合はうまくいきました

1  Jaimee Jose  2012-11-16


私は上記のリッチのソリューションhttps://superuser.com/a/469597/312310に従っており、それは素晴らしい仕事をしました!ありがとうございます。ありがとうございます

これを実現するためにやっていた余計なステップは

  • 論理ファイル名を変更し、パスが正しいことを確認してください。私はまた、生成されたログ名を変更しなければならなかった、それ以外の場合、それはログでmdfファイルを上書きしようとした後、このエラーhttps://stackoverflow.com/questions/7534664/sql-server-script-error-database-is-already-in-useをスローしました

    CREATE DATABASE [xxxx] ON PRIMARY ( NAME = xxxxx’, FILENAME = N’C:C:IllustratorProgram Files\Microsoft SQL ServerMSSQL11.MSSQLSERVERMSSQLDATAxxxxx.mdf’ , SIZE = 14400KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N’xxxxldf’, FILENAME = N’C:Program Files\Microsoft SQL ServerMSSQL11.MSSQLSERVERMSSQLDATAxxxxx_log.ldf’ , SIZE = 18560KB , MAXSIZE = 2048GB , FILEGROWTH = 10%) GO

  • 私は生成されたセクションをコメントアウトして、後から手動でユーザー権限を追加しなければなりませんでした

    USE [xxxxx]
    GO
    /****** Object:  User [xxxxx]    Script Date: 30/11/2014 12:44:07 ******/
    CREATE USER [xxxxx] FOR LOGIN [xxxxx] WITH DEFAULT_SCHEMA=[dbo]
    GO
    sys.sp_addrolemember @rolename = N'db_owner', @membername = N'Umbraco'
    GO
    sys.sp_addrolemember @rolename = N'db_datareader', @membername = N'Umbraco'
    GO
    sys.sp_addrolemember @rolename = N'db_datawriter', @membername = N'Umbraco'
    GO
    

それを実行してみると、なんと、SQL Server 2008 R2しか持っていないウェブサーバに、新しいUmbraco 7.1.2データベースを復元することができました

1  ladygargar  2014-11-30


xSQL スキーマ比較xSQL データ比較 をご覧ください。まず、スキーマ比較でスキーマを同期してからデータをコピーします

免責事項:私はxSQLと提携しています

0  Endi Zhupani  2016-12-04


タイトルとURLをコピーしました