Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Не получается запустить подписку программно - серверу нужно время чтобы закончить работу  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1139
День добрый,
сделал отчет и подписку. Затем меняю параметры подписки программно и запускаю ее на выполнение.

Проблема:
- подписка запускается с разными параметрами за короткий промежуток времени. Сервер выполняет первый запрос, а дальше ругается:
Request to run job … (from User DOMAIN\usernam-e) refused because the job already has a pending request from User DOMAIN\usernam-e

Как бы это обойти?



Кодик:
	-- Открываем курсор для ID перевозчиков
	DECLARE trucker_id_cursor CURSOR FOR
	SELECT DISTINCT .... FROM MY_TABLE


	OPEN trucker_id_cursor;

	-- Выполняем первый поиск
	FETCH NEXT FROM trucker_id_cursor
	INTO @TRUCKER_ID, @TRUCKER_EMAIL;

	WHILE @@FETCH_STATUS = 0
	BEGIN


		-- Ставим ID перевозчика в отчет
		UPDATE ReportServer.dbo.Subscriptions SET Parameters = .....

		-- Ставим e-mail получателя
		UPDATE ReportServer.dbo.Subscriptions
		SET ExtensionSettings = ....


		-- Выполняем подписку немедленно
		exec msdb..sp_start_job @job_name = @MY_JOB_NAME;
	

	   FETCH NEXT FROM trucker_id_cursor
	   INTO @TRUCKER_ID, @TRUCKER_EMAIL;
	END


	-- Закрываем курсор
	CLOSE trucker_id_cursor;
	DEALLOCATE trucker_id_cursor;
23 апр 12, 14:59    [12457215]     Ответить | Цитировать Сообщить модератору
 Re: Не получается запустить подписку программно - серверу нужно время чтобы закончить работу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Gena928
Как бы это обойти?

Ждать пока job завершится.
23 апр 12, 15:01    [12457230]     Ответить | Цитировать Сообщить модератору
 Re: Не получается запустить подписку программно - серверу нужно время чтобы закончить работу  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1139
Glory
Ждать пока job завершится.


А программно "ждать" можно?
23 апр 12, 15:02    [12457235]     Ответить | Цитировать Сообщить модератору
 Re: Не получается запустить подписку программно - серверу нужно время чтобы закончить работу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Gena928
А программно "ждать" можно?

Написать такой код, который циклически будет проверять статус джоба.
23 апр 12, 15:04    [12457251]     Ответить | Цитировать Сообщить модератору
 Re: Не получается запустить подписку программно - серверу нужно время чтобы закончить работу  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1139
Glory
Написать такой код, который циклически будет проверять статус джоба.


А намек можно? )
23 апр 12, 15:14    [12457320]     Ответить | Цитировать Сообщить модератору
 Re: Не получается запустить подписку программно - серверу нужно время чтобы закончить работу  [new]
Ruiner
Member

Откуда: СПб
Сообщений: 66
Gena928
Glory
Ждать пока job завершится.


А программно "ждать" можно?


WHILE (1=1) BEGIN
   IF (NOT EXISTS (
      SELECT current_execution_status FROM OPENROWSET ('sqloledb', 'server=XXX;trusted_connection=yes', 'set fmtonly off EXEC MSDB.dbo.sp_help_job @job_name = ''YYYY'', @execution_status = 1')
   )) BREAK;
   WAITFOR DELAY '00:00:05'
END

попробуйте как-нибудь так.
но по-моему, вы что-то не то делаете ;) http://msdn.microsoft.com/ru-ru/library/ms159150(v=sql.105).aspx
23 апр 12, 15:17    [12457361]     Ответить | Цитировать Сообщить модератору
 Re: Не получается запустить подписку программно - серверу нужно время чтобы закончить работу  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1139
Ruiner,

ОК, спасибо.
23 апр 12, 15:24    [12457431]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить