我遇到了一个很奇怪的问题
我正在尝试通过实体框架运行存储过程来计算出生日期在一定范围内的各种人数
我正在运行以下代码
select count(*), groupId from app_people p
where p.DOB >= '2012-10-02'
and p.DOB <= '2013-10-01
group by groupId
我得到的问题是通过ssms执行的相同存储过程返回70而实体框架返回59
我在使用结果更新现有表之前,将上述查询的结果插入到临时表中。
有关为何会发生这种情况的任何建议吗?
两者都传递相同的参数。
使用以下代码通过Entity框架执行proc,该过程已从数据库导入并包含在数据模型中。
DatabaseContext.TestProcedure(false);
答案 0 :(得分:0)
这可能是HLGEM指出的权限问题。如果代码中与SQL Server的连接使用的登录名与SQL Server Management Studio SSMS登录名不同(例如Windows凭据),则可能会看到不同的结果。
您可以使用以下TSQL从SSMS中的其他安全上下文执行查询。您可以这样做来比较不同用户的相同查询的结果。
-- Execute as another user: https://docs.microsoft.com/en-us/sql/t-sql/statements/execute-as-transact-sql
EXECUTE AS USER = 'testuser';
-- TSQL with inconsistent results between code and ssms.
SELECT COUNT(*), groupId FROM app_people;