Bonjour,
Je travaille avec Sql Server 2000. Je veux planifier l'envoyer d'un fichier à tous les utilisateurs. un envoi jounalier et automatique.
Comment le faire?
Merci de m'aider.
Version imprimable
Bonjour,
Je travaille avec Sql Server 2000. Je veux planifier l'envoyer d'un fichier à tous les utilisateurs. un envoi jounalier et automatique.
Comment le faire?
Merci de m'aider.
Je pense que tu devrais rechercher du côté des travaux (job) SQL Server. Ils te permettent de déclencher une série de commandes. Le mieux est d'utiliser que des commandes SQL.
Dans ton cas je privilègerais lédition d'une petite application se connectant à ta base de données pour récupérer les infos nécessaires et effectuer la tâche métier que tu souhaites. Ensuite en fonction du serveur sur lequel tu te situes, je définierai une tâche planifiée pour windows ou un script de déclenchement pour linux.
Après le choix de la solution dépend de la complexité de ton architecture (logiciel et physique).
Oui, C'est un "Job" que j'essais de réaliser pour cette tâche. Mais je ne maitrise pas les paramètres necessaires, et à chaque, il y a une erreur avec une croix rouge sur le "Job"...
Pourrais m'aider par rapport aux paramètres ?
Merci
peux-tu faire
click droit sur le job => générer script sql
et poster ton script
serge0934 Voici le code qui a été généré...
Citation:
Script generated on 18/07/2007 11:28
-- By: toto
-- Server: CHOP\FIRMA
BEGIN TRANSACTION
DECLARE @JobID BINARY(16)
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
IF (SELECT COUNT(*) FROM msdb.dbo.syscategories WHERE name = N'[Uncategorized (Local)]') < 1
EXECUTE msdb.dbo.sp_add_category @name = N'[Uncategorized (Local)]'
-- Delete the job with the same name (if it exists)
SELECT @JobID = job_id
FROM msdb.dbo.sysjobs
WHERE (name = N'EnvoiIndicateur')
IF (@JobID IS NOT NULL)
BEGIN
-- Check if the job is a multi-server job
IF (EXISTS (SELECT *
FROM msdb.dbo.sysjobservers
WHERE (job_id = @JobID) AND (server_id <> 0)))
BEGIN
-- There is, so abort the script
RAISERROR (N'Unable to import job ''EnvoiIndicateur'' since there is already a multi-server job with this name.', 16, 1)
GOTO QuitWithRollback
END
ELSE
-- Delete the [local] job
EXECUTE msdb.dbo.sp_delete_job @job_name = N'EnvoiIndicateur'
SELECT @JobID = NULL
END
BEGIN
-- Add the job
EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_id = @JobID OUTPUT , @job_name = N'EnvoiIndicateur', @owner_login_name = N'toto', @description = N'Execute package: EnvoiIndicateur', @category_name = N'[Uncategorized (Local)]', @enabled = 1, @notify_level_email = 0, @notify_level_page = 0, @notify_level_netsend = 0, @notify_level_eventlog = 2, @delete_level= 0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
-- Add the job steps
EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, @step_id = 1, @step_name = N'EnvoiIndicateur', @command = N'DTSRun /~Z0xAABAD439EA04A75909C535B2C1F286921A7D70225416875C866FB721053C05967DF0255E2A7AC48C4C5CC669B6B3C0FD93A61D850FFE4B3002BBF857DCCE18E23C73CD85445010E3E4B1CDD5F092DBBEF7FBA799216AF82ABEC43353EAA5885EB74B2B4AEF9484DFBE17917F8DA96AA32C350FBA6AFC680AD99CB135891F9AC0C40573722D179CE2B1AD800310F47975ACBC7C39A7111794F851FC02247F194669310D ', @database_name = N'', @server = N'', @database_user_name = N'', @subsystem = N'CmdExec', @cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0, @retry_interval = 0, @output_file_name = N'', @on_success_step_id = 0, @on_success_action = 1, @on_fail_step_id = 0, @on_fail_action = 2
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXECUTE @ReturnCode = msdb.dbo.sp_update_job @job_id = @JobID, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
-- Add the job schedules
EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, @name = N'EnvoiIndicateur', @enabled = 1, @freq_type = 4, @active_start_date = 20070717, @active_start_time = 174500, @freq_interval = 1, @freq_subday_type = 4, @freq_subday_interval = 1, @freq_relative_interval = 1, @freq_recurrence_factor = 0, @active_end_date = 20070718, @active_end_time = 235959
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
-- Add the Target Servers
EXECUTE @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @JobID, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
END
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
Merci!!!
donc ton job est bien enregistré !
as-tu essayé de lancer le DTS envoiindicateur "a la main" au moins une fois
si oui et que cela a fonctionné, tu as peut-être un pb de droit d'"EXEC" sur ton serveur: es t'il lancé en user/pwd admin ( ton toto est-il admin ?)
je reviens vers 14h
Oui, quand je le lance mannuellement, par "Executer", ça marche sans pb. Et toto est "System Administrators"
Merci; bon ap
qu'est ce qu'il te mets comme erreur
click droit sur le job, voir les erreurs
Voici le message qu'il m'affiche:
The job failed. The Job was invoked by User toto. The last step to run was step 1 (EnvoiIndicateur).
Merci
comme ton job n'a qu'une seule étape, c'est ton code de retour du DTS qui est <>0
ou que le job redémarre avant que le précédent soit fini
Dans ce cas, comment faire ?
Merci
dans le premier cas, (code retour), c'est pas grave car il doit l'exécuter comme il faut mais se planter dans le retour => il sera en rouge mais ok
dans le second cas => positionne l'intervalle en conséquence
pour voir le résultat, ajoute quelque chose comme un log en fin de ton DTS
un insert dans une table par exemple