Sql server 2008 从Sql Server返回的结果会根据我使用的登录名发生更改

Sql server 2008 从Sql Server返回的结果会根据我使用的登录名发生更改,sql-server-2008,Sql Server 2008,我已经创建了一个视图来识别我们员工数据库的轮班调整 在这里,当我使用管理员登录并运行查询时,我得到27条记录。当我以只读登录方式登录并运行查询时,我只得到1条记录 有没有任何关于为什么会发生这种情况的建议 这是我的问题 SELECT dbo.DailyAttendance.EmployeeCode AS EMP_NUMBER, dbo.ShiftAdjustment.Date AS RSD_DATE, dbo.ShiftDefinition.ShiftName AS

我已经创建了一个视图来识别我们员工数据库的轮班调整

在这里,当我使用管理员登录并运行查询时,我得到27条记录。当我以只读登录方式登录并运行查询时,我只得到1条记录

有没有任何关于为什么会发生这种情况的建议

这是我的问题

SELECT dbo.DailyAttendance.EmployeeCode AS EMP_NUMBER,
       dbo.ShiftAdjustment.Date AS RSD_DATE,
       dbo.ShiftDefinition.ShiftName AS SFT_CODE,
       CONVERT(VARCHAR(5), dbo.ShiftDetail.InTime, 108) AS SFT_TIMEIN,
       CONVERT(varchar(5), dbo.ShiftDetail.OutTime, 108) AS SFT_TIMEOUT,
       dbo.DailyAttendance.Date AS IOT_INDATE,
       CONVERT(varchar(5), dbo.DailyAttendance.InTime, 108) AS IOT_INTIME,
       dbo.DailyAttendance.OutDate AS IOT_OUTDATE, CONVERT(varchar(5),
       dbo.DailyAttendance.OutTime, 108) 
AS IOT_OUTTIME, dbo.ShiftDetail.LeaveDays AS SFT_LEAVEAMOUNT,
CASE WHEN dbo.ShiftDetail.Midnight = 'False' THEN 0 ELSE 1 END AS SFT_MIDNIGHT

FROM dbo.DailyAttendance INNER JOIN
 dbo.ShiftAdjustment ON dbo.DailyAttendance.EmployeeCode =
 dbo.ShiftAdjustment.EmployeeCode AND
 dbo.DailyAttendance.Date = dbo.ShiftAdjustment.Date AND
 YEAR(dbo.ShiftAdjustment.Date) = YEAR(GETDATE()) AND
 DATEPART(wk, dbo.ShiftAdjustment.Date) = DATEPART(wk, GETDATE()) +
 CASE WHEN datepart(dw, getdate()) <= 2 THEN - 1 ELSE 0 END
 INNER JOIN dbo.Shift WITH (nolock) ON
 dbo.ShiftAdjustment.ShiftCode = dbo.ShiftDefinition.ShiftCode
 INNER JOIN dbo.ShiftDetail ON
 dbo.DailyAttendance.DayType = dbo.ShiftDetail.DayType AND
 dbo.ShiftAdjustment.ShiftCode = dbo.ShiftDetail.ShiftCode

 WHERE (dbo.ShiftAdjustment.EmployeeCode IS NOT NULL) AND
 (YEAR(dbo.DailyAttendance.Date) = YEAR(GETDATE())) AND
 (DATEPART(wk, dbo.DailyAttendance.Date) = DATEPART(wk, GETDATE()) + 
 CASE WHEN datepart(dw, getdate()) <= 2 THEN - 1 ELSE 0 END)

可能重复:找到它,这一切都取决于这一行,选择datepartdw,getdate为管理员日志返回2,为我的只读日志返回3。这就是结果集存在差异的原因。在SQL server中,一周的开始日期是星期日默认值。有人已将其更改为管理员登录名:是的,可以。试着编写使用日期函数的代码,这样无论什么SET DATEFIRST设置有效。是的,from子句中的所有内容都是表。虽然默认模式不同,但排序规则是相同的。我试图很好地理解所有与日期相关的代码。如果你能为它的功能编写一个清晰的规范,我可以尝试重新编写它,这样无论用户设置如何,它都能正常工作——如果你还在寻求帮助的话。