Каков соответствующий выходной файл из запроса T-SQL таблицы, который имеет XML в качестве типа данных - PullRequest
0 голосов
/ 04 июня 2009

Я создал пакетный скрипт, который вызывает файл T-SQL и выводит его в текстовый файл. Файл T-SQL содержит оператор выбора таблицы, чтобы получить информацию о столбце с XML в качестве типа данных. Затем файл будет отправлен с содержимым в виде основного письма или в качестве вложения. Однако, когда я открываю текстовый файл, я вижу длинный список информации, подобный приведенному ниже:

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

Я ожидаю увидеть содержимое, похожее на приведенное ниже:

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

Если вышеописанное невозможно, я ожидаю, что результат запроса будет выглядеть примерно так:

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

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

У меня вопрос: какой файл вывода подходит для отправки результатов запроса, чтобы я мог иметь более осмысленное и более организованное представление результатов?

Сложение:

См. Ниже содержимое пакетного сценария:

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

ДОПОЛНЕНИЕ 2:

У qrydll.sql просто есть это содержимое:

use <database_name>
GO
SELECT EventData FROM dbo.ChangeAttempt

Таблица dbo.ChangeAttempt имеет следующую структуру:

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

1 Ответ

1 голос
/ 04 июня 2009

Все, что вам не хватает, это пробелы, и пробелы не имеют отношения к реальному XML. Что бы ни читалось, это будет относиться к этому так или иначе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...