October 13, 2010 at 4:30 pm
I am trying to use sp_send_dbmail and execute a stored procedure for the @query parameter.
I have the following:
EXEC msdb..sp_send_dbmail
@profile_name = 'reports',
@recipients = 'test@test.com',
@subject = 'Monthly Job Creation',
@query = 'EXEC udsp_rpt_adm_monthly_jobs'
This generates the following error:
Msg 22050, Level 16, State 1, Line 0
Error formatting query, probably invalid parameters
Msg 14661, Level 16, State 1, Procedure sp_send_dbmail, Line 504
Query execution failed: Msg 2812, Level 16, State 62, Server PGL-WORKGROUPS, Line 1
Could not find stored procedure 'udsp_rpt_adm_monthly_jobs'.
If I put the the actual query in for the parameter rather than the stored procedure it works fine. How can I use a stored procedure so I don't have to put all the code in? Is it even possible?
October 13, 2010 at 4:46 pm
the mail runs from the msdb database, so you have to fully qualify everything, like
EXEC msdb..sp_send_dbmail
@profile_name = 'reports',
@recipients = 'test@test.com',
@subject = 'Monthly Job Creation',
@query = 'EXEC Production.dbo.udsp_rpt_adm_monthly_jobs'
i think if you are using a query, there are other parameters required to decide where the results of the query is going to go, like as an attachment or int he body of the email;
this is the example i tend to like a lot:
declare @body1 varchar(4000)
set @body1 = 'Sample Email from SQL2008 ' + CONVERT( VARCHAR( 20 ), GETDATE(), 113 ) +
' '
EXEC msdb.dbo.sp_send_dbmail
@profile_name='gMail Example',
@recipients='lowell@somedomain.net',
@subject = 'SQl 2008 email test',
@body = @body1,
@body_format = 'HTML',
@query = 'SELECT top 3 * from sysobjects where xtype=''U''',
@query_result_header = 0,
@exclude_query_output = 1,
@append_query_error = 1,
@attach_query_result_as_file = 1,
@query_attachment_filename = 'qry.txt',
@query_result_no_padding = 1
Lowell
October 13, 2010 at 8:19 pm
In additiona to what Lowell has shown, there is a parameter available that defines the database to be used for the query: @query_database (I think - look it up to be sure).
Using that parameter will make sure the query is executed in the context of that database.
Jeffrey Williams
“We are all faced with a series of great opportunities brilliantly disguised as impossible situations.”
― Charles R. Swindoll
How to post questions to get better answers faster
Managing Transaction Logs
October 14, 2010 at 9:53 am
Thanks guys! You can do either. You can fully qualify it in the @query parameter or don't do it there and use the @execute_query_database. I don't know how I missed either one of those. Just shows when you are too involved with something it is easy to miss the obvious.
Thanks again.
July 12, 2011 at 8:15 am
For Dynamic command I used the below and it worked.
set @Command='Execute Database..sp_MySP "' + convert(varchar,@datetime,101) + '"'
Viewing 5 posts - 1 through 4 (of 4 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy