2009-08-25 63 views
3

我正在使用Angel LMS及其构建在SQL Server平台上。我相信它的2005年,但不是100%肯定的。如何在不使用GUI的情况下创建SQL Server代理?

无论如何,也许我的伪代码将揭示这个答案。单引号也必须用于字符串,并且连字符是+。

我需要每天运行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时的步骤。

此外,如何操纵代理的时间表的一些参考将有所帮助。当我测试它时,我想将它设置为每十五分钟左右运行一次。


编辑
EXEC dbo.sp_add_job @ JOB_NAME = N'test”返回的错误
未能找到存储过程 'dbo.sp_add_job'。

+0

正在编辑:try EXEC msdb.dbo.sp_add_job @ job_name = N'test' – 2009-08-28 10:07:12

+0

EXECUTE权限在对象'sp_add_job',数据库'msdb',模式'dbo'上被拒绝。我会尝试强制自己的权限 – CheeseConQueso 2009-08-28 14:12:13

回答

9

如果您需要创建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 @[email protected], @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 @[email protected], @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

这有点棘手,但这应该让你去。

+0

你可以通过使用它上面的代码块来解决它 – CheeseConQueso 2009-08-26 15:04:58

+0

哦,谢谢你的信息,生病试试这个 – CheeseConQueso 2009-08-26 15:05:29

+0

问题是他们是链接。你可以做代码块+链接? – Anon246 2009-08-26 15:37:05

1

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

在命令窗口,运行以下命令:

SELECT @@version 

结果将包括在编辑信息。

如果你有Express,你将需要找到另一种方式来运行你的命令 - 可能使用SQLCMD和Windows调度程序,或者SQL Express中SQL代理的几个第三方替换之一 - 如果你是Google“sql快递代理“,你会发现几个。我没有与他们的经验,所以我不能推荐一个。

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

+0

CheeseWithCheese也可以编写一个小的Windows脚本宿主脚本来执行此操作 - VBScript支持ADO - 然后使用Windows来安排此脚本。 – 2009-08-25 22:27:00

+0

Microsoft SQL Server 2005 - 9.00.4035.00(X64)Nov 24 2008 16:17:31 Copyright(c)1988-2005 Windows NT 5.2(Build 3790:Service Pack 2)上的Microsoft Corporation企业版(64位) – CheeseConQueso 2009-08-26 15:03:45

+0

'寻找其他方向......关于该msdn网站的一些事情真的没有让我兴奋 – CheeseConQueso 2009-08-26 15:08:07

相关问题