문제

나는 Angel LMS와 SQL Server 플랫폼을 구축하고 있습니다. 나는 2005 년을 믿지만 100%는 확실하지 않습니다.

어쨌든, 아마도 내 의사 코드가 그 대답에 빛을 비출 것입니다. 또한 단일 따옴표는 문자열에 사용되어야하며 컨 컨트레이션 문자는 +입니다.

하루에 2-5 번 실행해야합니다 (주파수는 아직 결정되지 않았지만 요점을 얻습니다). 트랜잭션 블록/의사 코드는 다음과 같습니다.

BEGIN TRANSACTION
BEGIN TRY

<select statement>
<update statement>
<delete statement>
<insert statement>

COMMIT TRANSACTION
END TRY
BEGIN CATCH
        ROLLBACK TRANSACTION
        DECLARE @Msg NVARCHAR(MAX)  
        SELECT @Msg=ERROR_MESSAGE() 
        RAISERROR('Error Occured: %s', 20, 101,@msg) WITH LOG
END CATCH

데이터베이스에 대한 유일한 액세스는 SQL 명령을 실행하는 텍스트 상자입니다. 테이블을 만들고 삭제하고 트랜잭션 블록을 실행하며 분명히 선택/삽입/업데이트/삭제를 할 수 있습니다. 에이전트를 만들기위한 명령을 찾을 수는 없지만 엔터프라이즈 관리자를 사용하는 경우 또는 GUI가 호출되는 경우에만 단계 만 찾을 수 없습니다.

또한 에이전트의 타이밍 일정을 조작하는 방법에 대한 일부 참조는 도움이 될 것입니다. 테스트 할 때 15 분마다 실행하도록 설정하고 싶습니다.


편집하다
exec dbo.sp_add_job @job_name = n'test '오류를 반환했습니다.
저장된 절차 'dbo.sp_add_job'을 찾을 수 없습니다.

도움이 되었습니까?

해결책

SQL Server 에이전트에서 SQL 작업을 작성 해야하는 경우 (권한이 있다고 가정) 다음을 작성해야합니다.

1) 작업 자체 2) SQL 코드를 실행하는 작업의 단계 3)시기를 실행할 때.

다음을 수행하려면 다음 저장 절차가 필요합니다 (작업 예).

BEGIN TRY
    BEGIN TRAN

    DECLARE @jobId BINARY(16)

    --Add job
    EXEC msdb.dbo.sp_add_job @job_name=N'Job Name', @job_id = @jobId OUTPUT

    --Add step to job
    EXEC msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Do SQL Stuff', 
            @step_id=1, 
            @subsystem=N'TSQL', 
            @command=N'SELECT ''Hello, I am a query'';', 
            @database_name=N'DB_Name', 
            @flags=0

    --Add schedule to job
    EXEC msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Mon-Fri 6:00AM to 7:00PM, every hour', 
            @freq_type=8, 
            @freq_interval=62, 
            @freq_subday_type=8, 
            @freq_subday_interval=1, 
            @freq_relative_interval=0, 
            @freq_recurrence_factor=1, 
            @active_start_date=20090403, 
            @active_end_date=99991231, 
            @active_start_time=60000, 
            @active_end_time=190000

    COMMIT TRAN
END TRY
BEGIN CATCH
    SELECT ERROR_Message(), ERROR_Line();
    ROLLBACK TRAN
END CATCH

스프로스 자체는 여기에서 구문을 확인하고 싶을 것입니다.

SP_ADD_JOB

sp_add_jobstep

sp_add_jobschedule

조금 까다 롭지 만, 당신이 가야합니다.

다른 팁

우선 SQL Express에는 SQL 에이전트 기능이 없기 때문에 SQL Server가 Express Edition인지 여부를 설정해야합니다.

명령 창에서 다음 명령을 실행하십시오.

SELECT @@version

결과에는 판에 대한 정보가 포함됩니다.

Express가있는 경우 명령을 실행하는 다른 방법을 찾아야합니다. SQLCMD SQL Express의 SQL 에이전트에 대한 Windows 스케줄러 또는 여러 타사 교체 중 하나 - Google "SQL Express Agent"가 있으면 여러 가지가 있습니다. 나는 그들에 대한 경험이 없기 때문에 추천 할 수 없습니다.

표준 또는 엔터프라이즈 에디션이있는 경우 T-SQL을 통해 SQL 에이전트 작업을 만드는 단계를 찾을 수 있습니다. 여기.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top