T-SQL schreiben in eine txt-oder csv-Datei

Habe ich damit verbracht, den ganzen Tag durchforstet das Netz auf Antworten. Offenbar tsql nicht über seine eigene nette schreiben in Datei-Befehle. Hier ist mein dilemma

Ich habe eine Datei geladen, die ich erschaffe, wo eine einzelne Zeile erreichen 10K+ in der Länge. Auf SQL-Server varchar(MAX) Grenzwert 8000 (so glaube ich) also brach ich diese Zeilen in mehreren Variablen. Ich versuchte zu DRUCKEN, aber die Scheibe hat es ermöglicht 4000. Die Problemumgehung ist, zu drucken, diese gestrichelten Linien eine variable in einer Zeit, aber das kann es langweilig für die manuelle Arbeit, so entschied ich mich, zu schauen, schreiben in eine txt-Datei eine variable zu einer Zeit.

Schaute ich in BCP über xpcommandshell und es sah vielversprechend aus. Problem war, dass ich bekommen konnte, diese Zeile zu arbeiten, in der Eingabeaufforderung noch, dass genau die gleiche Linie, die nicht funktioniert TSQL-Abfrage:

declare @cmd varchar(8000)
select @cmd = 'bcp Client_DB "Select name from dbo.t_TagBuild_set" queryout "Desktop\LAMB\dummy.txt" -c -t, -T'
exec master..xp_cmdshell @cmd

bcp Client_DB "Select name from dbo.t_TagBuild_set" queryout "Desktop\LAMB\dummy.txt" -c -t, -T funktioniert einwandfrei auf Eingabeaufforderung

trotz dieses leichten Fortschritt, mein manager wollte nicht diesen Weg gehen. Anstatt also entschied ich mich für die sp_OACreate und sp_OAMethod nach der Aktivierung von sp_configure über die Ausführung dieser Linie auf SQL:
sp_configure 'Ole Automation Procedures', 1

Einer der ersten Zeilen auf dieser route ist diese:

EXECUTE @hr = sp_OACreate  'Scripting.FileSystemObject' , @objFileSystem OUT

@hr gibt ein 0, so dass ist gut, aber @objFileSystem Erträge 16711422 und @hr wird schließlich -2146828218 was ich glaube ist von Berechtigungen.

ich wirklich ratlos bin auf der Suche nach etwas einfach zu tun, aber ich habe zunehmend schwer, mich auf mich selbst zu finden, etwas konkretes, nur um zu schreiben, um ein paar Variablen in einer Zeile vor dem hinzufügen der neuen Zeile, und wiederholen Sie den Vorgang.

Wer kann fachmännisch helfen Sie mir herauszufinden, BCP oder sp_OACreate dann wäre ich sehr dankbar Ursache der net da ist kaum hilft (und das ist nach ich verbrachte viel Zeit mit der Suche durch Microsofts eigene Website für eine Antwort)

varchar(max) ist "unlimited". varchar(n) ist beschränkt auf n <= 8000.
mein manager wollte nicht diesen Weg gehen. was Ihre manager problem? Könnte SSIS, was Sie brauchen oder würde Ihre manager nix, wie auch? Auch, warum mit Herumspielen mit FSO? Wenn du gehst zu, dass Sie könnte genauso gut schreiben Sie eine CLR-Assembly
Technisch varchar(max) hat ein limit von 2gb
Ich fummelte mit etwas mehr und dachte über das Problem mit den Berechtigungen hinsichtlich sp_OACreate. Ich experimentierte und einen Ordner erstellt C:\TestOutput ich ging auf Sicherheit-Eigenschaften und gab jedem die volle Kontrolle und entfernt das nur-lese-Kontrollkästchen. Ich veränderte den Pfad der Datei zu gehen, statt, und es funktioniert jetzt. Jetzt dämmert mir die Erlaubnis war nicht ich, sondern der server selbst zu schreiben versucht, in einen Ordner, die Sie nicht haben, Berechtigungen zu.

InformationsquelleAutor John M | 2013-02-14

Schreibe einen Kommentar