Apakah ada cara yang elegan untuk mengirim hasil permintaan langsung ke printer fisik?


14

Saya mendapat permintaan aneh ini agar laporannya dijadwalkan dan dicetak ke printer .

Laporan itu sendiri cukup sederhana, dan akan muat dalam satu halaman. Saya dapat mencetaknya ke txt dan itu akan baik-baik saja (meskipun saya terbuka untuk saran tentang produk yang lebih baik).

Ini kodenya. Berhasil. Tapi saya tidak suka itu. Secara khusus, Id ingin menghapus @bcp dan @SQL bersarang.

Pertanyaan: Apakah ada cara yang lebih elegan untuk melakukan ini?

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

Jawaban:


36

Jalankan permintaan menggunakan POWERSHELLdan OUT-PRINTER

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

Cmdlet Out-Printer mengirimkan output ke printer default atau ke printer alternatif, jika ada yang ditentukan.


4
Ini berfungsi seperti sulap, kode yang sama dapat disingkat menjadi: Invoke-Sqlcmd -Query "SELECT * from dba..test_data;" | Out-Printer Saya menjadwalkannya sebagai pekerjaan dan bam. terima kasih atas bantuan Anda!
James
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.