Чи є елегантний спосіб відправити результати запиту безпосередньо на фізичний принтер?


14

У мене є цей дивний запит, щоб запланувати звіт і надрукувати на принтері .

Сам звіт досить простий і розміститься на одній сторінці. Я можу роздрукувати його в txt, і це буде просто чудово (хоча я відкритий для пропозицій щодо кращого продукту).

Ось код. Це працює. Але мені це не подобається. Зокрема, мені подобається покінчити з вкладеними @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

Відповіді:


36

Виконайте запит за допомогою POWERSHELLта OUT-PRINTER

Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance .   | Out-Printer

Командлет Out-Printer надсилає вихід на принтер за замовчуванням або на інший принтер, якщо він вказаний.


4
Він працював як магія, той самий код може скорочуватися до: Invoke-Sqlcmd -Query "SELECT * from dba..test_data;" | Аут-Принтер Я запланував це як роботу і бам. спасибі за вашу допомогу!
Джеймс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.