【问题标题】:What is the appropriate output file from T-SQL query of table that has XML as datatype具有 XML 作为数据类型的表的 T-SQL 查询的适当输出文件是什么
【发布时间】:2009-06-03 20:49:50
【问题描述】:

我创建了一个调用 T-SQL 文件并将其输出到文本文件的批处理脚本。 T-SQL 文件包含一个表的 select 语句,用于获取以 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)

【问题讨论】:

  • 您不认为您应该向我们展示创建此输出的脚本吗?
  • 您的“不正确”XML 缺少一些字符,例如右括号等。你说的是这个问题吗?因为否则我看不出问题出在哪里,XML 是 XML,而不是一些文本文档。 @John 此输出是 DDL 触发器的输出或事件通知消息的正文。
  • @titanium:感谢您的编辑。现在请向我们展示脚本。我们是要猜测脚本的作用吗?

标签: sql sql-server xml tsql


【解决方案1】:

您所缺少的只是空格,而空格与真正的 xml 无关。无论哪种读法,都会以同样的方式对待它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-22
    • 2012-06-30
    • 1970-01-01
    • 2015-04-24
    相关资源
    最近更新 更多