您目前已離線,請等候您的網際網路重新連線

資料表使用的空間是不完全之後發行使用 DELETE 陳述式來刪除在 SQL Server 資料表中的資料

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:913399
Bug #: 219514 (SQL Server 8.0)
徵狀
在 Microsoft SQL Server 」 使用 DELETE 陳述式的從資料表刪除資料之後,您可能會發現不完全釋放資料表使用的空間。當您接著嘗試將資料插入資料庫中時,您可能會收到下列錯誤訊息:
無法配置空間給資料庫中的物件 'TableName ' ' DatabaseName' 'PRIMARY' 的檔案群組已滿。
附註TableName 表示資料表的名稱。DatabaseName 代表包含資料表的資料庫名稱。
發生的原因
SQL Server 只會釋放堆積表格使用下列情況成立時的所有網頁,就會發生這個問題:
  • 此資料表上的刪除,就會發生。
  • 資料表層級鎖定是不予保留。
附註堆積資料表是任何與叢集索引沒有關聯的資料表。

如果網頁不會解除配置,其他資料庫中的物件不能重複使用網頁。

不過,啟用 [SQL Server 2005 資料庫中的一個資料列版本控制隔離層級時的網頁無法釋放即使保留資料表層級鎖定。如需有關資料列版本控制隔離層級的詳細資訊,請參閱 SQL Server 2005 線上叢書 》 中 < 使用資料列版本為基礎的隔離層級 > 主題]。
其他可行方案
如果要解決這個問題而定,使用 [下列的其中一個方法]:
  • 如果未啟用資料列版本控制隔離層級,請在 DELETE 陳述式中包含 TABLOCK 提示。比方說使用類似下列的陳述式:
    DELETE FROM <TableName> WITH (TABLOCK)
    注意<TableName> 表示資料表的名稱。
  • 如果您想要刪除該資料表中的所有記錄,請使用截斷 TABLE 陳述式。比方說使用類似下列的陳述式:
    TRUNCATE TABLE <TableName>
  • 在資料表的資料行上建立叢集的索引。如需有關如何在資料表上建立叢集的索引的詳細資訊,請參閱 SQL Server 線上叢書 》 中的 [< 建立叢集索引"] 主題。
狀況說明
Microsoft 已確認<適用於>一節所列之 Microsoft 產品確實有此問題。

警告:本文為自動翻譯

內容

文章識別碼:913399 - 最後檢閱時間:11/02/2007 09:50:43 - 修訂: 1.2

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 Desktop Engine (Windows), Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 7.0 Standard Edition

  • kbmt kbexpertiseadvanced kbprb KB913399 KbMtzh
意見反應