0

我在MS SQL Server中有一個簡單的表。SQL Server表簡單選擇查詢花費太長時間

CREATE TABLE [dbo].[Personas] (
[Name] varchar(250) NOT NULL, 
[ID] varchar(250) NOT NULL, 
[IntranetID] varchar(250) NULL, 
[eMail] varchar(250) NULL, 
[Number] varchar(50) NULL, 
[ModifDate] datetime NULL) 
ON [PRIMARY]; 

在截斷並再次向此表中插入數據之後,我無法執行簡單的選擇查詢或簡單計數查詢。進程任務不停地運行。不過,我可以成功地查詢除這一個之外的其他表。

select * from Personas; 
select count(*) from Personas; 

我如何知道發生這種情況的原因以及如何解決? 查詢沒有錯誤消息,所以我不知道錯誤是什麼。我怎麼知道表是否損壞?

我不是SQL Server管理方面的專家,但我試着在下面執行。我不確定這是否是原因,以及如果是這樣,如何解決這個問題。

DBCC SQLPERF(logspace) 

Result: 
Log Size (MB) = 19.6 
Log Space Used (%) = 78.79 
Status = 0 

請給予幫助。先謝謝你。

+1

您是否有任何公開交易?試試'SELECT @@ TRANCOUNT'。它應該是'0'。如果不是,那可能會導致select語句無限期地掛起。 –

+0

嗨湯姆,我剛纔試過了,結果是「0」。除此之外,其他表格都可以。謝謝。 – Jemru

+1

表中有多少行?截斷表可能會導致性能問題,因爲查詢計劃程序未更新,並且索引可能會變成碎片。 –

回答

2

試試這個,

select count(*) from Personas with (nolock) 

注:

如果該查詢返回結果的話,我們可以找出你的表被鎖定在其他一些會議。你必須確定會阻止你的表的會話。您可以殺死該會話或在其中提交交易。

0

對於我來說,斷開SQl數據庫並重新連接它有助於解決問題。

問題是當更新表(很少有事務已經觸發/他們需要提交)。所以我只需要提交交易並關閉它