Как регулярно обновлять или создавать SQL серверную таблицу? - PullRequest
0 голосов
/ 28 января 2020

Мне нужно собрать данные из таблицы SQL Server, отформатировать и затем поместить их в другую таблицу.

У меня есть доступ к SQL Серверу, но я не могу настроить триггеры или запланированные задания.

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

Что я могу настроить, чтобы автоматически собирать данные и вставлять их в SQL таблицу сервера для меня?

Ответы [ 4 ]

2 голосов
/ 28 января 2020

Я бы, вероятно, создал бы хранимую процедуру для выполнения этой задачи.

В хранимой процедуре вы можете создать CTE или использовать временные таблицы (в зависимости от задачи) и выполнить все необходимые вам манипуляции с данными, и один раз. Готово, вы можете использовать оператор SELECT INTO для перемещения всех данных из временной таблицы в нужную таблицу SQL Server.

https://www.w3schools.com/sql/sql_select_into.asp

Затем вы можете запланировать выполнение этой хранимой процедуры в желаемое вами время

1 голос
/ 28 января 2020

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

Когда вы начинаете говорить об автоматизации процесса, вы говорите о функции программы-планировщика. SQL Сервер имеет одного встроенного агента SQL, и в зависимости от ваших потребностей вы можете найти, что следует обратиться за помощью к тому, кто в вашей организации имеет к нему доступ. Однако я работал в нескольких организациях, которые использовали только агент SQL для планирования заданий обслуживания, в то время как задания по обработке данных планировались через внешний ресурс. Самый распространенный, с которым я столкнулся, это Control-M, но на этом рынке есть и другие игроки. Я даже наткнулся на один самодельный протокол планировщика, который был только что встроен в C#. NET, который отлично работал.

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

0 голосов
/ 28 января 2020

Я делал такой подход в прошлом, и он отлично работал. Обратите внимание, что по соображениям безопасности я не могу получить доступ к планировщику задач удаленного сервера, поэтому я go через SQL Агент сервера:

  • Запустите SQL Агент сервера по расписанию по вашему выбору
  • Используйте серверный агент SQL для вызова пакета служб SSIS
  • Затем пакет служб SSIS вызывает исполняемый файл, который может вытянуть данные из исходной таблицы, которые вы хотите, оцените, а затем вставьте отформатированную версию по одной записи за раз. Кроме того, вы можете просто создать сценарий C# в пакете служб SSIS с помощью Задача сценария .

Надеюсь, это поможет. Пожалуйста, дайте мне знать, если вам нужно больше деталей.

0 голосов
/ 28 января 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...