SQLDataAdapter没有进行批量更新

时间:2015-05-28 23:52:25

标签: sqldataadapter

我目前有一个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

1 个答案:

答案 0 :(得分:0)

显然,SQL Profile给人的印象是它一次只进行一行更新,实际上它在一个批处理中发送了所有更新,但在探查器中一次显示为一个操作。

在本文中找到答案。 http://blogs.msdn.com/b/dataaccess/archive/2005/05/19/420065.aspx