Dizinler ve kısıtlamalar devre dışı bırakma

Bir dizin veya kısıtlamaları devre dışı bırakma yöntemi açıklanmıştır SQL Server 2012kullanarak SQL Server Management Studioya Transact-SQL. Bir dizin devre dışı bırakma kullanıcı erişimi dizin ve kümelenmiş dizinler için temel tablo veri engeller. Dizin tanımı kalan meta verileri ve dizin istatistikleri kümelendirilmemiş dizinler üzerinde tutulur. Fiziksel görünüm üzerinde kümelendirilmemiş veya kümelenmiş bir dizin devre dışı bırakma dizin verileri siler. Tablo kümelenmiş bir dizin devre dışı bırakma verilere erişimi engeller; veri hala tablosunda kalır, ancak dizin bırakılan veya yeniden kadar veri düzenleme dili (dml) işlemleri için kullanılamaz.

Bu Konuda

  • Başlamadan Önce

    Sınırlamalar ve Kısıtlamalar

    Güvenlik

  • Bir dizin devre dışı bırakmak için kullanma:

    SQL Server Management Studio

    Transact-SQL

Başlamadan Önce

Sınırlamalar ve Kısıtlamalar

  • Dizin devre dışı iken korunmaz.

  • Sorgu en iyi duruma getiricisi sorgu yürütme planları oluştururken devre dışı bırakılmış dizini dikkate almaz. Ayrıca, referans tablo ipucu ile Engelli dizin sorguları başarısız.

  • Mevcut Engelli dizin olarak aynı adı kullanan bir dizin oluşturamazsınız.

  • Devre dışı bırakılmış bir dizini kesilmesini.

  • Benzersiz bir dizin devre dışı bırakırken, PRIMARY key veya UNIQUE sınırlaması ve diğer tablolardan dizine alınmış sütunlar başvuru tüm FOREIGN key kısıtlamaları da devre dışıdır. Tüm gelen ve giden yabancı anahtar kısıtlamaları temel tablo kümelenmiş bir dizin devre dışı bırakırken de devre dışı bırakılır. Dizin devre dışı olduğunda bir uyarı iletisinde kısıtlaması adları listelenir. Dizini yeniden oluşturuluyor sonra tüm kısıtlamalar el ile tablo check kısıtlaması alter deyimini kullanarak etkinleştirilmesi gerekir.

  • İlişkili kümelenmiş bir dizin devre dışı bırakıldığında kümelendirilmemiş dizinler otomatik olarak devre dışı bırakılır. Kümelenmiş dizin tablo veya görünüm etkin veya tablo kümelenmiş bir dizin bırakılan kadar etkinleştirilemez. Kümelendirilmemiş dizinler, kümelenmiş dizin alter DIZINI YENIDEN tüm deyimini kullanarak etkin sürece açıkça etkinleştirilmelidir.

  • DIZINI YENIDEN alter tüm deyimi oluşturur ve tüm devre dışı bırakılmış dizinler devre dışı dizinler üzerinde görünümler haricinde bir tablo sağlar. Dizinler üzerinde görünümler ayrı DIZINI YENIDEN alter tüm açıklamada etkinleştirilmiş olması gerekir.

  • Tablo kümelenmiş bir dizin devre dışı bırakma bu tablo görünümlerinde tüm kümelenmiş ve kümelendirilmemiş dizinleri de devre dışı bırakır. Bu dizinler sadece olarak başvurulan tablo oluşturulması gerekir.

  • Devre dışı bırakılmış Kümelenmiş bir dizin veri satırları hariç bırakma veya kümelenmiş dizin yeniden oluşturma için erişilemez.

  • Tablo devre dışı bırakılmış bir kümelenmiş dizini olmadığında devre dışı bırakılmış kümelendirilmemiş dizin çevrimiçi yeniden oluşturabilirsiniz. Ancak, çevrimdışı DIZINI YENIDEN alter veya DROP_EXISTING ile create INDEX deyimini kullanırsanız devre dışı bırakılmış bir kümelenmiş dizini her zaman yeniden oluşturmanız gerekir. Çevrimiçi dizin işlemleri hakkında daha fazla bilgi için bkz: Çevrimiçi dizin işlemleri gerçekleştirme.

  • create STATISTICS deyimi başarıyla devre dışı bırakılmış Kümelenmiş bir dizin olan bir tablo üzerinde yürütülemez.

  • AUTO_CREATE_STATISTICS veritabanı seçeneği yeni istatistikleri dizini devre dışı ve aşağıdaki koşulların bir sütun oluşturur:

    • AUTO_CREATE_STATISTICS on olarak ayarlanır

    • Sütun için varolan hiçbir istatistikleri vardır.

    • İstatistikler Sorgu Optimizasyonu sırasında gereklidir.

  • Kümelenmiş bir dizin devre dışı dbcc checkdb temel tablo hakkında; bilgi veremiyorsa Bunun yerine, deyimi kümelenmiş bir dizin devre dışı bırakıldığını bildiriyor. dbcc INDEXDEFRAG devre dışı bırakılmış bir dizin; birleştirmek için kullanılamaz deyim bir hata iletisiyle başarısız olur. Sen-ebilmek kullanma dbcc DBREINDEX engelli bir dizini yeniden oluşturmak için.

Güvenlik

İzinler

ALTER INDEX deyimini yürütmek için, tablo veya görünümde en az ALTER izni gerekir.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

SQL Server Management Studio Kullanarak

Dizin devre dışı bırakmak için

  1. Nesne Explorer'da dizin devre dışı bırakmak istediğiniz tabloyu içeren veritabanını genişletmek için artı işaretini tıklatın.

  2. Genişletmek için artı işaretini tablo ağıl.

  3. Dizin devre dışı bırakmak istediğiniz tabloyu genişletmek için artı işaretini tıklatın.

  4. Genişletmek için artı işaretini Dizinler ağıl.

  5. Devre dışı bırakmak ve seçmek için istediğiniz dizini sağ devre dışı.

  6. İçinde Devre dışı dizinler iletişim kutusunda, doğru dizin içinde olduğundan emin olun devre dışı bırakmak için dizinler ızgara ve tıklayın Tamam.

Bir tablodaki tüm dizinleri devre dışı bırakmak için

  1. Nesne Explorer'da dizinleri devre dışı bırakmak istediğiniz tabloyu içeren veritabanını genişletmek için artı işaretini tıklatın.

  2. Genişletmek için artı işaretini tablo ağıl.

  3. Dizinler devre dışı bırakmak istediğiniz tabloyu genişletmek için artı işaretini tıklatın.

  4. Sağ Dizinler ağıl ve seçme Devre dışı bırakmak tüm.

  5. İçinde Devre dışı dizinler iletişim kutusunda, doğru dizinler içinde olduğundan emin olun devre dışı bırakmak için dizinler ızgara ve tıklayın Tamam. Bir dizinden kaldırmak için devre dışı bırakmak için dizinler kılavuz dizini seçin ve sonra Delete tuşuna basın.

Aşağıdaki bilgiler mevcuttur Devre dışı dizinler iletişim kutusu:

  • Dizin adı
    Dizin adını görüntüler. Yürütme sırasında bu sütunda da durumunu gösteren bir simge görüntüler.

  • Tablo Adı
    Tablo veya üzerinde dizin oluşturulmuş görünüm adını görüntüler.

  • Dizin türü
    Dizin türünü görüntüler: Clustered, Nonclustered, Spatial, veya xml.

  • Durum
    Devre dışı bırakma işlemi durumunu görüntüler. Sonra yürütme olası değerler şunlardır:

    • Boş

      Yürütme kala durum boştur.

    • Devam ediyor

      Dizinler devre dışı bırakma başlatıldı ancak tamamlanmadı.

    • Başarı

      Devre dışı bırakma işlemi başarıyla tamamlandı.

    • Hata

      Dizin devre dışı bırakma işlemi sırasında bir hatayla karşılaşıldı ve işlem başarıyla tamamlanmadı.

    • Durdu

      Kullanıcı işlemi durduruldu çünkü devre dışı bırakma dizin başarıyla tamamlanamadı.

  • İleti
    Devre dışı bırakma işlemi sırasında hata iletisi metnini sağlar. Yürütme sırasında hatalar köprüler olarak görüntülenir. Köprüler metin gövdesi hata açıklanır. Mesaj sütun nadiren tam ileti metnini okumak yeterince geniş. Tam metin almanın iki yolu vardır:

    • Fare işaretçisini bir ToolTip ile hata metnini görüntülemek için ileti hücrenin üzerinde hareket ettirin.

    • Tam hatayı görüntüleyen bir iletişim kutusu görüntülemek için köprüyü tıklatın.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Transact-SQL'i Kullanma

Dizin devre dışı bırakmak için

  1. İçinde Object Explorer, örneğine bağlanmak Veritabanı Altyapısı.

  2. Standart çubuğunda Yeni sorgu.

  3. Kopyalama ve aşağıdaki örnek sorgu penceresine yapıştırın ve tıkırtı Execute.

    USE AdventureWorks2012;
    GO
    -- disables the IX_Employee_OrganizationLevel_OrganizationNode index
    -- on the HumanResources.Employee table
    ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee
    DISABLE;
    

Bir tablodaki tüm dizinleri devre dışı bırakmak için

  1. İçinde Object Explorer, örneğine bağlanmak Veritabanı Altyapısı.

  2. Standart çubuğunda Yeni sorgu.

  3. Kopyalama ve aşağıdaki örnek sorgu penceresine yapıştırın ve tıkırtı Execute.

    USE AdventureWorks2012;
    GO
    -- Disables all indexes on the HumanResources.Employee table.
    ALTER INDEX ALL ON HumanResources.Employee
    DISABLE;
    

Daha fazla bilgi için, bkz. ALTER INDEX (Transact-SQL).

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]