我有一个复杂的动态查询需要在TSQL中导出到Excel。
[结果表中包含超过255个字符的文本字段,如果有影响的话]
我知道可以使用Management Studio菜单导出结果,但我想通过代码自动完成。你知道怎么做吗?
提前致谢。
我知道可以使用Management Studio菜单导出结果,但我想通过代码自动完成。你知道怎么做吗?
提前致谢。
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'AdventureWorks2008R2 Administrator',
@recipients = 'danw@Adventure-Works.com',
@query = 'SELECT COUNT(*) FROM AdventureWorks2008R2.Production.WorkOrder
WHERE DueDate > ''2006-04-30''
AND DATEDIFF(dd, ''2006-04-30'', DueDate) < 2' ,
@subject = 'Work Order Count',
@attach_query_result_as_file = 1 ;
一种方法是使用bcp,您可以从命令行调用它-请查看该参考中的示例,特别是查看有关-t参数的信息,您可以使用该参数设置字段终止符(对于CSV)。 这里有一个关于指定字段和行终止符的链接参考。
或者,直接使用TSQL,您可以使用OPENROWSET 如Pinal Dave在此处所解释的那样。
更新: 关于:2008 64位和OPENROWSET-我不知道那个,快速挖掘在MSDN论坛上找到了一个给定的链接。 任何帮助?
除此之外,其他选项包括编写SSIS包或使用SQL CLR在.NET中编写导出过程以直接从SQL调用。或者,您可以通过xp_cmdshell从TSQL调用bcp - 不过您必须启用它,这将打开SQL Server可能的“攻击面”。我建议查看this discussion。
我需要接受一个动态查询并将结果保存到磁盘,以便通过网络应用程序下载。
插入数据源对我来说行不通,因为我一直在努力使其工作。
最终,我选择了从SSMS将查询发送到powershell
阅读我的帖子如何在R2008 sql服务器上运行现有存储过程或该过程的sql语句创建服务器上的文档
然而单引号是个问题,起初我没有修整查询并在一行上写出它,所以在SQL Studio中它有换行符,事实上这很重要。