創建SQL作業錯誤的解決方法(不能將值 NULL 插入列 'owner_sid',表 'msdb.dbo.sysjobs';列不允許有空值。)


在用SQL語句創建SQL Server作業時有時出現如下錯誤:

 

  1. 消息 515,級別 16,狀態 2,過程 sp_add_job,第 137 行
  2. 不能將值 NULL 插入列 'owner_sid',表 'msdb.dbo.sysjobs';列不允許有空值。INSERT 失敗。
  3. 語句已終止。

 這可能與為作業創建的數據庫登錄ID有關,這個登錄ID需要是數據庫的所有者(我的是sa),因此將

  1. @owner_login_name=N'HYSERITC003/wellcomm',
  2. 中的N'HYSERITC003/wellcomm'改為數據庫的所有者,如sa就可以了。
    1. USE [msdb]
    2. GO
    3. /****** 對象:  Job [24日SOX催辦]    腳本日期: 11/25/2008 09:40:05 ******/
    4. BEGIN TRANSACTION
    5. DECLARE @ReturnCode INT
    6. SELECT @ReturnCode = 0
    7. /****** 對象:  JobCategory [[Uncategorized (Local)]]]    腳本日期: 11/25/2008 09:40:06 ******/
    8. IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
    9. BEGIN
    10. EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
    11. IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    12. END
    13. DECLARE @jobId BINARY(16)
    14. EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N'24日SOX催辦', 
    15.         @enabled=1, 
    16.         @notify_level_eventlog=0, 
    17.         @notify_level_email=0, 
    18.         @notify_level_netsend=0, 
    19.         @notify_level_page=0, 
    20.         @delete_level=0, 
    21.         @description=N'24日控制點負責人沒填報控制點信息,短信催辦。', 
    22.         @category_name=N'[Uncategorized (Local)]', 
    23.         @owner_login_name=N'HYSERITC003/wellcomm',   --'HYSERITC003/wellcomm'改為‘sa’。
    24.         @job_id = @jobId OUTPUT
    25. IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    26. /****** 對象:  Step [24日催辦]    腳本日期: 11/25/2008 09:40:07 ******/
    27. EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'24日催辦', 
    28.         @step_id=1, 
    29.         @cmdexec_success_code=0, 
    30.         @on_success_action=1, 
    31.         @on_success_step_id=0, 
    32.         @on_fail_action=2, 
    33.         @on_fail_step_id=0, 
    34.         @retry_attempts=0, 
    35.         @retry_interval=0, 
    36.         @os_run_priority=0, @subsystem=N'TSQL', 
    37.         @command=N'-------【SOX】24號早上執行,短信催辦控制點填報--------
    38. declare @Principal varchar(50)
    39. if exists (select distinct Principal from T_SOX where AuditingStatus<1 and Convert(varchar(7),writetime,120)=Convert(varchar(7),getdate(),120))
    40.  declare cur_principal cursor for select distinct Principal from T_SOX where AuditingStatus<1 and Convert(varchar(7),writetime,120)=Convert(varchar(7),getdate(),120)
    41.  open cur_principal
    42.  fetch next from cur_principal into @Principal
    43.  while (@@FETCH_STATUS =0)
    44.  begin
    45.     declare @uid varchar(50)
    46.     select @uid=USER_ID From T_USER Where FULL_NAME=@Principal
    47.     insert into t_sms_interface(wf_id,wfi_id,form_id,serial_no,receive_user_id,sms_content,create_time)
    48.     values(''0'',''1'',''SOX控制點填報'',''1'',@uid,''今天是24號了,請到業務管理系統填寫SOX控制點信息。謝謝。'',getdate())
    49.  fetch next from cur_principal into @Principal
    50.  end
    51.  close cur_principal
    52.  deallocate cur_principal
    53. ----------------------------------------------', 
    54.         @database_name=N'hyBizAs', 
    55.         @flags=0
    56. IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    57. EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
    58. IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    59. EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'24日早上8點執行', 
    60.         @enabled=1, 
    61.         @freq_type=16, 
    62.         @freq_interval=24, 
    63.         @freq_subday_type=1, 
    64.         @freq_subday_interval=0, 
    65.         @freq_relative_interval=0, 
    66.         @freq_recurrence_factor=1, 
    67.         @active_start_date=20080728, 
    68.         @active_end_date=99991231, 
    69.         @active_start_time=80000, 
    70.         @active_end_time=235959
    71. IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    72. EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
    73. IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    74. COMMIT TRANSACTION
    75. GOTO EndSave
    76. QuitWithRollback:
    77.     IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
    78. EndSave:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM