2

У меня есть хранимая процедура в базе данных SQL Server 2008, которая возвращает набор значений, выведенных из разных таблиц, таких как следующее. Я запускаю хранимую процедуру, как показано ниже, без каких-либо параметров.Как использовать результаты хранимой процедуры SQL Server (запланированной для запуска в неделю) для изменения данных во времени?

EXEC [Data].[dbo].[sp_Usage] 

Каждая строка показывает данные об использовании продукта, такие как

  • Последний вошедший
  • No.of времен использовали в прошлом месяце
  • последние 3 месяца
  • последние 6 месяцев
  • App Версия

для каждого уникального AccountId

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

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

Как выполнить этот план?

Любая помощь или руководство будет оценено

Ура! Shiny

ответ

3

Таким образом, ваша хранимая процедура, предположительно, содержит внутри нее SELECT (list of columns) ....., верно?

Почему бы не изменить, что-то вроде:

INSERT INTO dbo.YourBigTable(ExecutionDateTime, ...other columns here.....) 
    SELECT 
     GETDATE(), -- get current date/time 
     (list of other columns) 
    FROM ....... 

Просто в основном делают хранимая процедура запуска INSERT в вашу целевую таблицу непосредственно. Казалось бы, это самый простой способ перейти с моей точки зрения.

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

+0

Спасибо за начальную мысль. Но не могли бы вы рассказать, как структурировать YourBigTable, то есть таблицу назначения, которая содержит другую таблицу (результат хранимой процедуры)? – Shiny

+0

@Shiny: ну, эта целевая таблица должна содержать все столбцы, которые вы хотите отслеживать, плюс дата/метка времени, когда данные были определены. –