Schon mal darüber geärgert, daß es keine Möglichkeit gibt, die Spaltenüberschriften im BCP Utility mit auszugeben...?
Hier ist ein Workaround, der manchmal recht nützlich sein kann:
use pubs
if object_id('workaround')>0
drop view Workaround
go
create view Workaround as
select
au_id
, au_lname
, au_fname
, convert(char, contract) 'contract'
, 1 as SeqNo from authors
union
select
'au_id'
, 'au_lname'
, 'au_fname'
, 'contract'
, 0 as SeqNo
go
declare @stmt varchar(200)
set @stmt = 'bcp "select au_id, au_lname, au_fname, contract from pubs..Workaround order by SeqNo, au_id" '
set @stmt = @stmt + ' queryout "C:\text.txt" -c -T -S'
exec master..xp_cmdshell @stmt
Wie man sehen kann, muß ein View erstellt werden. Innerhalb dieses Views selektieren wir die Spalten, die uns interessieren. Desweiteren selektieren wir Literale, die uns als Spaltenüberschriften dienen werden. Um sicherzustellen, daß diese Literale zuoberst erscheinen, führen wir eine virtuelle Spalte SeqNo ein, und selektieren hier eine 0 für die Literale. Nun stehen sie stets ganz oben, wenn wir ein ORDER BY SeqNo ausführen. Wie man hier aber auch sehen kann, sind diese Literale gleichzeitig aber auch der größte Nachteil dieser Methode, da man durch sie nicht mehr in der Lage ist, nur einen Teil der Spalten zu selektieren. Dies hat keinen Effekt auf die Selektion der Literale und produzieren ein falsches Ergebnis. Muß man häufig wechselnde Spalten exportieren, sollte man sich daher eher mit DTS beschäftigen. Die hier präsentierte Methode ist eher etwas für Abfragen, die sich selten ändern.