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

Откуда:
Сообщений: 66
Мне необходимо чтобы приложение автоматически на сервере создавало задания. приложение работает чрез JDBC.
через MSSQL Studio я создал тестовове задание и получил некий скприпт для него
USE [msdb]
GO
/****** Объект:  Job [job2]    Дата сценария: 05/26/2009 09:48:15 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Объект:  JobCategory [[Uncategorized (Local)]]]    Дата сценария: 05/26/2009 09:48:15 ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

END

DECLARE @jobId BINARY(16)
EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N'job2', 
		@enabled=1, 
		@notify_level_eventlog=0, 
		@notify_level_email=0, 
		@notify_level_netsend=0, 
		@notify_level_page=0, 
		@delete_level=0, 
		@description=N'Описание недоступно.', 
		@category_name=N'[Uncategorized (Local)]', 
		@owner_login_name=N'orautil', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Объект:  Step [step1]    Дата сценария: 05/26/2009 09:48:15 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'step1', 
		@step_id=1, 
		@cmdexec_success_code=0, 
		@on_success_action=1, 
		@on_success_step_id=0, 
		@on_fail_action=2, 
		@on_fail_step_id=0, 
		@retry_attempts=0, 
		@retry_interval=0, 
		@os_run_priority=0, @subsystem=N'TSQL', 
		@command=N'select * from', 
		@database_name=N'lutek', 
		@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'ss', 
		@enabled=1, 
		@freq_type=4, 
		@freq_interval=1, 
		@freq_subday_type=1, 
		@freq_subday_interval=0, 
		@freq_relative_interval=0, 
		@freq_recurrence_factor=0, 
		@active_start_date=20090526, 
		@active_end_date=99991231, 
		@active_start_time=300, 
		@active_end_time=235959
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
    IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:


однако когда я пытаюсь исполнить это скрипт через свое приложение, мне выдается ошибка
Exception
com.microsoft.sqlserver.jdbc.SQLServerException: Неправильный синтаксис около конструкции "GO".


Подскажите как можно создать задание на сервере через запрос. что то мне кажется представленный способ не то что надо. Ведь наверняка это можно сделать намного проще.
26 май 09, 03:08    [7225995]     Ответить | Цитировать Сообщить модератору
 Re: Создать Job через запрос  [new]
lexusXXX
Member

Откуда: Krasnoyarsk
Сообщений: 63
может через процедуру, а ей передавать переменные
26 май 09, 05:16    [7226020]     Ответить | Цитировать Сообщить модератору
 Re: Создать Job через запрос  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Nauris Nicolas
однако когда я пытаюсь исполнить это скрипт через свое приложение, мне выдается ошибка
Exception
com.microsoft.sqlserver.jdbc.SQLServerException: Неправильный синтаксис около конструкции "GO".
Конструкция "GO" не является командой/инструкцией T-SQL, а является дерективой разделения пакетов в некоторых клиентских утилитах.
Чтобы ваш скрипт сработал - уберите из него конструкцию
USE [msdb]
GO
, в клиентском приложении создайте коннект к базе msdb и потом уже запускайте свой скрипт.
26 май 09, 06:28    [7226040]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить