We are using read committed snapshot isolation level so I thought reads couldn't cause locking. We seem to be getting a fair amount of it and the software I use to monitor it (Ignite) is reporting select statements (such as the one below) as the cause...
(@p0 datetime,@p1 datetime,@p2 datetime,@p3 datetime,@p4 datetime,@p5 datetime,@p6 int,@p7 int,@p8
int,@p9 int,@p10 int)
SELECT COUNT(*) AS [value]
FROM
(
SELECT
(
SELECT COUNT(*)
FROM [dbo].[Subscription] AS [t2]
LEFT OUTER JOIN [dbo].[Students] AS [t3]
ON [t3].[StudentsID] = [t2].[StudentsID]
LEFT OUTER JOIN [dbo].[Departments] AS [t4]
ON [t4].[DepartmentID] = [t3].[DepartmentID]
WHERE ([t2].[StartDate] >= @p0)
AND ([t2].[StartDate] < @p1)
AND ([t2].[CourseID] = [t0].[CourseID])
) AS [value],
(
SELECT COUNT(*)
FROM [dbo].[Subscription] AS [t5]
LEFT OUTER JOIN [dbo].[Students] AS [t6]
ON [t6].[StudentsID] = [t5].[StudentsID]
LEFT OUTER JOIN [dbo].[Departments] AS [t7]
ON [t7].[DepartmentID] = [t6].[DepartmentID]
WHERE ((( SELECT MIN([t9].[ActivityStarted]) FROM [dbo].[Students] AS [t8], [dbo].[Activity]
AS [t9] WHERE ([t9].[StudentsID] = [t5].[StudentsID]) AND ([t9].[CourseID] = [t5].
[CourseID]) AND ([t8].[StudentsID] = [t5].[StudentsID]) AND ([t9].[StudentsID] = [t8].
[StudentsID]) )) >= @p2)
AND ((( SELECT MIN([t11].[ActivityStarted]) FROM [dbo].[Students] AS [t10], [dbo].[Activity]
AS [t11] WHERE ([t11].[StudentsID] = [t5].[StudentsID]) AND ([t11].[CourseID] = [t5].
[CourseID]) AND ([t10].[StudentsID] = [t5].[StudentsID]) AND ([t11].[StudentsID] = [t10].
[StudentsID]) )) < @p3)
AND ([t5].[CourseID] = [t0].[CourseID])
) AS [value2],
(
SELECT COUNT(*)
FROM [dbo].[Subscription] AS [t12]
LEFT OUTER JOIN [dbo].[Students] AS [t13]
ON [t13].[StudentsID] = [t12].[StudentsID]
LEFT OUTER JOIN [dbo].[Departments] AS [t14]
ON [t14].[DepartmentID] = [t13].[DepartmentID]
WHERE ([t12].[Completed] >= @p4)
AND ([t12].[Completed] < @p5)
AND ([t12].[Status] = @p6)
AND ([t12].[CourseID] = [t0].[CourseID])
) AS [value3], [t0]
.[ClientID]
FROM [dbo].[Courses] AS [t0]
LEFT OUTER JOIN [dbo].[CourseCategories] AS [t1]
ON [t1].[CourseCatID] = [t0].[CourseCatID]
) AS [t15]
WHERE (([t15].[value] > @p7)
OR ([t15].[value3] > @p8)
OR ([t15].[value2] > @p9))
AND ([t15].[ClientID] = @p10)