none
Адаптация скрипта SQL Server 2008 под 2005 RRS feed

  • Вопрос

  • Всем привет,

    С толкнулся с проблемой. Есть написанный скрипт под SQL Server 2008, который не запускается под 2005 с ошибкой:
    schedule_uid is not a parameter for procedure sp_add_jobschedule.

    Код скрипта:

    USE [msdb]
    GO
    
    /****** Object:  Job [Export PPBR]    Script Date: 09/27/2016 17:17:04 ******/
    BEGIN TRANSACTION
    DECLARE @ReturnCode INT
    SELECT @ReturnCode = 0
    /****** Object:  JobCategory [[Uncategorized (Local)]]]    Script Date: 09/27/2016 17:17:05 ******/
    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'Export PPBR', 
    		@enabled=1, 
    		@notify_level_eventlog=0, 
    		@notify_level_email=0, 
    		@notify_level_netsend=0, 
    		@notify_level_page=0, 
    		@delete_level=0, 
    		@description=N'Повторная выгрузка ППБР на следующие сутки из КИСУ после прихода ПБР-24.', 
    		@category_name=N'[Uncategorized (Local)]', 
    		@owner_login_name=N'dter', @job_id = @jobId OUTPUT
    IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    /****** Object:  Step [Выгрузка ППБР]    Script Date: 09/27/2016 17:17:05 ******/
    EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Выгрузка ППБР', 
    		@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'declare @d datetime
    SELECT @d = DATEADD(hour, 2,  DATEADD(minute, DATEDIFF(minute, GETDATE(), GETUTCDATE()), DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))))
    update PlanVersions
    set type = type
    where day = @d and type = 0', 
    		@database_name=N'm53500', 
    		@flags=4
    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'Между ПБР-24 и ПБР-1', 
    		@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=20160928, 
    		@active_end_date=99991231, 
    		@active_start_time=11000, 
    		@active_end_time=235959, 
    		@schedule_uid=N'92bf3473-5360-4e91-8c9f-2a18393be880'
    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:
    
    GO
    Собственно вопрос: как правильно изменить @schedule_uid на @schedule_id?

    21 октября 2016 г. 5:20

Ответы