【问题标题】:executing sql inside ssis script task is not working在 ssis 脚本任务中执行 sql 不起作用
【发布时间】:2013-08-08 14:34:09
【问题描述】:

尝试在vb.net中执行sql语句(脚本任务ssis)。为此创建了连接,请求打开连接并执行并关闭(如下代码所示)。变量的值(包含sql 结果集)必须返回正确的计数,而不是一直返回 -1 ......知道你这样做了吗?似乎是查询没有执行?

如何使用下面的 vb 代码获取正确的计数值(请查看) 在 ssis 脚本任务中?

Public Sub Main()

    Dim fireAgain As Boolean = True
    Dim rowsAffected As Integer

    Dim sqlConn As System.Data.SqlClient.SqlConnection
    Dim sqlComm As System.Data.SqlClient.SqlCommand


    Dim cm As ConnectionManager = Dts.Connections("cnn") ''Retrive the reference to the managed Connections

    '' Request an open connection
    sqlConn = cm.AcquireConnection(Dts.Transaction)
    Dts.Events.FireInformation(0, "", "Connection is: " + sqlConn.State.ToString(), "", 0, fireAgain)

    ''Do your work

    sqlComm = New System.Data.SqlClient.SqlCommand("SELECT COUNT(*) AS CNT  FROM [Table_1]", sqlConn)
    rowsAffected = sqlComm.ExecuteNonQuery()

    MsgBox(rowsAffected.ToString())  '''' the value of variable is -1 ???

    ''Inform SSIS you're done your work
    cm.ReleaseConnection(sqlConn)

    Dts.Events.FireInformation(0, "", rowsAffected.ToString() + " rows updated.", "", 0, fireAgain)



End Sub

谢谢

【问题讨论】:

    标签: vb.net visual-studio-2010 sql-server-2008 ado.net ssis


    【解决方案1】:

    当您使用ExecuteNonQuery 时,您的意思是您不需要从查询中返回任何结果。

    要从查询中读取结果,请使用ExecuteScalar

    http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar.aspx

    如果您的查询返回多个单元格,请使用ExecuteReaderSQLDataReader 对象:

    http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.aspx

    【讨论】:

      【解决方案2】:

      ExecuteNonQuery 返回查询受影响的行数。对于 COUNT 函数,它总是返回 -1。

      对于您要实现的目标,您应该使用sqlComm.ExecuteScalar(),它返回结果集中第一行/列的值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-25
        • 2021-07-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多