Создание нескольких задач SQL в SQL Server 2005

У меня есть несколько сохраненных процессов, которые я хотел бы запускать одновременно на сервере. В идеале все на сервере, без подключения к внешнему клиенту.

Какие есть варианты, чтобы запустить все это и запустить их одновременно (мне даже не нужно ждать, пока все процессы будут выполнены, чтобы выполнить дополнительную работу)?

Я подумал о:

  • Запуск нескольких подключений из клиент, каждый запускающий соответствующий ИП.
  • Создание рабочих мест для каждый SP и запуск работы с Подключение к SQL Server или SP.
  • С использованием xp_cmdshell для запуска дополнительных запусков эквивалент osql или где угодно
  • SSIS - мне нужно посмотреть, можно ли динамически записать пакет для обработки большего количества SP, потому что я не уверен, какой объем доступа мои клиенты получат в производственной среде.

В случаях с заданиями и cmdshell я, вероятно, столкнусь с проблемами уровня разрешений от администратора базы данных ...

SSIS может быть хорошим вариантом - если я могу вести список SP по таблице.

Это ситуация с хранилищем данных, и работа в значительной степени независима, и NOLOCK повсеместно используется на звездах. Система представляет собой 8-процессорный компьютер емкостью 32 ГБ, поэтому я собираюсь загрузить ее и уменьшить масштаб, если увижу проблемы.

У меня в основном три слоя, уровень 1 имеет небольшое количество процессов и зависит в основном от всех фактов / измерений, которые уже загружены (эффективно, звезды - это уровень 0 - и да, к сожалению, все они должны быть загружены), слой 2 имеет ряд процессов, которые зависят от части или всего уровня 1, а уровень 3 имеет ряд процессов, которые зависят от части или всего уровня 2. У меня уже есть зависимости в таблице, и я бы только сначала запустил все обрабатывается в определенном слое одновременно, поскольку они ортогональны внутри слоя.

Без динамической сборки пакета на C# вам, возможно, придется сделать что-то вроде хака конфигурации таблицы, который включает в себя предварительное определение уровня параллелизма и принудительное выполнение определенных процессов в одном из «потоков» задачи SQL Execute в вашем пакете pckg. . надеюсь, что это имеет смысл ... напишите мне, если это не так ...

Codewerks 03.10.2008 03:47

Да, большая часть архитектуры будет определяться соглашениями банка, и я могу создавать пакеты динамически (с некоторым с трудом приобретенным опытом), но нам просто нужно посмотреть. Я даже не уверен, что они включат CLR.

Cade Roux 03.10.2008 06:51
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
2
1 043
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Подходит ли вам SSIS? Вы можете создать простой пакет с параллельными задачами Execute SQL для одновременного выполнения сохраненных процессов. Однако, в зависимости от того, что делают ваши сохраненные процессы, вы можете или не можете получить выгоду от запуска этого параллельно (например, если все они обращаются к одним и тем же записям таблицы, возможно, придется подождать, пока будут сняты блокировки и т. д.)

SSIS может быть хорошим вариантом - если я могу вести список SP, потому что я не уверен, какой объем доступа мои клиенты получат в производственной среде. Это ситуация с хранилищем данных, и работа в значительной степени независима, и NOLOCK повсеместно используется на звездах. Система представляет собой 8-стороннюю машину емкостью 32 ГБ

Cade Roux 02.10.2008 19:25

В какой-то момент я провел некоторую архитектурную работу над продуктом, известным как Проницательность, у которого есть менеджер склада, который это делает.

Основная стратегия для этого - иметь управляющую БД со списком sprocs и их зависимостей. В зависимости от зависимостей вы можете выполнить Топологическая сортировка, чтобы дать им приказ об исполнении. Если вы это сделаете, вам нужно будет управлять зависимостями - все предшественники хранимой процедуры должны завершиться до ее выполнения. Простой запуск sprocs по порядку в нескольких потоках не выполнит этого сам по себе.

Реализация этого означала отказ от большинства функций SSIS и внедрение другого планировщика. Это нормально для продукта, но, вероятно, перебор для индивидуальной системы. Таким образом, более простое решение:

Вы можете управлять зависимостями на более крупном уровне, организовав ETL вертикально по измерениям (иногда называемым Предметно-ориентированный ETL), где один пакет SSIS и набор sprocs переносят данные от извлечения до создания измерений или таблиц фактов. Обычно размеры в основном разрознены, поэтому взаимозависимость минимальна. Там, где есть взаимозависимость, сделайте процесс загрузки одного измерения (или таблицы фактов) зависимым от того, что ему нужно в восходящем направлении.

Каждый загрузчик становится относительно модульным, и вы по-прежнему получаете полезную степень параллелизма, запуская процессы загрузки параллельно и позволяя планировщику SSIS работать над этим. Зависимости будут содержать некоторую избыточность. Например, таблица ODS может не зависеть от завершения загрузки измерения, но сам восходящий пакет переносит компоненты прямо в схему измерений до ее завершения. Однако на практике это маловероятно по следующим причинам:

  • В процессе загрузки, вероятно, есть много других задач, которые можно выполнить за это время.
  • Наиболее ресурсоемкими задачами почти наверняка будет загрузка таблицы фактов, которая в большинстве случаев не будет зависеть друг от друга. Там, где есть зависимость (например, сводная таблица на основе содержимого другой таблицы), этого в любом случае нельзя избежать.

Вы можете создать пакеты SSIS, чтобы они получали всю свою конфигурацию из XML-файла, а местоположение можно было указать извне в переменной среды. Подобные вещи довольно легко реализовать с помощью таких систем планирования, как Control-M. Это означает, что модифицированный пакет SSIS можно развернуть с относительно небольшим вмешательством вручную. Производственный персонал может получать пакеты для развертывания вместе с хранимыми процедурами и может поддерживать файлы конфигурации для каждой среды без необходимости вручную настраивать пакеты SSIS.

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

ConcernedOfTunbridgeWells 03.10.2008 20:19

вы можете захотеть взглянуть на сервис-брокер и его хранимые процедуры активации ... может быть вариантом ...

Я обязательно добавлю это как вариант.

Cade Roux 06.10.2008 04:15
Ответ принят как подходящий

В конце концов, я создал программу консоли управления C#, которая запускает процессы Async, поскольку они могут быть запущены, и отслеживает соединения.

Другие вопросы по теме