我在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'
我也尝试过使用proc上的4部分命名;有和没有'EXEC'等。它作为一个查询工作得很好,但我似乎无法让它作为一个proc工作。这甚至可能吗?
答案 0 :(得分:9)
您需要添加数据库上下文:
@execute_query_database = 'MyDatabaseName',
我刚刚在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 ;
答案 1 :(得分:0)
您是否尝试过创建用户定义的函数而不是存储过程?
类似的东西:
@query = 'select something from dbo.myFunction()'