顯示廣告
隱藏 ✕
看板 Irice
作者 irice (irice)
標題 .NET C# 資料表複制
時間 2013年05月09日 Thu. AM 11:49:15


因不小心把客戶資料刪光,為了從備份TABLE回復資料找到的方法

試用過INSERT INTO的方式,但速度明顯很慢,而且會不停逾時!

所以改用SqlBulkCopy物件,速度上提升非常多,萬筆資料的複制只要數秒內就能完成

ex:

DataTable dbTB = new DataTable();
SqlConnection dbCon;
SqlCommand dbCmd;
SqlDataAdapter dbDA;

using (dbCon = new SqlConnection(DB_Query.ConnString()))
{
	
dbCon.Open();
	
dbCmd = new SqlCommand("SELECT * FROM [orders] WHERE id IN (@id_list);", dbCon);
	
dbCmd.Parameters.Add("id_list", SqlDbType.Int).Value = id_list;
	
dbDA = new SqlDataAdapter(dbCmd);
	
dbDA.Fill(dbTB);

	
SqlTransaction sqlTrans = dbCon.BeginTransaction();
	
SqlBulkCopy SBC = new SqlBulkCopy(dbCon, SqlBulkCopyOptions.KeepIdentity, sqlTrans);
	
if (dbTB != null){
	
	
SBC.DestinationTableName = "dbo.[orders]";
	
	
SBC.WriteToServer(dbTB);
	
	
sqlTrans.Commit();
	
}
	
SBC.Close();
}

--
※ 作者: irice 時間: 2013-05-09 11:49:15
※ 編輯: irice 時間: 2013-05-09 11:54:41
※ 看板: Irice 文章推薦值: 1 目前人氣: 0 累積人氣: 221 
( ̄︶ ̄)b mesak 說讚!
guest
x)推文 r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇