我有这个奇怪的请求,要安排报告并打印到打印机.
报告本身非常简单,适合单页.我可以将它打印到.txt,这将很好(虽然我对更好的产品的建议开放).
这是代码.有用.但我不喜欢它.具体来说,Id喜欢废除嵌套的@bcp和@sql.
问题:有更优雅的方法吗?
declare @filepath varchar(255),@filename varchar(255),@filetype varchar(255),@sql nvarchar(max),@coverpage_text nvarchar(max) set @filepath = 'C:\users\jmay\documents\' SET @filename = 'TestFile' set @filetype = '.txt' --output to txt set @sql = N'declare @bcp varchar(4000) set @bcp = ''bcp " select * from test_data " queryout ' + @filepath + @filename + @filetype + ' -t " - " -c -T -d DBA'' print @bcp EXECUTE master.dbo.xp_cmdshell @BCP' print @sql exec sp_executesql @sql --print data set @sql = N'declare @bcp varchar(4000) set @bcp = ''START /MIN NOTEPAD /P ' + @filepath + @filename + @filetype + ''' print @bcp EXECUTE master.dbo.xp_cmdshell @BCP' print @sql exec sp_executesql @sql
解决方法
使用POWERSHELL和
OUT-PRINTER执行查询
Invoke-sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance . | Out-Printer
The Out-Printer cmdlet sends output to the default printer or to an alternate printer,if one is specified.