将存储过程传递给sp_send_dbmail

4 sql sql-server email stored-procedures

我在SQL Server 2008中使用sp_send_dbmail发送查询结果.我将查询移动到proc中,并尝试在sp_send_dbmail程序中使用proc,如下所示:

EXEC msdb.dbo.sp_send_dbmail 
@profile_name               = 'myprofile',
@from_address               = 'email@somedomain.com',
@reply_to                   = 'email@somedomain.com',
@recipients                 = 'email@differentdomain.com',  
@importance                 = 'NORMAL', 
@sensitivity                = 'NORMAL', 
@subject                    = 'My Subject',
@body                       = 'Here you go.',
@attach_query_result_as_file= 1,
--@query_result_header      = 1,
@query_result_width         = 1000, 
@query_result_separator     = '~',
@query_attachment_filename  = 'myFile.txt',
@query                      = 'EXEC dbo.myProc'
Run Code Online (Sandbox Code Playgroud)

我也尝试了这个使用4部分命名的proc; 有和没有'EXEC'等.它作为一个查询工作得很好,但我似乎无法让它作为一个proc工作.这甚至可能吗?

Mit*_*eat 9

您需要添加数据库上下文:

@execute_query_database = 'MyDatabaseName',
Run Code Online (Sandbox Code Playgroud)

我刚刚在AdventureWorks2008上运行了这个问题:

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'DBMail',
    @recipients = 'mitch@domain.com',
    @query = 'exec dbo.uspGetManagerEmployees 5' ,
    @execute_query_database = 'AdventureWorks2008',
    @subject = 'Work Order Count',
    @attach_query_result_as_file = 1 ;
Run Code Online (Sandbox Code Playgroud)


小智 0

您是否尝试过创建用户定义函数而不是存储过程?

就像是:

@query = 'select something from dbo.myFunction()'