it-swarm.com.de

Gibt es eine elegante Möglichkeit, Abfrageergebnisse direkt an einen physischen Drucker zu senden?

Ich habe diese seltsame Bitte, einen Bericht zu planen und auf einem Drucker zu drucken .

Der Bericht selbst ist ziemlich einfach und passt auf eine einzelne Seite. Ich kann es als Text drucken und das wird in Ordnung sein (obwohl ich offen für Vorschläge zu einem besseren Produkt bin).

Hier ist der Code. Es klappt. Aber ich mag es nicht. Insbesondere möchte ich die verschachtelten @bcp und @SQL beseitigen.

Frage : Gibt es eine elegantere Möglichkeit, dies zu tun?

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
14
James

Führen Sie die Abfrage mit POWERSHELL und OUT-PRINTER aus

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

Das Cmdlet "Out-Printer" sendet die Ausgabe an den Standarddrucker oder an einen alternativen Drucker, falls einer angegeben ist.

36
Scott Hodgin