1

そのため、データベーステーブルから別のテーブルにデータをコピーしようとしています。ただし、問題は、ターゲットデータベーステーブルに必要な2つの新しい列があることです。SQL Server Management Studioでエクスポート/インポートウィザードを使用したかったのですが、それを使用する場合は、テーブルごとにクエリを作成する必要があり、一度に実行できるクエリは1つだけです。それを行うためのより効率的な方法があるかどうか疑問に思いました。

1つのテーブルの例を次に示します。

dbase1.dbo.Appointment { id, name, description, createdate }
dbase2.dbo.Appointment { id, name, description, createdate, auditby, auditat}

合計8つのテーブルがあり、これらの2つの追加の列があります。それらのほとんどはfkを介して相互に関連しているため、どのテーブルが最初に挿入されるかを判断するウィザードを使用したいと思いました。それに関する問題は、「1つ以上のテーブルからデータをコピーする」場合にのみ機能し、「データを指定するクエリを作成する」場合には機能しません(これを使用してこれらの2つの新しい列にデータを入力します)。

アプリケーションにMVCCodeFirstを使用しているため、データのコピーでこの非常に遅いプロセスを実行しており、サーバーにアクセスして、暇なときにテーブルを削除して作成することができません。したがって、私はすでに持っているデータを維持するためにこれに頼らなければなりません。

4

3 に答える 3

1

アイデア:宛先データベースの外部キー制約を一時的に無効にします。次に、挿入を実行する順序は重要ではありません。2つの新しい必須の列にデータを入力するには、そこに配置する株式の値をいくつか選択する必要があります(明らかに、これらの行は最初は初期監査の対象ではないため)。例えば:

INSERT dbase2.dbo.appointment
(id, name, description, createdate, auditby, auditat)
  SELECT id, name, description, createdate, 
    auditby = 'me', auditat = GETDATE()
  FROM dbo.appointment;

課題は、宛先にソースにない列が必要であり、これらの監査列に何を入力するかを決定する必要があることだけであるように思われるため、これにより複数の問題が一度に解決されるようです。との代わりにそこに何を入れるかを理解する必要が'me'ありGETDATE()ます。

(ウィザードにこれらの8つのテーブルをプルさせるために、上記のクエリの選択部分に似たビューを作成できる場合がありますが、それはより多くの作業であり、それらを生成するための基礎となるFK制約は表示されません。とにかく正しい注文。)

于 2012-06-14T03:27:48.447 に答える
0

挿入プロセスごとに、必要な順序でSQLクエリを記述します。それが最も簡単なアプローチです。

于 2012-06-14T03:19:34.217 に答える
0

Default valuesこれらの2つの列にを設定します

AuditAtのように-デフォルトの日付すなわちGetDate() AuditByの場合-個人ID/名前

これで、これら2つの列を入力せずに、これらのテーブルに挿入できます。

于 2012-06-14T03:30:57.973 に答える