Я использую SSIS в BIDS 2008, и я пытаюсь получить счет Object Variable, содержащий список файлов. Любая идея о том, как это сделать?SSIS Count of Object Variable?
Спасибо!
Я использую SSIS в BIDS 2008, и я пытаюсь получить счет Object Variable, содержащий список файлов. Любая идея о том, как это сделать?SSIS Count of Object Variable?
Спасибо!
Как вы заполняете эту переменную объекта? В зависимости от того, как вы заполняете переменную, можно указать более подходящие способы получения счета. Однако, здесь это быстрый и грязный раствор для вас:
Collections
и изменить Enumerator к Foreach ADO Enumerator
и переменную исходного объекта ADO к переменной объекта.Execute SQL Task
SELECT (@Count + 1)
Parameter Name
на @CountКак только ваш цикл завершен, у вас будет счет объекта.
ПРИМЕЧАНИЕ. Если вы уже итерируете эти файлы (я полагаю, что с тех пор, как вы используете SSIS для заполнения переменной Object с помощью имен файлов), вам нужно выполнить только шаги 1, 3-6.
Звучит здорово, вот чего я боялся. Я хочу, чтобы во время отладки вы могли видеть значения, которые содержит объект, и просто сделать Object.Count. Благодаря! – buzzzzjay
Есть ли причина, по которой вы не просто используете задачу сценария?
Учитывая две переменные SSIS, MyObject (Тип объекта) и MyObjectCount (Int32) установлено равным 10.
задачи Сценарий 1 заполняет объект.
// Nothing clever, just fills a List<T> with
// MyObjectCount's worth of values.
public void Main()
{
int count = (Int32)Dts.Variables["User::MyObjectCount"].Value;
List<bool> obj = new List<bool>();
for (int i = 0; i < count; i++)
{
obj.Add(false);
}
Dts.Variables["User::MyObject"].Value = obj;
Dts.TaskResult = (int)ScriptResults.Success;
}
задача Script 2 просто присваивает значение переменной MyObject SSIS в локальную переменную, которую я бросил в соответствующий тип. Я сравниваю это число с моим подсчетом ссылок, и они одинаковы.
public void Main()
{
int refCount = (Int32)Dts.Variables["User::MyObjectCount"].Value;
List<bool> obj = Dts.Variables["User::MyObject"].Value as List<bool>;
int actualCount = obj.Count;
string message = string.Format("Reference count: {0}. Actual count {1}", refCount, actualCount);
bool fireAgain = false;
Dts.Events.FireInformation(0, "Accessing count", message, string.Empty, 0, ref fireAgain);
Dts.TaskResult = (int)ScriptResults.Success; Dts.TaskResult = (int)ScriptResults.Success;
}
Результаты
[Доступ к числу] Информация: Счетчик ссылок: 10. Фактическое количество 10
Если вы не ответственны за то, что толкает объект в переменную SSIS, то вам, возможно, потребуется чтобы обернуть вышеупомянутые экстракции в серию блоков try/catch или применить их как тип, пока не найдете что-то, что время выполнения может преобразовать в строго типизированный объект.
Переменная типа SSIS Объекту присвоено то, что предоставляет свойство Count, и вы хотели бы получить это значение? – billinkc
Да, я хотел бы получить эту ценность, но я не могу понять, как это сделать. – buzzzzjay