Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Bu makalede, SQL Server Management Studio veya Transact-SQL kullanarak SQL Server'da devre dışı bırakılmış bir dizinin nasıl etkinleştirileceği açıklanır. Bir dizin devre dışı bırakıldıktan sonra yeniden yapılandırılıp silinene kadar devre dışı kalır.
Limitations
Dizin yeniden derlendikten sonra, dizini devre dışı bırakma nedeniyle devre dışı bırakılan tüm kısıtlamalar el ile etkinleştirilmelidir.
PRIMARY KEY ve UNIQUE kısıtlamaları, ilişkili dizini yeniden oluşturarak etkinleştirilir.
FOREIGN KEY veya PRIMARY KEY kısıtlamalarına atıfta bulunan UNIQUE kısıtlamalarını etkinleştirebilmeniz için, bu dizinin önce yeniden oluşturulup etkinleştirilmesi gerekir.
FOREIGN KEY kısıtları, ALTER TABLE CHECK CONSTRAINT deyimi kullanılarak etkinleştirilir.
ONLINE seçeneği ON olarak ayarlandığında, devre dışı bırakılmış bir kümelenmiş dizin yeniden oluşturulamaz.
Kümelenmiş dizin devre dışı bırakıldığında veya etkinleştirildiğinde ve kümelenmemiş dizin devre dışı bırakıldığında, kümelenmiş dizin eylemi devre dışı bırakılan kümelenmemiş dizinde aşağıdaki sonuçları içerir.
| Kümelenmiş dizin eylemi | Kümelenmemiş dizin durumu devre dışı bırakıldı |
|---|---|
ALTER INDEX REBUILD |
Devre dışı kalmaya devam eder |
ALTER INDEX ALL REBUILD |
Yeniden oluşturulmuş ve etkin |
DROP INDEX |
Yeniden oluşturulmuş ve etkin |
CREATE INDEX WITH DROP_EXISTING |
Devre dışı kalmaya devam eder |
Yeni bir kümelenmiş dizin oluşturmak, ALTER INDEX ALL REBUILD ile aynı şekilde çalışır.
Kümelenmiş dizinle ilişkili kümelenmemiş dizinlerde izin verilen eylemler, her iki dizin türünün de devre dışı veya etkin durumuna bağlıdır. Aşağıdaki tabloda, kümelenmemiş dizinlerde izin verilen eylemler özetlenmiştir.
| Kümelenmemiş dizin işlemi | Hem kümelenmiş hem de kümelenmemiş dizinler devre dışı bırakıldığında | Kümelenmiş dizin etkinleştirildiğinde ve kümelenmemiş dizin iki durumda da olduğunda |
|---|---|---|
ALTER INDEX REBUILD |
Eylem başarısız oluyor | Eylem başarılı olur |
DROP INDEX |
Eylem başarılı olur | Eylem başarılı olur |
CREATE INDEX WITH DROP_EXISTING |
Eylem başarısız oluyor | Eylem başarılı olur |
Devre dışı bırakılmış sıkıştırılmış kümelenmemiş dizinleri yeniden oluştururken, varsayılan olarak data_compressionkullanılır. Bu, none dizinlerin sıkıştırılmaması anlamına gelir. Bunun nedeni sıkıştırma ayarları meta verilerinin, kümelenmemiş dizinler devre dışı bırakıldığında kaybolmasıdır. Bu sorunu geçici olarak çözmek için rebuild deyiminde açık veri sıkıştırması belirtmeniz gerekir.
Permissions
Tablo veya görünümde ALTER izin gerektirir. Eğer DBCC DBREINDEX kullanıyorsanız, tabloya sahip olmanız veya sysadmin sabit sunucu rolünün, ya da db_ddladmin veya db_owner sabit veritabanı rollerinin üyesi olmanız gerekir.
SQL Server Management Studio'yu kullanma
Devre dışı bırakılmış dizini etkinleştirme
Nesne Gezgini'nde artı işaretini seçerek dizini etkinleştirmek istediğiniz tabloyu içeren veritabanını genişletin.
artı işaretini seçerek Tablolar klasörünü genişletin.
Artı işaretini seçerek dizini etkinleştirmek istediğiniz tabloyu genişletin.
Dizinler klasörünü genişletmek için artı işaretini seçin.
Etkinleştirmek istediğiniz dizine sağ tıklayın ve Yeniden Oluştur'a tıklayın.
Dizinleri Yeniden Oluştur iletişim kutusunda, yeniden oluşturulacak dizinler kılavuzunda doğru dizinin olup olmadığını doğrulayın ve Tamam seçeneğini seçin.
Tablodaki tüm dizinleri etkinleştirme
Nesne Gezgini'nde artı işaretini seçerek dizinleri etkinleştirmek istediğiniz tabloyu içeren veritabanını genişletin.
artı işaretini seçerek Tablolar klasörünü genişletin.
Dizinleri etkinleştirmek istediğiniz tabloyu genişletmek için artı işaretini seçin.
Dizinler klasörüne sağ tıklayın ve Tümünü Yeniden Derle'yi seçin.
Dizinleri Yeniden Oluştur iletişim kutusunda, yeniden oluşturulacak dizinler alanında doğru dizinlerin bulunduğunu doğrulayın ve Tamam seçeneğini seçin. Yeniden derlenecek Dizinler alanından bir dizini kaldırmak için dizini seçin ve Sil tuşuna basın.
Dizinleri Yeniden Oluştur iletişim kutusunda aşağıdaki bilgiler bulunur:
Transact-SQL kullanma
Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.
ALTER INDEX kullanarak devre dışı bırakılmış dizini etkinleştirme
Aşağıdaki Transact-SQL betiğini çalıştırın. Bu örnek, tablodaki IX_Employee_OrganizationLevel_OrganizationNodeHumanResources.Employee dizini etkinleştirir.
USE AdventureWorks2022;
GO
ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee REBUILD;
GO
CREATE INDEX kullanarak devre dışı bırakılmış dizini etkinleştirme
Aşağıdaki Transact-SQL betiğini çalıştırın. Bu örnek, IX_Employee_OrganizationLevel_OrganizationNode dizinini HumanResources.Employee ve OrganizationLevel sütunları kullanarak OrganizationNode tablosunda yeniden oluşturur ve mevcut IX_Employee_OrganizationLevel_OrganizationNode dizinini siler.
USE AdventureWorks2022;
GO
CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee(OrganizationLevel, OrganizationNode) WITH (DROP_EXISTING = ON);
GO
DBCC DBREINDEX kullanarak devre dışı bırakılmış dizini etkinleştirme
Note
Bu özellik, SQL Server'ın gelecek bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın.
Aşağıdaki Transact-SQL betiğini çalıştırın. Bu örnek, tablodaki IX_Employee_OrganizationLevel_OrganizationNodeHumanResources.Employee dizini etkinleştirir.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);
GO
ALTER INDEX kullanarak bir tablodaki tüm dizinleri etkinleştirme
Aşağıdaki Transact-SQL betiğini çalıştırın. Bu örnek tablodaki HumanResources.Employee tüm dizinleri etkinleştirir.
USE AdventureWorks2022;
GO
ALTER INDEX ALL
ON HumanResources.Employee REBUILD;
GO
DBCC DBREINDEX kullanarak bir tablodaki tüm dizinleri etkinleştirme
Note
Bu özellik, SQL Server'ın gelecek bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın.
Aşağıdaki Transact-SQL betiğini çalıştırın. Bu örnek tablodaki HumanResources.Employee tüm dizinleri etkinleştirir.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ("HumanResources.Employee", " ");
GO
İlgili içerik
- alter index (Transact-SQL)
- İNDEKS OLUŞTUR (Transact-SQL)
- DBCC DBREINDEX (Transact-SQL)