Sorgu sonuçlarını doğrudan fiziksel bir yazıcıya göndermenin zarif bir yolu var mı?


14

Bir raporun planlanması ve bir yazıcıya yazdırılması için bu garip talebi aldım .

Raporun kendisi oldukça basit ve tek bir sayfaya sığacak. Ben bir txt yazdırabilirsiniz ve bu sadece iyi olacak (daha iyi bir ürün önerilerine açık olmasına rağmen).

İşte kod. İşe yarıyor. Ama hoşuma gitmedi. Özellikle, yuvalanmış @bcp ve @SQL ile ortadan kaldırmak istiyorum.

Soru: Bunu yapmanın daha zarif bir yolu var mı?

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

Yanıtlar:


36

POWERSHELLVe OUT-PRINTER kullanarak sorguyu yürütün

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

Out-Printer cmdlet'i çıktıyı varsayılan yazıcıya veya belirtilmişse alternatif bir yazıcıya gönderir.


4
Büyü gibi çalıştı, aynı kod kısaltılabilir: Invoke-Sqlcmd -Query "dba..test_data'dan SELECT *;" | Out-Printer Bir iş ve bam olarak planladım. yardımın için teşekkürler!
James
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.