我目前有一个DataTable需要用来在SQL Server上进行大量数据更新。当我运行下面的代码并进入更新部分时,我可以看到使用sql profiler它正在进行一次更新调用,而不是批量调用。我错过了什么吗?
Using myConnection As New SqlClient.SqlConnection(_ConnectionString)
Dim adapter As New SqlClient.SqlDataAdapter()
adapter.UpdateCommand = New SqlClient.SqlCommand("updCatMasterFromParcel @ID, @HOMkt, @HOExemp, @PtrMkt", myConnection)
adapter.UpdateCommand.Parameters.Add("@ID", SqlDbType.Int, 10, "ID")
adapter.UpdateCommand.Parameters.Add("@HOMkt", SqlDbType.Decimal, 18, "HOMkt")
adapter.UpdateCommand.Parameters("@HOMkt").Precision = 18
adapter.UpdateCommand.Parameters("@HOMkt").Scale = 8
adapter.UpdateCommand.Parameters.Add("@HOExemp", SqlDbType.Decimal, 18, "HOExemp")
adapter.UpdateCommand.Parameters("@HOExemp").Precision = 18
adapter.UpdateCommand.Parameters("@HOExemp").Scale = 8
adapter.UpdateCommand.Parameters.Add("@PtrMkt", SqlDbType.Decimal, 18, "PtrMkt")
adapter.UpdateCommand.Parameters("@PtrMkt").Precision = 18
adapter.UpdateCommand.Parameters("@PtrMkt").Scale = 8
adapter.UpdateCommand.CommandTimeout = 120000
adapter.DeleteCommand = Nothing
adapter.InsertCommand = Nothing
adapter.UpdateBatchSize = 0
adapter.UpdateCommand.UpdatedRowSource = UpdateRowSource.None
adapter.Update(dt)
End Using
答案 0 :(得分:0)
显然,SQL Profile给人的印象是它一次只进行一行更新,实际上它在一个批处理中发送了所有更新,但在探查器中一次显示为一个操作。
在本文中找到答案。 http://blogs.msdn.com/b/dataaccess/archive/2005/05/19/420065.aspx