Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sp_executesql从视图返回的结果与直接运行查询不同_Sql_Sql Server_Reporting Services_Sp Executesql - Fatal编程技术网

sp_executesql从视图返回的结果与直接运行查询不同

sp_executesql从视图返回的结果与直接运行查询不同,sql,sql-server,reporting-services,sp-executesql,Sql,Sql Server,Reporting Services,Sp Executesql,我正在调试一个SSRS报告,它显示了一些不可靠的结果。我使用的是sql profiler,我已经获取了它正在运行的确切查询,该查询是用exec sp_executesql执行的 查询正在从视图返回结果 如果按原样运行查询(包括sp_executesql),则会得到一组结果。 如果我获取嵌套在其中的查询并自己运行它,就会得到一组不同的结果 我不知道这怎么可能。查询是相同的,我的印象是sp_executesql只是执行查询 我是否缺少一些东西,或者如何进一步调试 exec调用看起来像这样: exec

我正在调试一个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'
exec sp_executesql N'从ViewName中选择名字、姓氏、出生日期,其中
出生日期>=@pStartDate和出生日期='2010-07-17 00:00:00:000'和
出生日期
  • 您可能正在使用其他登录连接
这意味着结果将受到基于SUSER_SNAME或不同模式(
dbo.View
vs
OtherSchema.View
)的过滤器的影响。它可能在视野之内

  • 您在某些地方存在空/空字符串差异

  • 不同的数据库或服务器


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

有没有可能该视图在不同的所有者中出现两次?没有……我也删除了该视图并重新创建了它,以防出现任何奇怪的情况。@gbn抱歉,你是什么意思?向我们展示sp_executesql调用和视图定义。还有视图定义?我看不到任何类似的内容……我只是在本地运行这两个查询,绝对指向同一个db…使用dbo.ViewName会给您带来什么?是的,它最终是一个日期…在参数中出现的是“2010-07-17 23:59:59:000”,无论出于何种原因,当在没有执行器的情况下运行时,它会给出一组不同的结果。如果我删除了时间组件(在非“exec”查询中),它会产生相同的结果。我不知道为什么会这样…这可能是由于您的SQL Server区域性将日期参数格式化为自己的日期格式。那么…哪一个可能会被格式化?sp_execute调用,或者当我按原样运行查询时?我的意思是…如果它在某个时候被格式化了,我怎么知道发生了什么?
SELECT FirstName, LastName, DateOfBirth FROM ViewName WHERE 
     DateOfBirth >= '2010-07-17 00:00:00:000' AND
     DateOfBirth <= '2010-07-17 23:59:59:000'