When i use sp_send_dbmail stored procedure inside a Execute SQL task,the task is executed successfully.
But when i look in to 'Database Mail Log', it says
"The mail could not be sent to the recepient because of the mail server failure. Exception message: cannot send mails to mail server(The remote certificate is invalid according to the validation procedure)
I have an After Update Trigger specified on a database table to notify specific users via email when certain customer values are modified. (This is a HACK / Workaround for functionality that doesn't exsist in the product.)
I had be using xp_sendmail without a problem. I recently upgraded the database server to SQL2005 and wanted to try sp_send_dbmail. (I was interested in the asynch and the non-MAPI nature of Database Mail.)
This is the new code:
EXEC @retval = msdb.dbo.sp_send_dbmail
@recipients = @rec,
@blind_copy_recipients = @bcc,
@subject = 'Important Customer Information Change',
@body = @body
This is the old code:
EXEC @retval = master.dbo.xp_sendmail
@recipients = @rec,
@blind_copy_recipients = @bcc,
@subject = 'Important Customer Information Change',
@message = @body
The problem now is that the application reports an update failure because the sp_send_dbmail return the message "Mail Queued."
I don't know if there's a way to suppress this message or not. Or some other way to indicate that "all is well" even though the stored procedure returned a message.
I am having a few problems with Database Mail and wondered if anyone could assist. It sends test mails fine, but when I run the following script:
(I've changed my email address in this post to test@test.com they are accurate in the scripts.)
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Test Mail',
@recipients = 'test@test.com',
@body = 'Sent by sp_send_dbmail',
@Subject = 'SQL Server Email Test Email';
It gives the following errors.
(from the above script)
mailitem_id = 16 profile_id = 2 recipients = test@test.com copy_recipients = NULL blind_copy_recipients = NULL subject = SQL Server Email Test Email body = Sent by sp_send_dbmail body_format = TEXT importance = NORMAL sensitivity = NORMAL file_attachments = NULL attachment_encoding = MIME query = NULL execute_query_database = NULL attach_query_result_as_file = 0 query_result_header = 1 query_result_width = 256 query_result_separator = exclude_query_output = 0 append_query_error = 0 send_request_date = 2008-04-15 10:50:03.827 send_request_user = COMPANYTest.Test sent_account_id = NULL sent_status = failed sent_date = 2008-04-15 10:50:04.000 last_mod_date = 2008-04-15 10:50:04.513 last_mod_user = sa
(from the test mail)
mailitem_id = 11 profile_id = 2 recipients = test@test.com copy_recipients = NULL blind_copy_recipients = NULL subject = Database Mail Test body = This is a test e-mail sent from Database Mail on UKDEVSQL1 body_format = TEXT importance = NORMAL sensitivity = NORMAL file_attachments = NULL attachment_encoding = MIME query = NULL execute_query_database = NULL attach_query_result_as_file = 0 query_result_header = 1 query_result_width = 256 query_result_separator = exclude_query_output = 0 append_query_error = 0 send_request_date = 2008-04-15 09:51:46.530 send_request_user = COMPANYTest.Test sent_account_id = 4 sent_status = sent sent_date = 2008-04-15 09:51:46.000 last_mod_date = 2008-04-15 09:51:46.610 last_mod_user = sa
sysmail_event_log gives this error for mail item 16 (the scripted email):
The mail could not be sent to the recipients because of the mail server failure. (Sending Mail using Account 4 (2008-04-15T10:11:41). Exception Message: Cannot send mails to mail server. (Mailbox unavailable. The server response was: 5.7.1 Requested action not taken: message refused). )
Hi, We are trying to implement Service Broker between SQL Server Express and SQL Server on the Same machine and we are having problems with certificates. We are creating a certificate on SQL Server, backing up the certificate on a file system and then loading certificate on the SQL Server Express from the file and we are keep getting the following error: Msg 15208, Level 16, State 1, Line 1 The certificate, asymmetric key, or private key file does not exist or has invalid format.
Following script runs fine on SQL Server.
Code Snippet
use master
Create Master Key Encryption BY Password = '45Gme*3^&fwu';
BACKUP MASTER KEY TO FILE = 'C:ServiceBrokerPrivateKeyMasterB.pvk'
ENCRYPTION BY PASSWORD = '45Gme*3^&fwu'
Create Certificate EndPointCertificateC
WITH Subject = 'C.Server.Local',
START_DATE = '06/01/2006',
EXPIRY_DATE = '01/01/2008'
ACTIVE FOR BEGIN_DIALOG = ON;
BACKUP CERTIFICATE EndPointCertificateC
TO FILE = 'C:ServiceBrokerEndPointCertificateC.cer'
Following script runs on SQL Server Express:
Code Snippet
Create Certificate EndPointCertificateC
From FILE = 'C:ServiceBrokerEndPointCertificateC.cer'
WITH PRIVATE KEY (
FILE = 'C:ServiceBrokerPrivateKeyMasterB.pvk',
DECRYPTION BY PASSWORD = '45Gme*3^&fwu'
);
If we run the script other way around, it works fine. If we use the SQL Server on some other machine, the script works fine. But only on the same machine, it throws this error. We made sure the permissions and everything. Let us know if there is any work around or what are we doing wrong.
When using "sp_send_dbmail", messages are queued through Service Broker. Other than the system views, "dbo.sysmail_...", in MSDB, is there another way to know if an email was sent successfully?
Also, in 2000 you did not need to supply the whole email address in order for xp_sendmail to work. For example, I could use my name, "RGioia" as the recipient and it would send email to rgioia@<my current domain>. Does anyone know of a work-around for this in 2005 or do you just have to ensure that full email addresses are used?
CREATE TRIGGER TR_ABC ON TABLE_A AFTER INSERT AS DECLARE @E_MAIL VARCHAR(255), @MESSAGE VARCHAR(255) SET @MESSAGE = 'A new call request has been logged'
SELECT @E_MAIL = E_MAIL FROM TABLE_A AS A LEFT OUTER JOIN TABLE_B AS B ON B.SYSADMIN = A.SYSADMIN WHERE SYS_ADMIN = 1
The problem is everytime I insert data into the table I get an error stating that-: 'At least one of the following parameters must be specified. "@recipients, @copy_recipients, @blind_copy_recipients". Mail queued.'
SQL Server 2005Help. I have a problem:On a 2000 box, I am calling the sp_send_dbmail stored procedure on a2005 box (they are linked servers).This is how I'm calling the proc (from the 2000 box), which usessp_send_dbmail to send the mail.EXEC My2005Server.DatabaseName.dbo.SendNotification@recipients = 'me@yahoo.com',@subject = 'SENDING @TOTAL,@body = @text1 + @text2 + @text3 + @text4 + @text5@text1 - @text5 are varchar(8000).As you can see I'm trying to take advantage of the varchar(max) that@body allows.However, I get this error:Server: Msg 170, Level 15, State 1, Line 22Line 22: Incorrect syntax near '+'.I need to be able to concatenate these somehow... as I cannot put theminto one large variable from the 2000 server side.Can you see the problem here?Help.Thanks
Msg 15404, Level 16, State 19, Server TAKKARA, Line 1 Could not obtain information about Windows NT group/user 'WECLICKisantos', error code 0x5.
If I remove the @query, @exclude_query_output and @append_query_error options, I can send the email without a problem, just whenever I try to add a query to it that it gives me this error message.
I'm a sysadmin, I can run that query, I have access to the DatabaseMailUserRole under msdb and the profile that I'm using is public... I'm kind of stuck, let me know if you can help.
declare @dbccdate varchar(60) set @dbccDate='dbcc east' + convert(varchar(60),getdate(),10) exec msdb.dbo.sp_send_dbmail @recipeints='human@gmail.com', @body = 'This is a test' @subject= @dbccdate , @query='dbcc checkdb (msdb)', @attach_query_result_as_file=1, @query_attachment_filename='Dbcc_MSDB_Results.txt'
This works fine but, I'd really like the subject to contain the line "Checkdb found 0 errors..." So mgmt doesn't have to open the txt file to view the results.
I've tried dumping the results to a txt file first. Then trying to read the text file for the line inquestion. I wrote a for loop to parse the results command line, but can't figure how to add that value to the subject.
The script is this:
for /f %i in ('findstr /B /I "CHECKDB" y:dbcclogmsdblog.txt') do echo %i
Have a funny one that I've not yet resolved, and was wondering if I am the only one.
SQL2005 SP1 server, Ent Ed, 64 bit, clustered machine. SP2a installed over Easter weekend.
about 12 days after apparently succesful upgrade, the cluster was failed over. After that fail-over, an existing job started failing, with the following message: quote:Error executing extended stored procedure: Invalid Parameter [SQLSTATE 42000] (Error 22050). The step failed.
All the job does is build a SQL query, then supply the query to sp_send_dbmail for execution:
One 'funny' I noticed is that up until the failover, SSMS seemed to erport the version of the server as still the SP1 (2157). After failover, it now lists (3042). This may simply be a symptom of SSMS not auto-refreshing though. We have (I believe) failed back again since then, still no joy.
Any Ideas?
*##* *##* *##* *##* Chaos, Disorder and Panic ... my work is done here!
This thread points to a KB article http://support.microsoft.com/kb/910416 which is close except for the fact that these were not upgrades, but clean installs. I'm leary of applying the hotfix to my servers.
Is this a known issue internal to MS and is the referenced hotfix appropriate to install?
I have a stored procedure that sends an mail using sp_send_dbmail. My problem is, if I execute the stored procedure via my ASP.NET 2005 application, the email will not send. I know the stored procedure is being called and works because: 1. The stored procedure does 2 things, sets a status, then sends the email. The status is being changed, but the email is not being sent. 2. When I investigate with Sql Server Profiler, I see the stored proc being called and the values of the parameters are set as they should be. What I don't understand is, I can copy the call in Sql Server Profler, and paste it in a Query Analyzer window and execute that same call, and everything works fine, status is changed, and the email is sent (to myself for testing and I receive it just fine). Is there a reason why the email won't send via code? Am I suppose to setup some security that will allow my application to send emails? Any info would be GREATLY appreciated.
We have a DTS package in the old SS2000 that we are still using in SS2005. We change the old xp_sendmail to use the new sp_send_dbmail. This runs fine without attachment. But with attachment, I'm encountering an error when running the package.
The task reported failure on execution. The client connection security context could not be impersonated. Attaching file requires an integrated client login. Syntax error or access violation.
I cannot find much topic on the net about this error.
Hi everyone, I'm trying to usie "sp_send_dbmail" and i'm required to provide value to: "@profile_name" argument. The trouble is i have no idea what it means.. How do i get to know what is my "profile_name" ? Thanks.
I want to write a trigger that sends me an email, when new records are added into a table.
For testing I have created one table called location1, which has simple data from AdventureWorks.Production.Location. And another table is called new_location, which stores the newly added records.
Here is the trigger:******************************** use [AdventureWorks] if object_id ('location1') is not null drop table location1 go create table location1(LocationID int, LName varchar(50))
if object_id ('new_location') is not null drop table new_location go create table new_location (LocationID int, LName varchar(50))
if object_id ('change_ID', 'TR') is not null drop trigger change_ID go create trigger change_ID on location1 for insert as delete new_location insert into new_location select * from inserted
exec sp_send_dbmail @profile_name = 'Profile', @recipients = 'email', @subject = 'New Record(s) added.', @query = 'select * from new_location order by LocationID'; go ********************************
After I insert statement, Management Studio runs the executing throughout. insert into location1 select LocationID, Name from Production.Location order by LocationID
I'm using SQL Server 2005. I'm trying to send an email with query results attached. I've enabled database mail (surface config, config wizard, profile set, accounts loaded). I know database mail itself works as I'm able to send plain text messages as well as messages with HTML embedded. However, when I try to format a query to send attachments with mail, as shown in BOL; I always get this error message - <snip>
Msg 14661, Level 16, State 1, Procedure sp_send_dbmail, Line 476
Query execution failed: Error initializing COM
Msg 0, Level 11, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded. <snip>
Here is a sample of the query...
DECLARE @WHO VARCHAR(255)
SET @WHO = '<name would go here>'
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'sqlmail'
,@recipients = 'my.name@wouldgohere.com'
,@subject = 'testing attachment'
,@query = N'SELECT email_body
FROM WFS_non_stock_email_sendit_history
WHERE who_entered = @WHO
ORDER BY date_created DESC
OPTION(MAXDOP 1)'
,@execute_query_database = 'whaley'
,@attach_query_result_as_file = 1
,@query_attachment_filename = 'TESTATTACH.txt'
,@query_result_separator = ';'
If I were to run this query outside of this dbmail code, the query works fine.
If I can believe the go to line editor, line 476 in the sp_send_dbmail sproc is...
DELETE sysmail_attachments_transfer WHERE uid = @temp_table_uid
My problem here is this is a system sproc that MSFT built. I don't understand why I would get this error message instead of something more definitive and indicative of the problem.
Has anyone else seen this problem? I really need to be able to send attachments.
hi all, i made a stored procedure that uses the sp_send_dbmail to send mails. SQL server dislays the message "mail queued" but nothing is recieved
here is the code of the stored procedure i made EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Exams', @recipients = 'me@domain.com', @Body_format = 'HTML' , @subject = 'Room Preparation' , @body='hi there'; so can anyone help with this issue thanks in advance
I am trying to use sp_send_dbmail to exec stored procedure results to an email as an attachement. This works very well, except for one problem, it is not giving the result headers for the queries in the stored procedure even with the
@query_result_header = 1
I have also tried this with a VERY simple query, just incase it was the multiple result sets causing the problem, also not putting the results as an attachment and just straight into the body.
Hi everyone, i'd like to assign "@recipients" for sp_send_dbmail derived from a query as follows:
Code SnippetDECLARE @mailist VARCHAR(2000) SET @mailist= 'select email from server.db.dbo.table where lastname=' +''''+'aaa'+'''' exec msdb.dbo.sp_send_dbmail @profile_name='myprofile', @recipients=@mailist, @subject='email address through a query', @...
when i run it i dont get any error message but mails to dot arrive. any suggestion why ? Thanks a lot
I'm trying to get sp_send_dbmail to attach the @query result set as an xml file.
The email is being sent and the attachment is present, but rather than ascii xml, it contains a chunk of nonsense like this 0x440352004F005700440470006B00650079004409660069007200730074006E0061006D00650044086C006100730074006E0061006D0065004410700068
I've tested the query with the first bit of code and sent the email with the second bit. I think I can jimmyjack it to write the xml to a temp file on the server and send that file using the @file_attachments parameter, but I'm hoping someone out there knows how to get this one to work.
Thanks in advance for any help you can give me.
Here's my code:
-- test that xml output is being generated DECLARE @OUTPUT xml SET @OUTPUT = (SELECT * FROM database..table FOR XML PATH('ROW'), root('ROOT')) SELECT @OUTPUT
-- run the email proc EXEC msdb.dbo.sp_send_dbmail @QUERY= 'SET NOCOUNT ON SELECT * FROM database..table FOR XML PATH(''ROW''), root(''ROOT'')' ,@RECIPIENTS= 'userid@companyname.COM' ,@subject= 'Subject' ,@attach_query_result_as_file= 1 ,@query_attachment_filename= 'ATTACHMENT.xml' ,@query_result_width= 32767 ,@query_no_truncate= 1 ,@append_query_error= 1 ,@query_result_header= 1
Hi everyone. I've just installed sql server 2005 (evaluation) and i need to turn the option of using sp_send_dbmail on. I tried books on line but didnt manage to understand how it is done. Thanks
I have a SQL Agent Job that selects records that are of a particular age (from Table1) and inserts them into another table (Table 2) - multiple records get inserted as a single INSERT step. On Table 2 I then have a trigger set FOR INSERT which I was hoping would send an email using the fields copied from the batch job, one of which being an email address.
The trigger is: -
Code Snippet CREATE TRIGGER trgSendMail ON Table2 FOR INSERT AS DECLARE @myEmail VarChar(50) SELECT @myEmail = strEmail FROM Inserted EXEC sp_send_dbmail @Profile_Name = '{MailProfile}', @Recipients = @myEmail, @Subject = '{MailTitle}', @Body = '{MailBody}'
Thing is, the agent works fine but the trigger only sends an email to the first row inserted. Any ideas on how to get around this so that if the batch job inserts 10 rows into Table2 then 10 emails are sent out?
Hi, sending a mail using sp_send_dbmail (as below) with attachment works. However the characters in the attacheted file gets truncated to 256. The file is populated with the results from the @query string.
The value of MaxFileSize is 1 Mb when executing sysmail_help_configure_sp. It seems as if the @query_no_truncate value is being ignored by sp_send_dbmail procedure.
I am writing a stored procedure which finally has to send mail to the customer with a list of phones that have been added to his account. I am getting these phones from a SQL Table in the form of a query, and including the output of the query(list of phones) , in the body of the mail.
Because I am creating a total of 6 server reports, I alter the subject and query like so:
@subject = 'Server Report X' --where X is replaced with values 1 to 6 @query = 'EXEC dbo.usp_SvrRptX' --where X is replaced with values 1 to 6
I can run 4 reports without any problems. If I run more than 4 reports in the same batch, my network account under Windows 2000 Activity Directory is locked out as if I had erroneously mistyped my password the number of time to meet the lockout requirement - in this case, the number is 3 login tries.
Is this a known problem with Database Mail? If so, is there a fix or workaround?
I'm having a little trouble with a large query I have written to be sent as an email.
I want to send it as a csv so I've added commas in between each value in the query.
This is causing an error though, I think the ' that surround the commas are closing the query early. Is there any way around this? like encapsulating the query?
I've set up DB mail and sent a test e-mail and that comes through fine.
I set up an Operator with email Name: DWhelpton@k-and-s.com;MWeaver@k-and-s.com
I created a job and set up the notifications to e-mail the operator on failure.
When the job runs and fails, I do not get an e-mail and I get the following exception in the db mail log:
Date 2/2/2007 8:35:00 AM Log Database Mail (Database Mail Log)
Log ID 402 Process ID 3936 Last Modified 2/2/2007 8:35:00 AM Last Modified By NT AUTHORITYSYSTEM
Message 1) Exception Information =================== Exception Type: Microsoft.SqlServer.Management.SqlIMail.Server.Common.BaseException Message: Could not retrieve item from the queue. Data: System.Collections.ListDictionaryInternal TargetSite: Microsoft.SqlServer.Management.SqlIMail.Server.Controller.ICommand CreateSendMailCommand(Microsoft.SqlServer.Management.SqlIMail.Server.DataAccess.DBSession) HelpLink: NULL Source: DatabaseMailEngine
StackTrace Information =================== at Microsoft.SqlServer.Management.SqlIMail.Server.Controller.CommandFactory.CreateSendMailCommand(DBSession dbSession) at Microsoft.SqlServer.Management.SqlIMail.Server.Controller.CommandFactory.CreateCommand(DBSession dbSession) at Microsoft.SqlServer.Management.SqlIMail.Server.Controller.CommandRunner.Run(DBSession db) at Microsoft.SqlServer.Management.SqlIMail.IMailProcess.ThreadCallBack.MailOperation(Object o)
I am using nt4.0 sp5 with sql7.0 sp3 and exchange client. Does anyone know how to keep xp_sendamil form putting a copy of the mail message in the sent mail folder or an automated process for deleting all mail in the sent folder? As it stands now I must manually delete all messages from the sent mail folder on a daily basis.