我有一个使用SQL Server 2008数据库的ASP.NET Web应用程序。一页有搜索功能。要进行搜索,用户会填写所需的字段,并动态创建SQL查询(使用参数)以返回结果。有时,查询会“卡住”并超时,就像每次尝试从该点向前运行相同查询一样。将运行对查询的任何更改(添加或删除标准)。查询执行一些REPLACE和连接。重新启动SQL Server可以解决问题。
知道造成这种情况的原因是什么,除了重新启动SQL服务器之外还有办法清除它吗?
挂在最新实例中的查询。
SELECT TOP (100) PERCENT dbo.JobTicket.dateStamp, dbo.JobTicket.year + '-' +
RIGHT('000000' + CAST(dbo.JobTicket.jobNumber AS varchar), 6) AS
displayNumber, ISNULL(dbo.Technician.lastName, '') + CASE WHEN
((dbo.Technician.lastname IS NOT NULL) AND (dbo.Technician.firstname
IS NOT NULL)) THEN ', ' ELSE '' END + ISNULL(dbo.Technician.firstName, '')
AS logfullname, dbo.UserAll_VW.userID, dbo.JobTicket.lastName AS userLastName,
dbo.JobTicket.firstName AS userFirstName, dbo.JobTicket.userIDID, CASE WHEN
DATALENGTH(dbo.JobTicket.callDescription) > 50 THEN SUBSTRING
(dbo.JobTicket.callDescription, 0, 47) + '...' ELSE
dbo.JobTicket.callDescription END AS callDescription, dbo.JobTicket.ukey
AS helpDeskUkey, dbo.ClosedJobs_VW.closed, REPLACE(REPLACE(REPLACE(REPLACE
(REPLACE(dbo.Building.building, '/', '/<br/>'), ' - ', '!@#$'), ' ', '<br/>'),
'!@#$', ' -<br/>'), '<br/>', '<br />') AS building
FROM dbo.JobTicket LEFT OUTER JOIN dbo.Technician ON dbo.JobTicket.logRepID =
dbo.Technician.id LEFT OUTER JOIN
dbo.UserAll_VW ON dbo.JobTicket.userIDID = dbo.UserAll_VW.userID + '†' +
dbo.UserAll_VW.domain LEFT OUTER JOIN dbo.ClosedJobs_VW ON
dbo.ClosedJobs_VW.helpDeskID = dbo.JobTicket.ukey LEFT OUTER JOIN
dbo.Building ON dbo.JobTicket.buildingID = dbo.Building.ID
WHERE (ISNULL(dbo.JobTicket.deleted, 'false') = 'false') AND
(dbo.JobTicket.districtID = @districtID) AND (dbo.JobTicket.departmentID =
@department)