2009-06-03 3 views
0

Ich erstellte ein Batch-Skript, das eine T-SQL-Datei aufruft und es in eine Textdatei ausgibt. Die T-SQL-Datei enthält die SELECT-Anweisung einer Tabelle, um die Informationen der Spalte mit XML als Datentyp abzurufen. Die Datei wird dann entweder als E-Mail-Inhalt oder als Anhang gesendet. Allerdings, wenn ich die Textdatei öffnen, sehe ich eine lange Liste von Informationen ähnlich den folgenden:Was ist die geeignete Ausgabedatei von T-SQL-Abfrage der Tabelle, die XML als Datentyp hat

<`EVENT_INSTANCE><EventType>CREATE_INDEX</EventType <PostTime>2009-05-29T12:54:28.463... 

Was ich erwarte ist Inhalt wie die aussieht, um zu sehen unter:

<EVENT_INSTANCE> 
    <EventType>CREATE_INDEX</EventType> 
    <PostTime>2009-05-29T12:54:28.463</PostTime> 
    <SPID>54</SPID> 
    <ServerName>SERVER\INSTANCE</ServerName> 
    <LoginName>Domain\username</LoginName> 
    <UserName>dbo</UserName> 
    <DatabaseName>AdventureWorks</DatabaseName> 
    <SchemaName>dbo</SchemaName> 
    <ObjectName>ni_ChangeAttempt_DBUser</ObjectName> 
    <ObjectType>INDEX</ObjectType> 
    <TargetObjectName>ChangeAttempt</TargetObjectName> 
    <TargetObjectType>TABLE</TargetObjectType> 
    <TSQLCommand> 
    <SetOptions ANSI_NULLS="ON" ANSI_NULL_DEFAULT="ON" ANSI_PADDING="ON" QUOTED_IDENTIFIER="ON" ENCRYPTED="FALSE" /> 
    <CommandText>CREATE NONCLUSTERED INDEX ni_ChangeAttempt_DBUser ON 
dbo.ChangeAttempt(DBUser) 
</CommandText> 
    </TSQLCommand> 
</EVENT_INSTANCE> 

Wenn dies nicht möglich ist, erwarte ich die Ausgabe der Abfrage wie die unten schauen, um zu sehen:

Event    Post Time     Server Name 
-----    ---------     ----------- 

CREATE INDEX  2009-05-29T12:54:28.463  Server\Instance 

Meine Frage ist: Was ist die entsprechende Ausgabedatei ist, auf denen die Ergebnisse der Abfrage zu senden, damit ich kann habe mehr aussagekräftige und organisierte Sicht auf die Ergebnisse?

ADDITION:

Nachfolgend finden Sie die Inhalte des Batch-Skript:

osql -E -S SERVER\INSTANCE -d <database_name> -iD:\scripts\qryddl.sql -oD:\scripts\qryddl01.txt -w2000 -n -h 

bmail -s <ip address> -t <email> -f <email> -h -a " Database Object Changes from <ServerName>" -m D:\scripts\qrydll.txt 

ADDITION 2:

Die qrydll.sql gerade diese Inhalte haben:

use <database_name> 
GO 
SELECT EventData FROM dbo.ChangeAttempt 

Die Tabelle dbo.ChangeAttempt hat diese Struktur:

Column Name  Data Type 
-----------  --------- 
EvenData  xml 
AttemptDate  datetime 
DBUser  char(50) 
+0

Denkst du nicht, du solltest uns das Skript zeigen, das diese Ausgabe erzeugt? –

+0

Ihr 'inkorrektes' XML hat einige fehlende Zeichen, wie schließende Klammern und ähnliches. Ist das das Problem, auf das du dich beziehst? Ansonsten kann ich nicht sehen, wo die Frage ist, XML ist XML, kein Textdokument. @John Diese Ausgabe ist die Ausgabe der DDL-Trigger oder der Nachrichtentext einer Ereignisbenachrichtigung. –

+0

@titanium: danke für die Bearbeitung. Jetzt zeig uns bitte das Skript. Sollen wir raten, was das Skript macht? –

Antwort

1

Alles, was Sie vermissen, ist Leerzeichen, und Whitespace ist irrelevant für echte XML. Was auch immer liest, wird es auf die gleiche Weise behandeln.

Verwandte Themen