创建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:

你可能感兴趣的:(创建SQL作业错误的解决方法(不能将值 NULL 插入列 'owner_sid',表 'msdb.dbo.sysjobs';列不允许有空值。))