Выполнение запроса после выполнения задания sql

#sql #sql-server #reporting-services

#sql #sql-сервер #службы отчетов

Вопрос:

Я пишу хранимую процедуру для отчета в SSRS.

Моя проблема в том, что мне нужно вызвать задание SQL для обновления таблицы перед выбором ее записи.

В настоящее время я использую этот скрипт:

 DECLARE @FromDate       DATETIME
       ,@ToDate         DATETIME
       ,@MID            VARCHAR(MAX)

SELECT @FromDate        = '2014-06-13 00:00:00';
SELECT @ToDate          = '2014-06-13 00:00:00';
SELECT @MID             = 'PHP';    

DECLARE @SQLConnect NVARCHAR(500)

SET @SQLConnect = 'SELECT * FROM OPENQUERY([149.122.30.68,52900], ''[REZ5JWB01].[dbo].[ACCOUNTING_SummaryOfRegularRefunds] ''''' CONVERT(NVARCHAR,@FromDate) ''''',''''' CONVERT(NVARCHAR,@ToDate) ''''',' CONVERT(NVARCHAR,@MID) ''')'

BEGIN TRY DROP TABLE #SQLConnect END TRY BEGIN CATCH END CATCH;

CREATE TABLE #SQLConnect
(
    [TransactionDate]   [datetime]      NOT NULL,
    [RecordLocator]     [varchar](6)    NOT NULL,
    [PaymentID]         [bigint]        NOT NULL,
    [AccountNumberID]   [bigint]        NOT NULL,
    [AccountNumber]     [nvarchar](24)  NOT NULL,
    [PaymentAmount]     [money]         NOT NULL,
    [NetAmount]         [money]         NOT NULL
)

INSERT INTO #SQLConnect
EXEC (@SQLConnect)

INSERT INTO CyberSourceFileUpload.dbo.RefundTransactionDetail
SELECT [TransactionDate]
    ,[RecordLocator]
    ,[PaymentID]
    ,[AccountNumberID]
    ,[AccountNumber]
    ,NULL
    ,[PaymentAmount]
    ,[NetAmount]
FROM #SQLConnect

BEGIN TRY DROP TABLE #SQLConnect END TRY BEGIN CATCH END CATCH;

EXEC msdb.dbo.sp_start_job  @job_name = 'Regular Refunds for Manual Processing'

DECLARE @job_status INT
SELECT @job_status = current_execution_status FROM OPENROWSET('SQLNCLI', 'Server=.;Trusted_Connection=yes;','exec msdb.dbo.sp_help_job @job_name = ''Regular Refunds for Manual Processing''')

WHILE @job_status <> 1
BEGIN
    WAITFOR DELAY '00:00:10'
    SELECT @job_status = current_execution_status FROM OPENROWSET('SQLNCLI', 'Server=.;Trusted_Connection=yes;','exec msdb.dbo.sp_help_job @job_name = ''Regular Refunds for Manual Processing''')
END 

SELECT * FROM CyberSourceFileUpload.dbo.RefundTransactionDetail
  

Кто-нибудь, пожалуйста, может мне помочь?

Комментарии:

1. Что происходит при запуске представленного вами кода?

Ответ №1:

Вы можете использовать sp_start_job для запуска своего задания из кода.

Следующая ссылка поможет вам использовать sp_start_job :

sp_start_job (Transact-SQL)

Различные способы выполнения задания агента SQL