2009-08-25 19 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

相關問題