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 çevrimiçi dizin oluşturma, yeniden derleme veya bırakma işlemleri açıklanmaktadır. seçeneği, ONLINE bu dizin işlemleri sırasında temel alınan tabloya veya kümelenmiş dizin verilerine ve ilişkili tüm kümelenmemiş dizinlere eşzamanlı kullanıcı erişimi sağlar. Örneğin, kümelenmiş dizin bir kullanıcı tarafından yeniden oluşturulurken, bu kullanıcı ve diğerleri temel alınan verileri güncelleştirmeye ve sorgulamaya devam edebilir.
Kümelenmiş dizin oluşturma veya yeniden derleme gibi veri tanımı dili (DDL) işlemlerini çevrimdışı gerçekleştirdiğinizde, bu işlemler temel alınan veriler ve ilişkili dizinler üzerinde özel (X) kilitler tutar. Bu, dizin işlemi tamamlanana kadar temel alınan verilerde değişiklik ve sorgu yapılmasını önler.
Note
Dizin yeniden oluşturma komutları, büyük bir nesne sütunu bir tablodan bırakıldıktan sonra, çevrimiçi olarak gerçekleştirildiğinde bile kümelenmiş dizinlerde özel kilitler tutabilir.
seçeneği ONLINE aşağıdaki Transact-SQL deyimlerinde kullanılabilir.
- İNDİS OLUŞTUR
- ALTER INDEX
- İNDİSİ BıRAK
-
ALTER TABLE (
UNIQUEveyaPRIMARY KEYkısıtlamalarını eklemek veya kaldırmak için)
Çevrimiçi dizin oluşturma, yeniden oluşturma veya bırakma ile ilgili sınırlamalar ve kısıtlamalar için bkz. Çevrimiçi dizin işlemleri için yönergeler.
Devam ettirilebilen dizin işlemlerini kullanmak için bir dizin işleminin çevrimiçi olarak gerçekleştirilmesi gerekir. Daha fazla bilgi için bkz. Devam edilebilir dizin dikkat edilmesi gerekenler.
Desteklenen platformlar
Çevrimiçi dizin işlemleri SQL Server'ın her sürümünde kullanılamaz. Daha fazla bilgi için, SQL Server 2022 sürümleri ve desteklenen özellikleriyle ilgili ve'a bakın.
Çevrimiçi dizin işlemleri Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'nde kullanılabilir.
Permissions
ALTER Tablo veya görünümde izin gerektirir.
SQL Server Management Studio'yu kullanma
Nesne Gezgini'nde, dizini çevrimiçi olarak yeniden oluşturmak istediğiniz tabloyu içeren veritabanını genişletin.
Tablolar klasörünü genişletin.
Dizini çevrimiçi olarak yeniden oluşturmak istediğiniz tabloyu genişletin.
Dizinler klasörünü genişletin.
Çevrimiçi olarak yeniden oluşturmak istediğiniz dizinin bağlam menüsünü kullanın ve Özellikler'i seçin.
Sayfa seç'in altında Seçenekler'i seçin.
Çevrimiçi DML işlemeye izin ver seçeneğini belirleyin ve ardından listeden True'u seçin.
Tamam'ı seçin.
Çevrimiçi olarak yeniden oluşturmak istediğiniz dizinin bağlam menüsünü kullanın ve Yeniden Oluştur'u seçin.
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.
Transact-SQL kullanma
Aşağıdaki örnek, örnek veritabanındaki mevcut bir çevrimiçi dizini AdventureWorks yeniden oluşturur.
ALTER INDEX AK_Employee_NationalIDNumber
ON HumanResources.Employee
REBUILD WITH (ONLINE = ON);
Aşağıdaki örnek, çevrimiçi olarak bir kümelenmiş dizini siler ve NewGroup yan tümcesini kullanarak sonuçta elde edilen tabloyu (yığın) MOVE TO dosya grubuna taşır.
sys.indexes, sys.tablesve katalog görünümleri, taşımadan önce ve sys.filegroups sonra dosya gruplarında dizin ve tablo yerleşimini doğrulamak için sorgulanır.
-- Create a clustered index on the PRIMARY filegroup if the index does not exist.
IF NOT EXISTS (SELECT name FROM sys.indexes WHERE name =
N'AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate')
CREATE UNIQUE CLUSTERED INDEX
AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate
ON Production.BillOfMaterials (ProductAssemblyID, ComponentID,
StartDate)
ON 'PRIMARY';
GO
-- Verify filegroup location of the clustered index.
SELECT t.name AS [Table Name], i.name AS [Index Name], i.type_desc,
i.data_space_id, f.name AS [Filegroup Name]
FROM sys.indexes AS i
JOIN sys.filegroups AS f ON i.data_space_id = f.data_space_id
JOIN sys.tables as t ON i.object_id = t.object_id
AND i.object_id = OBJECT_ID(N'Production.BillOfMaterials','U')
GO
-- Create filegroup NewGroup if it does not exist.
IF NOT EXISTS (SELECT name FROM sys.filegroups
WHERE name = N'NewGroup')
BEGIN
ALTER DATABASE AdventureWorks2022
ADD FILEGROUP NewGroup;
ALTER DATABASE AdventureWorks2022
ADD FILE (NAME = File1,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\File1.ndf')
TO FILEGROUP NewGroup;
END
GO
-- Verify new filegroup
SELECT * from sys.filegroups;
GO
-- Drop the clustered index and move the BillOfMaterials table to
-- the Newgroup filegroup.
-- Set ONLINE = OFF to execute this example on editions other than Enterprise Edition.
DROP INDEX AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate
ON Production.BillOfMaterials
WITH (ONLINE = ON, MOVE TO NewGroup);
GO
-- Verify filegroup location of the moved table.
SELECT t.name AS [Table Name], i.name AS [Index Name], i.type_desc,
i.data_space_id, f.name AS [Filegroup Name]
FROM sys.indexes AS i
JOIN sys.filegroups AS f ON i.data_space_id = f.data_space_id
JOIN sys.tables as t ON i.object_id = t.object_id
AND i.object_id = OBJECT_ID(N'Production.BillOfMaterials','U');
Daha fazla bilgi için bkz . ALTER INDEX (Transact-SQL).