SQLCommand指定查询提示的对象

时间:2017-02-22 13:35:40

标签: sql-server sqlcommand

我只是想知道在使用SQLCommand对象调用存储过程时是否有指定查询提示的方法?

例如,我需要调用类似这样的东西

EXECUTE SPName'0068', 40 WITH RECOMPILE

我只是想知道,我如何使用SQLCommand对象来模拟它。

        Dim connection As New SqlClient.SqlConnection("server=(local);database=DEV;Persist Security Info=True;uid=sa;pwd=;")
    connection.Open()
    Dim cmd As New SqlClient.SqlCommand
    With cmd
        .Connection = connection
        .CommandText = "Warehouse_AdjustInventory_byWarehouse_u"
        .CommandType = CommandType.StoredProcedure

        .Parameters.AddWithValue("@ProductID", "0068")
        .Parameters.AddWithValue("@WarehouseID", 40)
    End With
    Try
        Dim result As Integer = cmd.ExecuteNonQuery()
        Trace.WriteLine(result)
    Catch ex As Exception
        Trace.WriteLine(ex.Message)
    End Try

    connection.Close()

SQLCommand是否支持提供像RECOMPILE这样的查询提示? 谢谢

1 个答案:

答案 0 :(得分:1)

我相信您可以将CommandType设置为Text,并将您想要的语句(EXECUTE SPName '0068', 40 WITH RECOMPILE)完全放入CommandText。

然而,真正的问题是为什么WITH RECOMPILE,因为它会在每次执行时重新编译过程中的所有查询?检查执行计划并尝试识别可从重新编译中受益的单个语句。然后仅对这些查询使用OPTION(RECOMPILE)提示。