Какие варианты у меня есть для межпроцессного взаимодействия служб SSIS? - PullRequest
2 голосов
/ 03 марта 2011

Я хотел бы сохранить целочисленную переменную, которая увеличивается и уменьшается (семафор подсчета для ограничения одновременных запросов внешним API).Это было бы легко, за исключением того, что мне нужен способ чтения / записи этой переменной из пакета служб SSIS, который выполняется в параллельных заданиях агента SQL.В настоящий момент может быть от 0 до 5 экземпляров задания агента SQL, и, следовательно, пакет SSIS, работающий сразу.

Какие у меня есть варианты для чтения и записи этой переменной?Код, который будет использовать эту переменную, написан как пользовательская задача SSIS в .NET.

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

У меня есть доступ к файловой системе, реестру, базе данных, серверу и агенту SSIS в целом, но я бы очень часто хотел проверить эту переменную на 15-30 потоков, которые исторически вызывали проблемы с использованием метода файловой системы (я, вероятно, делаю это неправильно), и IMO слишком интенсивно, чтобы хранить в базе данных.Поправьте меня если я ошибаюсь.Хранение в реестре предотвращает доступ к переменной через ферму серверов.

Если есть кто-то, кто может помочь, я с радостью буду вашим заслуженным слугой.

Ответы [ 2 ]

1 голос
/ 13 марта 2011

Если он используется как счетчик семафоров, почему бы на самом деле не использовать объект семафора Windows? System.Threading.Semaphore - это версия .NET, и если вы укажете имя семафора в конструкторе, объект Win32 будет использоваться всеми процессами, использующими это имя.

0 голосов
/ 03 марта 2011

Не уверен, что я понимаю вопрос - вы указали, что имеете доступ к базе данных, файловой системе, реестру и т. Д. Вы говорите, что не хотите / не можете использовать эти методы?Вы хотите сохранить значение, чтобы в случае остановки компьютера вы могли его восстановить?

Если сохранение не требуется, вы можете сохранить в памяти через RPC, включая COM или веб-службы.Каким бы ни было решение, оно должно быть глобальным и видимым для всех работающих экземпляров.

Используются ли эти переменные метаданные в качестве семафора для управления и координации процессов, или это данные переменной области?

...