看板 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
回列表(←)
分享