无法在SSIS中正确地传输数据

时间:2013-08-30 13:06:06

标签: ssis bids

我遇到一些问题让我的数据流做我想做的事。

我正在使用OLEDB源来调用使用表变量的存储过程来向我显示我需要使用的数据。 它看起来像这样:

ClientID    TimeStamp            IsStart
pic@psdfj   2013-08-28 14:22:59     1
bsd@fjskk   2013-08-28 14:43:21     1
pic@psdfj   2013-08-28 15:23:01     0
..and so on

我需要创建两个新列,一个带有时间戳,另一个带有IsStart列。 (我正在跟踪用户何时在线并捕获时间戳。) 所以我的SQL Server数据库中有一个名为tblUserUsage的空表,其中包含以下列:

tblUserUsage (example of what the data would look like)
TimeStamp           NumberOfUsers
2013-08-28 14:22:59       1
2013-08-28 14:43:21       2
2013-08-28 15:23:01       1

我在将数据流输出到这些列时遇到问题。现在我将storedprocedure调用连接到派生列,然后连接到脚本。但这不起作用,因为当我创建输出列时,它不会让我输出到脚本中的outputbuffer。只是为了澄清 - 脚本将在VB.NET中

这是我的脚本到目前为止的样子。我在输出中添加了NumberOfUsers列。但我仍然没有Output0buffer Picture of Code

有人有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您只需在代码中为异步转换生成一个OutputBuffer(其中一个或多个输出的SynchronousInputID属性设置为零)。对于同步转换,输出列将位于InputBuffer中。

比较MSDN文章Creating an Asynchronous Transformation with the Script ComponentCreating a Synchronous Transformation with the Script Component

答案 1 :(得分:1)

您是否像这样在输出中添加了一列?

enter image description here

然后你的输出缓冲区看起来像这样:

  

TableOutputBuffer.OutputColumnName =“hello”;

看一下这个样本我发现here并且可能将它与你的代码进行比较..我通常用c#写我的脚本所以我可以告诉你,如果你遗漏了任何东西,但值得一试。

    Public Class ScriptMain
Inherits UserComponent

Dim connMgr As IDTSConnectionManager100
Dim sqlConn As SqlConnection
Dim sqlReader As SqlDataReader

Public Overrides Sub AcquireConnections(ByVal Transaction As Object)

    connMgr = Me.Connections.MyADONETConnection
    sqlConn = CType(connMgr.AcquireConnection(Nothing), SqlConnection)

End Sub

Public Overrides Sub PreExecute()

    Dim cmd As New SqlCommand("SELECT AddressID, City, StateProvinceID FROM Person.Address", sqlConn)
    sqlReader = cmd.ExecuteReader

End Sub

Public Overrides Sub CreateNewOutputRows()

    Do While sqlReader.Read
        With MyAddressOutputBuffer
            .AddRow()
            .AddressID = sqlReader.GetInt32(0)
            .City = sqlReader.GetString(1)
        End With
    Loop

End Sub

Public Overrides Sub PostExecute()

    sqlReader.Close()

End Sub

Public Overrides Sub ReleaseConnections()

    connMgr.ReleaseConnection(sqlConn)

End Sub

End Class