truncate table (Transact-sql)

Tüm satırlar tek satır silme günlüğü olmadan bir tablodan kaldırır. truncate table, delete deyimi where yan ile benzer; Ancak, truncate table daha hızlı ve daha az sistem ve işlem günlüğü kaynağı kullanır.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

TRUNCATE TABLE 
    [ { database_name .[ schema_name ] . | schema_name . } ]
    table_name
[ ; ]

Bağımsız değişkenler

  • database_name
    Veritabanının adıdır.

  • schema_name
    Tablonun ait olduğu şemanın adıdır.

  • table_name
    Yuvarlamak tablonun ya da tüm satırları kaldırıldı addır.

Açıklamalar

delete deyimi karşılaştırıldığında, truncate table aşağıdaki avantajları vardır:

  • Daha az hareket günlük alanı kullanılır.

    delete deyimi satırların bir anda kaldırır ve Silinen her satır için hareket günlüğüne bir girdi kaydeder. truncate table tablo verilerini depolamak için kullanılan veri sayfalarının ayırmayı kaldırma tarafından verileri kaldırır ve yalnızca sayfa deallocations hareket günlüğüne kaydeder.

  • Daha az kilitleri genellikle kullanılır.

    Bir satır kilidi kullanarak delete deyimi yürütüldüğünde tablodaki her satır silinmek üzere kilitli. truncate table her zaman tablo ve sayfa ama her satır kilitler.

  • İstisnasız sıfır sayfaları tabloda kalır.

    delete deyimi yürütüldükten sonra Tablo hala boş sayfaları içerir. Örneğin, bir yığın boş sayfaları en az bir özel (lck_m_x) tablo kilidi olmadan kaldırıldı edilemez. Silme işlemini bir tablo kilidi kullanmıyorsa, tablo (yığın) birçok boş sayfaları içerir. Her ne kadar bu sayfaları hızlı bir arka plan temizleme işlemi tarafından kaldırıldı dizinler için arkasında, boş sayfaları silme işlemi bırakabilirsiniz.

truncate table bir tablodan tüm satırları kaldırır ancak tablo yapısını ve onun sütunlar, kısıtlamalar, dizinler ve benzeri kalır. Tablo tanımı, verilere ek olarak kaldırmak için drop table deyimi kullanın.

Tabloda bir kimlik sütunu varsa, sayaç o sütun için sütun için tanımlanan tohum değeri sıfırlanır. Hayır tohum tanımlanmışsa, varsayılan 1 değeri kullanılır. Kimlik sayaç korumak için Sil yerine kullanın.

Kısıtlamalar

truncate table kullanamazsınız üzerinde bu tablolar:

  • FOREIGN key kısıtlaması tarafından başvurulan. (Kendisine başvuran yabancı anahtar olan bir tablo kesebilir.)

  • Dizin oluşturulmuş görünüm içinde katılırlar.

  • Birleştirme çoğaltma veya işlem çoğaltma kullanarak yayımlanan.

Bir veya daha bu özelliklere sahip tablolar için bunun yerine delete deyimi kullanın.

Çünkü tek tek satır silme işlemi günlüğe kaydetmez truncate table tetikleyici etkinleştiremezsiniz. Daha fazla bilgi için, bkz. CREATE TRIGGER (Transact-SQL).

Büyük tablolar kesiliyor

Microsoft SQL Serverbirden fazla 128 uzantıların tüm uzantıların eşzamanlı kilitleri tutmadan kesilme tabloları için açılan gereken veya bırakma olanağı vardır.

İzinler

Gerekli en az izni alter açık table_name. truncate table izinleri varsayılan tablo sahibi, üyeleri sysadminsabit sunucu rolü ve db_ownerve db_ddladminsabit veritabanı rolleri ve are değil transferable. Ancak, truncate table deyimi içinde bir saklı yordam gibi bir modül dahil ve modül execute as kullanarak uygun izinler yan tümcesi.

Örnekler

Aşağıdaki örnek, tüm verileri kaldırır JobCandidatetablosu. SELECTönce ve sonra tablolar dahil TRUNCATE TABLEsonuçları karşılaştırmak için deyimi.

USE AdventureWorks2012;
GO
SELECT COUNT(*) AS BeforeTruncateCount 
FROM HumanResources.JobCandidate;
GO
TRUNCATE TABLE HumanResources.JobCandidate;
GO
SELECT COUNT(*) AS AfterTruncateCount 
FROM HumanResources.JobCandidate;
GO

USE AdventureWorks2012;
GO
SELECT COUNT(*) AS BeforeTruncateCount 
FROM HumanResources.JobCandidate;
GO
TRUNCATE TABLE HumanResources.JobCandidate;
GO
SELECT COUNT(*) AS AfterTruncateCount 
FROM HumanResources.JobCandidate;
GO

Ayrıca bkz.

Başvuru

Sil (Transact-sql)

drop table (Transact-sql)

IDENTITY (Özellik) (Transact-SQL)