มีวิธีที่สง่างามในการส่งผลการสืบค้นโดยตรงไปยังเครื่องพิมพ์จริงหรือไม่?


14

ฉันมีคำขอนี้แปลกที่จะมีรายงานที่กำหนดและพิมพ์ไปยังเครื่องพิมพ์

รายงานเองนั้นค่อนข้างง่ายและพอดีกับหน้าเดียว ฉันสามารถพิมพ์ลงใน 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

คำตอบ:


36

ดำเนินการแบบสอบถามโดยใช้POWERSHELLและOUT-PRINTER

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

cm-Out ของเครื่องพิมพ์ส่งออกไปยังเครื่องพิมพ์เริ่มต้นหรือไปยังเครื่องพิมพ์สำรองหากมีการระบุไว้


4
มันทำงานเหมือนเวทมนตร์รหัสเดียวกันสามารถย่อให้สั้นลงถึง: Invoke-Sqlcmd -Query "SELECT * from dba..test_data;" | เครื่องพิมพ์นอกฉันกำหนดเวลาเป็นงานและปัง ขอบคุณสำหรับความช่วยเหลือของคุณ!
James
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.