2013-08-30 2 views
1

У меня возникли некоторые проблемы с получением потока данных, чтобы сделать то, что я хочу.Невозможно правильно передать данные в SSIS

Я использую источник OLEDB, который вызывает хранимую процедуру, которая использует переменную таблицы, чтобы показать мне данные, которые мне нужно использовать. Это выглядит следующим образом:

ClientID TimeStamp   IsStart 
[email protected] 2013-08-28 14:22:59  1 
[email protected] 2013-08-28 14:43:21  1 
[email protected] 2013-08-28 15:23:01  0 
..and so on 

Мне нужно создать два новых столбца, один с отметкой времени, а другой с колонной IsStart addded вверх. (Я отслеживание, когда пользователи в сети и захватывая метку времени.) Так что я в настоящее время пустой таблицы в моей БД 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, связанный с производным столбцом, а затем скриптом. Но это не работает, так как это не позволяет мне выводить на выходной буффер в скрипте, когда я создаю выходные столбцы. Только для уточнения - сценарий будет в VB.NET

Это то, что мой сценарий выглядит до сих пор. У меня есть столбец NumberOfUsers, добавленный к выходу. Но у меня еще нет Output0buffer Picture of Code

У кого-нибудь есть идеи?

+0

Можете ли вы разместить свой сценарий? если он слишком длинный, по крайней мере, после вывода. Это может дать нам представление о том, что происходит – TsSkTo

+0

У меня были некоторые базовые инструкции if, которые увеличивали бы количество часов, но по какой-то причине у меня нет выходного буфера? Я не уверен, почему, как в другой части пакета SSIS, у меня есть сценарий, и у меня есть выходной буфер. Но я этого не делаю. Я по существу просто беру временную метку и обновленное количество пользователей и помещаю их в таблицу в базе данных. – Nick

+0

Какой сценарий вы создаете? (источник, преобразование ...) Исходные сценарии, как я помню, не имеют выходных столбцов .. может быть, это все? – TsSkTo

ответ

2

Вы только получаете OUTPUTBUFFER генерируется в коде для асинхронных преобразований (где SynchronousInputID свойство одного или нескольких выходов устанавливается равным нулю). Для синхронных преобразований ваши выходные столбцы будут в InputBuffer.

Сравните статьи MSDN Creating an Asynchronous Transformation with the Script Component и Creating a Synchronous Transformation with the Script Component.

1

Вы добавили столбец на свой вывод, как это?

enter image description here

Тогда ваш выходной буфер будет выглядеть примерно так:

TableOutputBuffer.OutputColumnName = "привет";

Взгляните на этот пример я нашел 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 
+0

Да, я сделал TsSkTo. Я добавил имена выходных столбцов, но по какой-то причине в моем коде в буфере wrapper не создается Outputbuffer. Я не знаю, почему. Я несколько раз воссоздал свой сценарий, но безрезультатно. – Nick

+0

Чтобы ответить на ваш вопрос TsSkTo, в VB он немного отличается от того, что вам не нужно использовать SqlConnection или DataReader (возможно, именно так я уже подключил к нему данные в задаче потока данных), но код не генерирует Sub CreateNewOutputRows(), а также нет буфера вывода для столбцов, которые я создал на выходе. Я полностью тупик, поскольку у меня почти такой же скрипт в другом потоке данных в одном пакете, и он работает без каких-либо проблем. Поэтому я полностью в тупике. – Nick