당신은 두 번 이상 실행되는 동일한 SQL 에이전트 작업을 할 수 없습니다, 그래서 왜 속이지? 내가 delete_level = 1, 작업이 성공적으로 실행 후 자체를 삭제합니다 지정한 때문에 대신 다음 sp_add_job
, sp_add_job_step
을 불러 경우 어떻게 sp_start_job
를 호출의
는 sp_start_job
를 호출.
다음 작업 정의가 주어지면 IAmUnique
및 붐 고유 작업 이름의 끝과 비슷한 GUID를 추가하고 동시에 실행할 수 있습니다.
DECLARE @jobId binary(16)
EXEC msdb.dbo.sp_add_job
@job_name = N'IAmUnique'
, @enabled = 1
, @notify_level_eventlog = 0
, @notify_level_email = 2
, @notify_level_netsend = 2
, @notify_level_page = 2
, @delete_level = 0
, @category_name = N'[Uncategorized (Local)]'
, @owner_login_name = N'EU\u001899'
, @job_id = @jobId OUTPUT;
EXEC msdb.dbo.sp_add_jobstep
@job_name = N'IAmUnique'
, @step_name = N'Run package'
, @step_id = 1
, @cmdexec_success_code = 0
, @on_success_action = 1
, @on_fail_action = 2
, @retry_attempts = 0
, @retry_interval = 0
, @os_run_priority = 0
, @subsystem = N'SSIS'
, @command = N'/SQL "\New Package" /SERVER "localhost\dev2008" /CHECKPOINTING OFF /REPORTING E'
, @database_name = N'master'
, @flags = 0;
EXEC msdb.dbo.sp_update_job
@job_name = N'IAmUnique'
, @enabled = 1
, @start_step_id = 1
, @notify_level_eventlog = 0
, @notify_level_email = 2
, @notify_level_netsend = 2
, @notify_level_page = 2
, @delete_level = 1
, @description = N''
, @category_name = N'[Uncategorized (Local)]'
, @notify_email_operator_name = N''
, @notify_netsend_operator_name = N''
, @notify_page_operator_name = N'';
사용자가 작업을 생성 할 권한이 필요하기 때문에이 옵션을 고려하지 않을 것입니다. 작업을 생성하는 데 권한이 필요합니다. 이는 너무 강력하고 좋은 보안 정책이되지는 않을 것이라고 생각했습니다.그러나 사용 권한을 살펴보면 계정에 가장 낮은 에이전트 권한 인 [SQLAgentUserRole] (https://msdn.microsoft.com/en-us/library/ms188283.aspx)을 부여 할 수있는 것처럼 보입니다. 그것이 가져서는 안되는 권한 집합. 이 작품에 대해 좀 더 자세히 살펴볼 것입니다. –
@JoeEnos 작업을 생성하고 실행할 수있는 저장 프로 시저를 생성하고 응용 프로그램에 실행 권한을 부여 할 수있는 저장 프로 시저를 만든 다음 더 높은 권한 수준에서 작업을 수행하기 위해 Execute AS와 같은 것을 사용하는 방법으로 제한 할 수 있습니다 . 나는 앱이 일을 실행하도록 내버려 두었다면 아마도 앱을 만들게하는 것에 대해 더 큰 관심사가 아니라고 생각했다. – billinkc
감사합니다. –