Я не уверен, что следующий параметр будет работать в задаче веб-службы, но вы можете попробовать его.
Я думаю, что описанная вами проблема связана с ограничением в SSIS при назначении числового значенияв переменную пакета служб SSIS типа данных Double
.Отправьте эту ссылку на MSDN Connect, где сообщалось об этой проблеме.
Вот простой пошаговый пример, иллюстрирующий вариант, который вы можете попробовать.Этот пример был создан в SSIS 2008 R2
.
Создание пакета служб SSIS.В начале я назвал пакет в формате YYYYMMDD_hhmm, после которого SO означает переполнение стека, затем идентификатор вопроса SO и, наконец, описание.Это для меня, чтобы легко отослать это позже.См. Снимок экрана # 1 .
. В пакете создайте две переменные, а именно StringValue
и DoubleValue
.Установите переменную StringValue в числовое значение (скажем, 0 ).Это необходимо, чтобы выражение, которое мы собираемся настроить в переменной DoubleValue, не выдавало ошибку.Выберите переменную DouleValue и нажмите F4 , чтобы просмотреть свойства.Установите для свойства EvaluateAsExpression значение True
и установите для свойства Expression значение (DT_DECIMAL, 2) @[User::StringValue]
NOTE:
. В этот момент тип данных в переменной DoubleValue изменится. Ячейка не является строкой. См. снимки экрана # 2 и # 3 .
В пакете создайте диспетчер соединений OLE DB длянекоторая база данных SQL Server.Я создал соединение с базой данных Adventure Works, которая у меня есть на моем локальном компьютере.См. Снимок экрана # 4 .
На вкладке «Поток управления» поместите Execute SQL Task
и настройте его, как показано на снимках экрана # 5 и # 6 .Дважды щелкните на задаче «Выполнение SQL», чтобы вызвать редактор задач «Выполнение SQL».Установите ResultSet равным SingleRow
, потому что мы будем выбирать только одно значение.Установите строку подключения в диспетчере соединений OLE DB.Оператор SQL должен быть установлен на SELECT CAST('3.14' AS NUMERIC(10,2)) AS ValueOfPi
.В качестве набора результатов должна быть задана переменная StringValue
.
. На вкладке Поток управления поместите Script Task
после задачи «Выполнение SQL».Эта задача сценария просто показывает значение, которое будет присвоено переменной DoubleValue из-за выражения, которое мы только что настроили.Дважды щелкните «Задача сценария», чтобы вызвать редактор задач сценария.Нажмите кнопку Редактировать скрипт ... , чтобы вызвать редактор VSTA.Замените метод Main () кодом, приведенным в разделе «Код задачи скрипта».Смотрите скриншоты # 7 и # 8 .
Выполните пакет.Значение в переменной DoubleValue должно отображаться в окне сообщения.Смотрите скриншот # 9 .
Надеюсь, это поможет.
Код задачи скрипта:
C # код, который можно использовать только в SSIS 2008 and above
.
public void Main()
{
Variables varCollection = null;
Dts.VariableDispenser.LockForWrite("User::DoubleValue");
Dts.VariableDispenser.GetVariables(ref varCollection);
MessageBox.Show(varCollection["User::DoubleValue"].Value.ToString());
Dts.TaskResult = (int)ScriptResults.Success;
}
Скриншоты:
# 1:
# 2:
# 3:
# 4:
# 5:
# 6:
# 7:
# 8:
# 9: