쿼리 결과를 실제 프린터로 직접 보내는 우아한 방법이 있습니까?


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

POWERSHELLOUT-PRINTER를 사용하여 쿼리 실행

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

Out-Printer cmdlet은 기본 프린터 나 다른 프린터 (지정된 경우)로 출력을 보냅니다.


4
마술처럼 작동했고 같은 코드로 단축 할 수 있습니다. Invoke-Sqlcmd -Query "SELECT * from dba..test_data;" | Out-Printer 나는 그것을 직업과 bam으로 계획했다. 당신의 도움을 주셔서 감사합니다!
James
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.