我正在使用Angel LMS及其在SQL Server平台上构建。我相信它的2005年,但对此不确定。

无论如何,也许我的伪代码会阐明该答案。同样,单引号必须用于字符串,并且连接性字符为 +。

我需要每天运行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命令的文本框。我可以创建和丢弃表,运行交易块,显然选择/插入/update/delete。我找不到创建代理的任何命令,但是只有在使用企业管理器或任何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

至于Sprocs本身,您需要在此处查看语法:

sp_add_job

sp_add_jobstep

sp_add_jobschedule

这有点棘手,但这应该让您前进。

其他提示

首先,您需要确定SQL Server是否为Express Edition,因为SQL Express没有SQL代理功能。

在您的命令窗口中,运行以下命令:

SELECT @@version

结果将包括有关该版本的信息。

如果您有明确的 SQLCMD 以及Windows调度程序,或SQL Express中SQL代理的几个第三方替换之一 - 如果您Google Google“ SQL Express Agent”,您会发现几个。我没有他们的经验,所以我不推荐一个。

如果您有标准版或企业版,可以找到通过T-SQL创建SQL代理作业的步骤 这里.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top