Ответ 1
Я думаю, что немного фона будет полезно понять концепцию Parameter. Здесь я объясню это в контексте сравнения с переменными. Чтобы полностью понять концепцию Parameter, вам может потребоваться найти новую модель развертывания проекта, среду, конфигурацию сборки.
Использование переменной
С SSIS до 2012 года, если нам нужно передать любые внешние значения в пакет перед выполнением (как и все мы делаем все время), я обычно использую файл конфигурации (или пару других способов). Скажем, у нас есть файловый сервер, который будет использоваться для доступа к общему файлу, я буду использовать переменную для хранения имени сервера и выставить эту переменную в файл конфигурации. Если фактический файловый сервер изменен (dev env для проверки env и т.д.), Нам просто нужно изменить значение этой переменной в файле конфигурации, а пакет SSIS останется нетронутым.
Все выглядело хорошо, но есть пара вещей, которые я всегда задаю себе, почему и не мог понять, почему:
-
В 100% случаев, когда я подвергаю переменные конфигурационному файлу, я просто раскрываю свойства "Значение". Почему SSIS позволяет выставлять все другие свойства переменной?
-
Почему SSIS не имеет переменной "private"? Под "private" я имею в виду, когда я выбрал переменные для настройки, "private" только не отображались в списке выбора. У пакета SSIS могут быть десятки переменных, для внутренних держателей стоимости, какой смысл их раскрывать? Почему мне приходится прокручивать весь путь, чтобы найти единственный, который мне нужно выставить?
Новая модель развертывания проекта
В SSIS 2012 представлена новая модель развертывания, модель развертывания проекта. Короче говоря, эта модель развертывает проект SSIS как единое целое для каталога SSIS SQL Server, а конфигурация пакета НЕ доступна в этой модели (она доступна в старой модели, на которую ссылается модель развертывания пакета, с SSIS 2012 вы можете выбрать, какой из них использовать, 2012 по умолчанию для новой модели).
Если мы хотим передать некоторые значения в пакеты SSIS, мы должны передать их через Параметры и использовать SSIS-каталог в SSMS для настройки значения параметров (только значение, ничего другого, что мы можем настроить). Параметры и диспетчеры подключений автоматически отображаются в каталоге SSIS, который может быть настроен, ничто ранее недоступное через конфигурационные файлы не может быть настроено в модели развертывания проекта (мир намного чище). Внутри пакета SSIS параметры могут использоваться так же, как переменные с точки зрения создания выражений. Однако параметры не могут быть изменены в пакете SSIS, что имеет смысл. (Почему нам нужно изменить значение, которое передается из внешнего? Если нужно, передайте значение переменной и сделайте там изменения..)
Сумма вверх
Параметр доступен только в модели развертывания проекта, и он обеспечивает единственный механизм передачи значений из внешних пакетов SSIS в этой модели. Если мы считаем, что SSIS pacakge как класс OO, параметры можно рассматривать как общедоступные свойства, которые внешние могут получать и присваивать ему значение (сам класс может/будет использовать его, но не может его изменить). Если переменные можно рассматривать как частные переменные, которые используются внутри страны, внешний мир не должен знать об этом.
Для старой модели развертывания пакетов нет параметра, и мир остается тем же.