2009-10-09 49 views
0

早上所有。自己做了一個簡單的查詢,在SQL Server Management Studio中返回10行。我通過右鍵單擊並輸入參數來調用存儲過程。存儲過程.net數據集類與工作室管理

結果會立即返回。

在.NET中,我們設置了一個數據集類,添加了一個表適配器,其選擇是這個相同的過程。在標準的30秒後,我傳入了相同的參數和執行時間。當在sql server management studio中調用時,它會立即繼續運行。

任何想法爲什麼在.net數據集類中執行時間似乎是無限的。

查詢非常簡單。

+0

你能發表一些代碼嗎?很難說沒有看到任何東西......除非你在數據集中勾選了無限的執行時間屬性? – Paddy 2009-10-09 08:34:47

+0

我發佈到一個單獨的線程 – Robert 2009-10-09 09:53:24

回答

0
ALTER PROCEDURE [dbo].[usp_GetPostcodeAnalysis] 
    -- Add the parameters for the stored procedure here 
    @startDate DATETIME, 
    @endDate DATETIME, 
    @customerID INTEGER = NULL, 
    @siteID INTEGER = -1 
AS 

DECLARE @itemTypeID INT 
SELECT @itemTypeID=ItemTypeID FROM dbo.ItemTypes WHERE ItemTypeName = 'Advert' 

DECLARE @SQL NVARCHAR(4000) 

BEGIN 

SET @SQL = 'SELECT at.ActionTypeName, 
      COUNT(*) AS "Count" 
    FROM CustomerSites cs JOIN Items i 
    ON cs.SiteID = i.SiteID 
    JOIN Actions a 
    ON a.ItemID = i.ItemID 
    JOIN ActionTypes at 
    ON a.ActionTypeID = at.ActionTypeID 
    WHERE a.DateAndTime BETWEEN @1 AND @2 
    AND i.ItemTypeID = @iti 
    AND at.ActionTypeName IN (''List view'', ''Full view'', ''Email enquiry'', ''Print view'', ''Directions'')' 

IF @customerID IS NOT NULL 
    SET @SQL = @SQL + ' AND i.CustomerID = @c' 

IF @siteID > -1 
    SET @SQL = @SQL + ' AND i.SiteID = @s' 


SET @SQL = @SQL + ' GROUP BY 
      at.ActionTypeName 
    ORDER BY 
      at.ActionTypeName' 

EXECUTE sp_executesql @SQL, 
    N'@1 DATETIME, @2 DATETIME, @iti INT, @c INT, @s INT', 
    @startDate, @endDate, @itemTypeID, @customerID, @siteID 
相關問題