July 12, 2010 at 1:58 pm
Hello, I have scheduled a job to execute a full back up at four am each morning. It runs fine.
I have Database Mail set up and a test email from my TestAccount which utilizes gmail delivers jsut fine.
But, my completed job isn't triggering a notification. In the properties->notification window of my Full Back up Job properites menu I have checked next to E-mail for 'Action to perform when the job completes', but if I navigate away from it and navigate back it is once again empty.
What steps are necessary between SQL Server Agent Job and Database Mail so that I can trigger a notification to a recipient?
It is a fact that I have a TestAccount but I do not know where to define it's recipients. Intuitively, I know the area of the problem lies here but I don't know how to fix it.
Thanks.
July 12, 2010 at 2:06 pm
I just realized I didn't have the mail profile set to default. So I have changed that.
The remaining question I have is where do I defined the recipients of the default profile? Thank you.
July 13, 2010 at 12:26 am
- Did you follow the BOL ref "How to: Notify an Operator of Job Status (SQL Server Management Studio)"
- did you create a dbmail profile to be used by sqlagent ?
- are you using a proxy account for the job step(s) ?
- did you set up sqlagent operators ?
- Maybe if you publish your job script, we may be able to help out. (or attach it to your reply)
Johan
Learn to play, play to learn !
Dont drive faster than your guardian angel can fly ...
but keeping both feet on the ground wont get you anywhere :w00t:
- How to post Performance Problems
- How to post data/code to get the best help[/url]
- How to prevent a sore throat after hours of presenting ppt
press F1 for solution, press shift+F1 for urgent solution 😀
Need a bit of Powershell? How about this
Who am I ? Sometimes this is me but most of the time this is me
July 13, 2010 at 2:32 pm
ALZDBA (7/13/2010)
- Did you follow the BOL ref "How to: Notify an Operator of Job Status (SQL Server Management Studio)"- did you create a dbmail profile to be used by sqlagent ?
- are you using a proxy account for the job step(s) ?
- did you set up sqlagent operators ?
- Maybe if you publish your job script, we may be able to help out. (or attach it to your reply)
thank you. The key terms are helping me knock off the problems. So far I have enabled dbmail profile for sql agent and restarted sql agent and am moving on to set up sqlagent operators.
will let you know how it goes.
July 14, 2010 at 10:31 am
Hi! Per advise, the script is here. I have created the operator "ME!", I have enabled DB Mail, I have made sure to select the operator to notify for the specific job, and restarted SQL Server Agent. Look good to you?
USE [msdb]
GO
/****** Object: Job [AdventureWorks full backup] Script Date: 07/14/2010 09:24:30 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object: JobCategory [Database Maintenance] Script Date: 07/14/2010 09:24:31 ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'Database Maintenance' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'Database Maintenance'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
END
DECLARE @jobId BINARY(16)
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'AdventureWorks full backup',
@enabled=1,
@notify_level_eventlog=3,
@notify_level_email=3,
@notify_level_netsend=0,
@notify_level_page=0,
@delete_level=0,
@description=N'Automated full backup for AW DB.',
@category_name=N'Database Maintenance',
@owner_login_name=N'WIN-7U1MCSXTJ5Z\Administrator',
@notify_email_operator_name=N'ME!', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object: Step [Full] Script Date: 07/14/2010 09:24:31 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Full',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'USE AdventureWorks
GO
BACKUP DATABASE AdventureWorks
TO DISK = N''C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\AdventureWorks_FULL.bak''
WITH INIT, COMPRESSION;
GO',
@database_name=N'AdventureWorks',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Full Backup AdventureWorks',
@enabled=1,
@freq_type=4,
@freq_interval=1,
@freq_subday_type=1,
@freq_subday_interval=0,
@freq_relative_interval=0,
@freq_recurrence_factor=0,
@active_start_date=20100705,
@active_end_date=99991231,
@active_start_time=40000,
@active_end_time=235959,
@schedule_uid=N'2bc29ed2-7c9e-46e9-9b7b-70351c57b168'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
GO
July 15, 2010 at 8:37 am
two first impressions :
1) I don't like using windows accounts for job owners ( had to much troubles with that in the early yaers )
Backup jobs are system maintenance jobs, so IMO it is perfectly OK to use a sysadmin SQLUSER or even 'sa' for job owner
2) Point the jobstep to the database you want to use.
To create a backup, there is no need to be actually connected to the target database itself. You can do that from master db, or any other db.
and still here comes number 3:
We always install our db instances in their own set of folders, but never in "c:\program files" if you know what I mean.
Your job works on my sql2008R2 dev edtn system.
USE [msdb]
GO
/****** Object: Job [AdventureWorks full backup] Script Date: 07/14/2010 09:24:30 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object: JobCategory [Database Maintenance] Script Date: 07/14/2010 09:24:31 ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'Database Maintenance' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'Database Maintenance'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
END
DECLARE @jobId BINARY(16)
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'AdventureWorks full backup',
@enabled=1,
@notify_level_eventlog=3,
@notify_level_email=3,
@notify_level_netsend=0,
@notify_level_page=0,
@delete_level=0,
@description=N'Automated full backup for AW DB.',
@category_name=N'Database Maintenance',
@owner_login_name=N'sa',
@notify_email_operator_name=N'ME!', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object: Step [Full] Script Date: 07/14/2010 09:24:31 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Full',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'BACKUP DATABASE AdventureWorks MUST GO_WRONG
TO DISK = N''C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\AdventureWorks_FULL.bak''
WITH INIT, COMPRESSION;
',
@database_name=N'master',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Full Backup AdventureWorks',
@enabled=1,
@freq_type=4,
@freq_interval=1,
@freq_subday_type=1,
@freq_subday_interval=0,
@freq_relative_interval=0,
@freq_recurrence_factor=0,
@active_start_date=20100705,
@active_end_date=99991231,
@active_start_time=40000,
@active_end_time=235959
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
I configured sqlagent to use the default dbmail profile and provided operator ME! to use my email address.
Off course this job will fail (because I added "MUST GO_WRONG" to the job step command).
i received the mail:
JOB RUN:'AdventureWorks full backup' was run on 15/07/2010 at 16:32:20
DURATION:0 hours, 0 minutes, 0 seconds
STATUS: Failed
MESSAGES:The job failed. The Job was invoked by User mydomain\mylogin. The last step to run was step 1 (Full).
Johan
Learn to play, play to learn !
Dont drive faster than your guardian angel can fly ...
but keeping both feet on the ground wont get you anywhere :w00t:
- How to post Performance Problems
- How to post data/code to get the best help[/url]
- How to prevent a sore throat after hours of presenting ppt
press F1 for solution, press shift+F1 for urgent solution 😀
Need a bit of Powershell? How about this
Who am I ? Sometimes this is me but most of the time this is me
July 16, 2010 at 3:41 pm
Thank you, I've noted your observations. I can use my 'sa'. I didn't know I could use master. The paths are in testing environment and I will not put into program files in production.
This script did not run on the morning after I posted the script but it ran this morning. As far as I know I did not restart SQL Server Agent again yesterday so I don't know why it didn't work the day before.
SQL Agents likes to stop running all by itself for some unknown reason.
Thank you for your help in my getting this to work.
July 17, 2010 at 12:05 am
hxkresl (7/16/2010)
...SQL Agents likes to stop running all by itself for some unknown reason..
You should investigate this !
Have a look at the SQLAgent.OUT file, SQLServer's Errorlog file (to be found in your instances \Log folder ) and of course your Windows event log files to see why it stops.
Have a nice weekend.
Johan
Learn to play, play to learn !
Dont drive faster than your guardian angel can fly ...
but keeping both feet on the ground wont get you anywhere :w00t:
- How to post Performance Problems
- How to post data/code to get the best help[/url]
- How to prevent a sore throat after hours of presenting ppt
press F1 for solution, press shift+F1 for urgent solution 😀
Need a bit of Powershell? How about this
Who am I ? Sometimes this is me but most of the time this is me
July 17, 2010 at 10:20 am
I expanded the SQL Server Agent logs and found "An idle CPU condition has not been defined - OnIdle job schedule will have no effect".
Is it possible that a SQL Agent job wouldn't run because the CPU idle condition was below a certain threshold?
July 17, 2010 at 10:40 am
the database mail profile can be made
the receipients of that profile can be made by adding the accounts
there u can mention the address receving hte mails..
Regards
Sushant Kumar
MCTS,MCP
July 19, 2010 at 1:16 am
hxkresl (7/17/2010)
I expanded the SQL Server Agent logs and found "An idle CPU condition has not been defined - OnIdle job schedule will have no effect".Is it possible that a SQL Agent job wouldn't run because the CPU idle condition was below a certain threshold?
If you had attached the job to use an "on cpu idle" job schedule.
e.g;
USE [msdb]
GO
/****** Object: Job [test] Script Date: 07/19/2010 09:10:23 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
DECLARE @jobId BINARY(16)
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'SSCtest',
@enabled=1,
@notify_level_eventlog=0,
@notify_level_email=0,
@notify_level_netsend=0,
@notify_level_page=0,
@delete_level=0,
@category_name=N'[Uncategorized (Local)]',
@owner_login_name=N'sa', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object: Step [teststep] Script Date: 07/19/2010 09:10:23 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'teststep',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'print @@servername',
@database_name=N'master',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'JS_OnIdle',
@enabled=1,
@freq_type=128, -- freq_type=128 = on Idle cpu condition
@freq_interval=0,
@freq_subday_type=0,
@freq_subday_interval=0,
@freq_relative_interval=0,
@freq_recurrence_factor=0,
@active_start_date=20100719,
@active_end_date=99991231,
@active_start_time=0,
@active_end_time=235959
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
GO
This schedule would launch the SSCTest job when "the cpu becomes idle" is met.
You notification would only state this condition isn't configured, so this jobschedule would not occur.
Johan
Learn to play, play to learn !
Dont drive faster than your guardian angel can fly ...
but keeping both feet on the ground wont get you anywhere :w00t:
- How to post Performance Problems
- How to post data/code to get the best help[/url]
- How to prevent a sore throat after hours of presenting ppt
press F1 for solution, press shift+F1 for urgent solution 😀
Need a bit of Powershell? How about this
Who am I ? Sometimes this is me but most of the time this is me
July 20, 2010 at 7:33 am
hxkresl (7/17/2010)
I expanded the SQL Server Agent logs and found "An idle CPU condition has not been defined - OnIdle job schedule will have no effect".Is it possible that a SQL Agent job wouldn't run because the CPU idle condition was below a certain threshold?
This is really unlikely, it is possible to set jobs to run only when the CPU is idle. If you look in the drop down list of the schedule type of the job schedule then there is an option to run when CPU is idle.
You really wouldn't want a backup to kick off everytime the cpu is idle.
July 20, 2010 at 9:00 am
Could you give me the exact path? I don't see a drop down for schedule type within the job itself.
No, I don't plan to run the backup whenever CPU is idle but my concern is that at some point of it being protractedly idle, it won't run the backup job.
July 21, 2010 at 1:33 pm
- Can you start the job using SSMS ?
- is the actual schedule active ?
- double check sqlagent is running.
- can you find something in the sqlagent.out logfile (please post !) or in the job history ?
Johan
Learn to play, play to learn !
Dont drive faster than your guardian angel can fly ...
but keeping both feet on the ground wont get you anywhere :w00t:
- How to post Performance Problems
- How to post data/code to get the best help[/url]
- How to prevent a sore throat after hours of presenting ppt
press F1 for solution, press shift+F1 for urgent solution 😀
Need a bit of Powershell? How about this
Who am I ? Sometimes this is me but most of the time this is me
July 21, 2010 at 1:43 pm
ALZDBA, I am currently not having any problems with the job. Nightly the backups are running. There were only an inexplicable couple of days and all I could find were the CPU idle messages as posted earlier.
There is no remaining question here unless that happens again, so I thank you!
(If you wish to help me with something :-), I am currently struggling very much with permissions, specifically wishing to give a user who has dbowner and public permissions on a database, the addition role of 'databasemailuserrole' so that they can make changes to Database Mail for the database they are responsible for. There is a separate post for this. No one has taken a stab; I hope I presented it properly).
Viewing 15 posts - 1 through 14 (of 14 total)
You must be logged in to reply to this topic. Login to reply