2017-11-24 23 views
0

私は別のサーバー上コピー内容

+--------+-----------+----------+ 
| UserId | FirstName | LastName | 
+--------+-----------+----------+ 
| 123 | Bob  | Smith | 
| 456 | John  | Doe  | 
+--------+-----------+----------+ 

UserTableそれを呼び出す)に似たSQLテーブルを持って、私はテーブルを持っている(UserBackupTableそれを呼び出す)

+----------+--------+-----------+----------+ 
| Location | UserId | FirstName | LastName | 
+----------+--------+-----------+----------+ 
| A  | 123 | Bob  | Smith | 
| B  | 456 | John  | Doe  | 
+----------+--------+-----------+----------+ 

1つの列(Location)の追加を除いて、2つの表は同じです。私は、バックアップ/私は手動を入力する必要がする40の以上の列を持っているとき、これは動作しますが、私にとっては非常に効率的ではありません

var dataToCopy = userDb.UserTable.Select(user => new UserBackup 
{ 
    Location = _location, 
    FirstName = user.FirstName, 
    LastName = user.LastName 
}).ToList(); 
backupDb.UserBackups.AddRange(dataToCopy); 

より良い方法でUserTableUserBackupTableにコピーしたいと思います。これらは必要な場合のデータベースの最初のモデルです。

+0

この質問を入力した時点で、これらの40件の課題を記述できました。あなたは実際にどのような解決策を探していますか?生のSQLはオプションですか? – CodeCaster

+0

私は実際にそれを書いて、それは動作し、ちょうど間違って感じる...間違っています。より良い方法があるはずです。 – gilliduck

+1

SqlBulkCopyクラスがあるので、トランザクションサポート、進捗レポート、およびプロセスのキャンセル機能により、DataReaderを使用して大量のデータを1つのデータベースから別のデータベースに高速にコピーできます。私は過去にOracleからMSSQLにデータをコピーするのにも成功しました。しかし、それを行うには5行を少し超えるコードを書く必要があります。https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy%28v=vs.110%29.aspx ?f = 255&MSPPError = -2147217396 – Arie

答えて

-1

これは、ORMを介してではなく、データベースレイヤーで行うことはできません。

SELECT * 
INTO [backupDb].[dbo].[UserBackups] 
FROM [dbo].[UserTable]  

あなたはそれを行う方法によって上記を変更する必要があります。データのサイズに応じて毎回バックアップテーブル全体を増分、再作成することができます(既存のテーブルを削除してトランザクションの一部としてその置換を選択するだけです)。ただし、SQL Serverエージェントなどで自動化することもできます。

SELECT INTOは新しいターゲットテーブルを作成するため、増分バックアップアプローチには適さないことに注意してください。

+0

私は可能でしたが、エンティティを使用してプログラムでそれを保持することがポイントでした。 – gilliduck

+0

なぜそれはポイントですか?確かに全体のポイントは最高のソリューションを見つけることです? :-)あなたが望むなら、EFを使って任意のSQLを実行することができます。それは、私にとってデータベースメンテナンスの仕事のように思えます。 – natwallbank

+0

なぜ誰がダウンビートをしたのか分かりませんが、理由を説明するコメントは参考になります。私は何年にもわたってこのソリューションを何度も使用してきたので、これは絶対に質問に答えます。それが非EFソリューションなので、それは私がこれが質問に明確に述べられているとは思わない。 – natwallbank

関連する問題