К сожалению, нет. Невозможно назначить метод, такой как GETDATE(), для свойства value переменной datetime через экран Set Values задания SQL Agent. Значения полей должны быть установлены на дискретные значения.
Я могу придумать два пути.
Первый и самый простой вариант - это редактирование пакета. Откройте пакет с BIDS/SSDT, найдите эту переменную и установите для свойства «Оценить как выражение» эту переменную значение True. Затем в окне свойств этой переменной щелкните Эллипсис выражения ... и установите Expression равным GETDATE(). Сохраните пакет. Когда пакет запускается, эта переменная будет оцениваться с помощью GETDATE().
Второй способ занимает немного больше пота и имеет риски, но позволяет динамически устанавливать переменные пакета SSIS. Вместо использования SQL Server Job для вызова пакета. Запланированное задание, которое вызывает SP. Затем этот SP выполнит пакет SSIS, используя xp_cmdShell и инструмент командной строки DTEXEC.exe. Адрес example. Инструмент командной строки DTEXEC.EXE имеет аргумент/SET, который в основном делает то же самое, что и диалоговое окно «Установить значения». Но таким образом его динамика. Внутри SP вы можете
DECLARE @MyDate datetime
SET @MyDate = GETDATE()
Вам просто нужно получить значение @MyDate над к/SET аргумент DTExec.
Кроме того, вместо GETDATE() у вас также может быть параметр, который позволяет вам построить эту переменную date в командной строке из комбинации подстрок переменных окружения% DATE% и% TIME%.
set MyDate=%DATE:~10,4%-%DATE:~7,2%-%DATE:~4,2% %TIME:~0,8%
dtexec /FILE "\"D:\SSIS\Package1.dtsx\"" /SET "\"\Package.Variables[VarDateTime].Value\"";"\"%MyDate%\""
Примером этого является более here.
Очевидно, что вариант один проще и менее рискован. Удачи!
Может ли пакет SSIS не просто разрабатывать текущую дату для себя? –
Да ... это был плохой пример. В более общем смысле, может ли «Задать значения» оценивать утверждения, переданные в них, или это должны быть жестко закодированные строки/ints? – Solaxun