2009-08-25 12 views
3

Ich verwende Angel LMS und seine auf einer SQL Server-Plattform gebaut. Ich glaube, es ist 2005, aber nicht 100% sicher.Wie erstelle ich einen SQL Server-Agenten ohne Verwendung einer GUI?

Wie auch immer, vielleicht wird mein Pseudo-Code diese Antwort erhellen. Für Strings müssen auch einfache Anführungszeichen verwendet werden, und das verkettete Zeichen ist +.

Ich muss etwas 2-5 mal am Tag laufen lassen (die Frequenz ist noch nicht festgelegt, aber Sie bekommen den Punkt). Hier ist der Transaktionsblock/Pseudo-Code:

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 

Mein einziger Zugriff auf die Datenbank, wird ein Textfeld für SQL-Befehle ausführt. Ich kann Tabellen erstellen und löschen, Transaktionsblöcke ausführen und natürlich auswählen/einfügen/aktualisieren/löschen. Ich kann keine Befehle finden, um einen Agenten zu erstellen, sondern nur die Schritte, wenn Sie den Enterprise Manager oder was auch immer die GUI genannt wird.

Auch einige Hinweise, wie man den Zeitplan des Agenten zu manipulieren würde helfen. Wenn ich es teste, möchte ich es alle 15 Minuten laufen lassen.


EDIT
EXEC dbo.sp_add_job @ job_name = n'Test‘gab den Fehler
konnte nicht gespeicherte Prozedur finden 'dbo.sp_add_job'.

+0

Nach Bearbeitung: versuchen EXEC msdb.dbo.sp_add_job @ job_name = N'test ' –

+0

Die EXECUTE-Berechtigung wurde für das Objekt' sp_add_job ', Datenbank' msdb ', Schema' Dbo 'verweigert. Ich werde versuchen, Berechtigungen auf mich selbst zu erzwingen – CheeseConQueso

Antwort

9

Wenn Sie einen SQL-Auftrag in SQL Server-Agenten erstellen müssen (vorausgesetzt, Sie haben Rechte), haben Sie die folgenden Funktionen zu erstellen:

1) Der Auftrag selbst 2) ein Schritt in der Arbeit die laufen SQL-Code 3) Ein Zeitplan, wann es ausgeführt werden soll.

Die folgenden gespeicherten Prozeduren sind notwendig, um diese (Arbeitsbeispiel) zu tun:

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 

Was die sprocs selbst, Sie wollen hier die Syntax überprüfen:

sp_add_job

sp_add_jobstep

sp_add_jobschedule

Es ist ein wenig schwierig, aber das sollte dich in Gang bringen.

+0

können Sie wahrscheinlich umgehen, indem Sie den Code-Block auf sie verwenden – CheeseConQueso

+0

oh und danke für die Info, krank versuchen Sie dies – CheeseConQueso

+0

Problem ist, sie sind Links. Können Sie Code Block + Links machen? – Anon246

1

Zunächst müssen Sie feststellen, ob der SQL Server Express Edition ist, da SQL Express keine SQL Agent-Funktionalität hat.

In Ihrem Befehlsfenster den folgenden Befehl ein:

SELECT @@version 

Das Ergebnis Informationen über die Ausgabe enthalten wird.

Wenn Sie Express haben, müssen Sie einen anderen Weg finden, um Ihre Befehle auszuführen - möglicherweise mit SQLCMD und dem Windows-Scheduler, oder eine der mehreren Ersatz-Ersatz für den SQL-Agent in SQL Express - wenn Sie Google "sql Express Agent ", finden Sie mehrere. Ich habe keine Erfahrung mit ihnen, also kann ich einen nicht empfehlen.

Wenn Sie Standard- oder Enterprise-Editionen haben, finden Sie die Schritte zum Erstellen von SQL-Agent-Jobs über T-SQL unter here.

+0

CheeseWithCheese könnte auch ein kleines Windows Script Host-Skript schreiben, um diese Operation auszuführen - VBScript unterstützt ADO - und dann Windows verwenden, um dieses Skript zu planen. –

+0

Microsoft SQL Server 2005 - 9.00.4035.00 (X 64) 24 November 2008 16:17:31 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition (64-Bit) unter Windows NT 5.2 (Build 3790: Service Pack 2) – CheeseConQueso

+0

I werde nach anderen Richtungen suchen ... etwas über diese msdn Seite regt mich wirklich nicht auf – CheeseConQueso