私は、データベースを再作成するためのスクリプトを生成する際に 'Identity'列をどのように扱うかを正しく理解する方法を見つけようとしています。データベースのコピーを作成する - 'Identity'仕様の使用に失敗しました
私はこれを行うためにスクリプトを生成する必要がある元の理由は、SQLデータベースを古いバージョンにダウングレードする必要があるためです。私はデータベース(v10.5)のすべてが古いバージョン(v10.0)と互換性があることを知っています。私が直面している問題は、データベースをコピーする3つの異なる方法のうち、元のIDフィールド(ID)を維持できないという事実が常に失敗することです。
私のすべてのテーブルは、最初のカラムがID: Int = PK & Identity
です。 1、2、3、5、8、12、13など、テーブルが完全に連続していないケースもたくさんあります。これは過去にレコードが削除されたためです。しかし、元のID番号を以前と同じ順序で再挿入することは不可能だと思われます...
どのようにして(バックアップ/復元なしで)サーバーAからデータベース全体をコピーしますかサーバーBに?注:両方のサーバーの両方のデータベースにManagement Studioから接続できます。また、宛先サーバーは私のものではなく、共有されたホストされたDBであり、自分のデータベースにのみアクセスできます。私は宛先サーバの設定を変更する権限がありません。
私は次のことを試してみた:
- バックアップ/データベースを復元し、データベース全体のオプション
- エクスポートデータベースオプション
- のためのスクリプトを生成します - ので、バージョンミスマッチの
を失敗しました私は、すべてのテーブルでIDの指定を一時的に「無効にする」必要があるかもしれないと推測しています。データを挿入してから、IDを再びオンに戻してください。しかし私はデータベース構造を操作するためのスクリプトを書くことには恐ろしいです。データそのもの、私はすることができます。しかし、データベース構造を操作するために、私はこれまでスクリプトに取り組む時間をとらえていないツールを使用することに慣れてきました - そして、この特定のシナリオ以外では、私はどちらも学ぶ必要がないことを願っています。
挿入のために 'SET IDENTITY_INSERT MyTableName ON'を実行するだけで、クエリの' INSERT'と 'SELECT'部分の両方にあなたのカラムリストをリストするだけです。 – JNK