2009-08-25 11 views
3

J'utilise Angel LMS et son construit sur une plate-forme SQL Server. Je crois en 2005, mais je ne suis pas sûr à 100% à ce sujet.Comment créer un agent SQL Server sans utiliser d'interface graphique?

Quoi qu'il en soit, peut-être que mon pseudo-code éclaircira cette réponse. De même, les guillemets simples doivent être utilisés pour les chaînes et le caractère de concaténation est +.

J'ai besoin d'avoir quelque chose courir 2-5 fois par jour (la fréquence n'est pas encore déterminée, mais vous obtenez le point). Voici le bloc de transaction/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 

Mon seul accès à la base de données, est une zone de texte qui exécute des commandes SQL. Je peux créer et supprimer des tables, exécuter des blocs de transactions, et évidemment sélectionner/insérer/mettre à jour/supprimer. Je ne trouve aucune commande pour créer un agent, mais uniquement les étapes si vous utilisez Enterprise Manager ou quelle que soit l'interface graphique appelée.

En outre, certaines références sur la façon de manipuler le calendrier de l'agent seraient utiles. Quand je l'ai testé, je veux le faire fonctionner toutes les quinze minutes environ.


EDIT
EXEC dbo.sp_add_job @ job_name = N'Test » a renvoyé l'erreur
Impossible de trouver la procédure stockée 'de dbo.sp_add_job'.

+0

Après l'édition: essayez EXEC msdb.dbo.sp_add_job @ nom_travail = N'test ' –

+0

L'autorisation EXECUTE a été refusée sur l'objet' sp_add_job ', base de données' msdb ', schéma' dbo '. Je vais essayer de forcer les permissions sur moi-même – CheeseConQueso

Répondre

9

Si vous avez besoin pour créer un travail SQL dans SQL Server Agent (en supposant que vous avez des droits), vous devez créer les éléments suivants:

1) Le travail lui-même 2) Une étape dans le travail pour exécuter le Code SQL 3) Un calendrier de quand l'exécuter.

Les procédures suivantes stockées sont nécessaires pour le faire (exemple de travail):

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 

En ce qui concerne les sprocs eux-mêmes, vous aurez envie de vérifier la syntaxe ici:

sp_add_job

sp_add_jobstep

sp_add_jobschedule

C'est un peu difficile, mais ça devrait vous aider.

+0

vous pourriez probablement contourner en utilisant ce bloc de code sur eux – CheeseConQueso

+0

oh et merci pour l'info, ill essayer ceci – CheeseConQueso

+0

Problème est ils sont des liens. Pouvez-vous faire du bloc de code + des liens? – Anon246

1

Tout d'abord, vous devez déterminer si SQL Server est Express Edition, dans la mesure où SQL Express ne dispose d'aucune fonctionnalité SQL Agent.

Dans la fenêtre de commande, exécutez la commande suivante:

SELECT @@version 

Le résultat comprendra des informations sur l'édition. Si vous avez Express, vous devrez trouver un autre moyen d'exécuter vos commandes - éventuellement en utilisant SQLCMD et le planificateur Windows, ou l'un des plusieurs remplacements de tiers pour l'agent SQL dans SQL Express - si vous "sql SQL" agent express ", vous en trouverez plusieurs. Je n'ai aucune expérience avec eux, donc je ne peux pas en recommander un.

Si vous avez des éditions Standard ou Enterprise, les étapes de création de tâches SQL Agent via T-SQL peuvent être trouvées here.

+0

CheeseWithCheese pourrait aussi écrire un petit script Windows Script Host pour effectuer cette opération - VBScript supporte ADO - et ensuite utiliser Windows pour programmer ce script. –

+0

Microsoft SQL Server 2005 - 9.00.4035.00 (X64) Nov 24 2008 16:17:31 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition (64 bits) sur Windows NT 5.2 (Build 3790: Service Pack 2) – CheeseConQueso

+0

I chercherai d'autres directions ... quelque chose sur ce site msdn ne m'excite vraiment pas – CheeseConQueso

Questions connexes