【发布时间】:2014-02-27 19:44:17
【问题描述】:
我遇到了一个问题,我正在查看使用 SqlXmlCommand 对象从数据库获取数据的旧应用程序。有一个 .xsd 文件,其中包含正在使用的表、哪些字段、它们的关系等。我们遇到的问题是它在大多数情况下都有效,但不是全部。我想知道是否有办法检查 Sql Server 上实际运行的内容。我没有安装 SQL 探查器,所以该选项不可用。
代码如下:
SqlXmlCommand xcmd = new SqlXmlCommand(DataAccess.OleDbConnectionString);
xcmd.CommandType = SqlXmlCommandType.XPath;
xcmd.SchemaPath = Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"myXsd.xsd"));
xcmd.XslPath = Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, String.Format(@"myXsl.xsl", ReportType)));
xcmd.CommandText = "id[@PK=$PK]";
SqlXmlParameter p = xcmd.CreateParameter();
p.Name = "@PK";
p.Value = Id;
using (Stream s = xcmd.ExecuteStream()) { ... }
这在 ExectureStream() 处发生了错误:
SQLXML: error loading XML result (XML document must have a top level element.)
我们认为有一些数据异常导致 xml 无法正确生成,这就是为什么我们想看看究竟运行了什么。
干杯
【问题讨论】:
-
即使您没有安装 SQL Profiler,您仍然可以运行服务器端跟踪或使用扩展事件。设置这些跟踪之一可能有点棘手。当你用过一次之后,你肯定会再次使用它很多次。我认为这是值得的。