0

我正在尝试调试显示一些可疑结果的 SSRS 报告。我正在使用 sql profiler 我已经获取了它正在运行的确切查询,该查询是使用 exec sp_executesql 执行的。

查询正在从视图返回结果。

如果我按原样运行包括 sp_executesql 的查询,我会得到一组结果。如果我抓住嵌套在里面的查询并自己运行它,我会得到一组不同的结果。

我不知道这怎么可能。查询是相同的,我的印象是 sp_executesql 只是执行查询。

有什么我遗漏的或者我该如何进一步调试?

exec 调用看起来像这样:

exec sp_executesql N'SELECT FirstName, LastName, DateOfBirth FROM ViewName WHERE
  DateOfBirth >= @pStartDate AND DateOfBirth <= @pEndDate',N'@pStartDate datetime, 
  @pEndDate datetime',@pDate='2010-07-17 00:00:00:000',@pEndDate=''2010-07-17
  23:59:59:000'

如果我运行它,我会得到一组结果。

然后,如果我运行:

SELECT FirstName, LastName, DateOfBirth FROM ViewName WHERE 
     DateOfBirth >= '2010-07-17 00:00:00:000' AND
     DateOfBirth <= '2010-07-17 23:59:59:000'

我得到的结果略有不同。

4

2 回答 2

1
  • 您可能正在使用不同的登录名进行连接。

这意味着结果将受到基于 SUSER_SNAME 或不同模式 ( dbo.Viewvs OtherSchema.View) 的过滤器的影响。它可能在视图内。

  • 您在某处有 NULL/空字符串差异

  • 不同的数据库或服务器

于 2011-10-17T05:18:45.813 回答
0

我会尝试将查询按原样(将单引号加倍)粘贴到 exec sp_executesql 中,并验证结果与手动运行相同。如果不是,那么它与日期参数有关,如果相同,那么它可能是某种所有者/安全项目。

于 2011-10-18T12:13:59.127 回答