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ı
Transact-SQL kullanarak bölümlenmiş tablonun veya dizinin bölüm işlevinde belirtilen bölüm sayısını 1'in artımlarıyla ekleyerek veya çıkararak SQL Server, Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'nde tablo veya dizinin bölümlenme şeklini değiştirebilirsiniz. Bir bölüm eklediğinizde, var olan bir bölümü iki bölüme "bölerek" ve yeni bölümlerin sınırlarını yeniden tanımlayarak bunu yaparsınız. Bir bölümü kaldırdığınızda, iki bölümleme sınırlarını tek bir bölümlemeye "birleştirerek" bunu yaparsınız. Bu son eylem, bir bölümü yeniden doldurur ve diğer bölümü atanmamış olarak bırakır. Bölüm işlevini değiştirmeden önce en iyi yöntemleri gözden geçirin.
Dikkat
Birden fazla tablo veya dizin aynı bölüm işlevini kullanabilir. Bir bölüm işlevini değiştirdiğinizde, bunların tümünü tek bir işlemde etkilersiniz. değiştirmeden önce bölüm işlevinin bağımlılıklarını denetleyin.
Tablo bölümleme, Azure Synapse Analytics'teki ayrılmış SQL havuzlarında da kullanılabilir ve bazı söz dizimi farklılıkları vardır. ayrılmış SQL havuzundaki Bölümleme tablolarıhakkında daha fazla bilgi edinin.
Sınırlama
ALTER PARTITION IŞLEVI, yalnızca bir bölümü iki bölüme bölmek veya iki bölümü tek bir bölüme birleştirmek için kullanılabilir. Tablo veya dizinin bölümlenme biçimini değiştirmek için (örneğin, 10 bölümden 5 bölüme), aşağıdaki seçeneklerden herhangi birini kullanabilirsiniz:
İstenen bölüm fonksiyonu ile yeni bir bölümlenmiş tablo oluşturun ve ardından INSERT INTO ... SELECT FROM Transact-SQL deyimini kullanarak eski tablodaki verileri yeni tabloya ekleyin veya SQL Server Management Studio (SSMS) 'ünde Bölüm Yönetme Sihirbazı'yi kullanın.
Yığında bölümlenmiş kümelenmiş dizin oluşturun.
Not
Bölümlenmiş kümelenmiş indeksin bırakılması, bölümlenmiş bir yığın oluşmasına neden olur.
DROP EXISTING = ON yan tümcesiyle Transact-SQL CREATE INDEX deyimini kullanarak mevcut bölümlenmiş dizini bırakın ve yeniden oluşturun.
ALTER PARTITION FUNCTION ifadelerinin bir dizisini gerçekleştirin.
Veritabanı altyapısı, bölüm işlevini değiştirmek için çoğaltma desteği sağlamaz. Yayın veritabanındaki bir bölüm işlevinde değişiklik yapmak istiyorsanız, bunu abonelik veritabanında el ile yapmanız gerekir.
ALTER PARTITION FUNCTION işlevinden etkilenen tüm dosya gruplarının çevrimiçi olması gerekir.
İzinler
ALTER PARTITION FUNCTION'ı yürütmek için aşağıdaki izinlerden herhangi biri kullanılabilir:
HERHANGİ BİR DATASPACE İZNİNİ DEĞİŞTİRİN. Bu izin varsayılan olarak sysadmin sabit sunucu rolünün üyelerine ve db_owner ve db_ddladmin sabit veritabanı rollerinin üyelerine tanımlıdır.
Bölüm işlevinin oluşturulduğu veritabanında CONTROL veya ALTER izni.
CONTROL SERVER veya ALTER ANY DATABASE izinleri, bölümleme fonksiyonunun oluşturulduğu veritabanının sunucusunda.
Veritabanında bölümlenmiş nesneleri sorgulama
Aşağıdaki sorgu veritabanındaki tüm bölümlenmiş nesneleri listeler. Bu, bölüm işlevini değiştirmeden önce bağımlılıkları denetlemek için kullanılabilir.
SELECT
PF.name AS PartitionFunction,
ds.name AS PartitionScheme,
OBJECT_SCHEMA_NAME(si.object_id) as SchemaName,
OBJECT_NAME(si.object_id) AS PartitionedTable,
si.name as IndexName
FROM sys.indexes AS si
JOIN sys.data_spaces AS ds
ON ds.data_space_id = si.data_space_id
JOIN sys.partition_schemes AS PS
ON PS.data_space_id = si.data_space_id
JOIN sys.partition_functions AS PF
ON PF.function_id = PS.function_id
WHERE ds.type = 'PS'
AND OBJECTPROPERTYEX(si.object_id, 'BaseType') = 'U'
ORDER BY PartitionFunction, PartitionScheme, SchemaName, PartitionedTable;
Bölümü Transact-SQL ile bölme
Nesne Gezginihedef veritabanınıza bağlanın.
Standart çubuğunda Yeni Sorguseçin.
Aşağıdaki örneği kopyalayıp sorgu penceresine yapıştırın ve Executeöğesini seçin.
Bu örnek:
- Bölüm işlevinin önceki bir sürümünü
myRangePF1denetler ve bulunursa siler. - Tabloyu dört bölüme bölen
myRangePF1adlı bir bölüm işlevi oluşturur. - boundary_values 100 ile 1000 arasındaki bölümü, 100 ile 500 arasında bir bölüm ve 500 ile 1000 arasında bir bölüm oluşturmak üzere böler.
IF EXISTS (SELECT * FROM sys.partition_functions WHERE name = 'myRangePF1') DROP PARTITION FUNCTION myRangePF1; GO CREATE PARTITION FUNCTION myRangePF1 (int) AS RANGE LEFT FOR VALUES ( 1, 100, 1000 ); GO ALTER PARTITION FUNCTION myRangePF1 () SPLIT RANGE (500);- Bölüm işlevinin önceki bir sürümünü
İki bölümü Transact-SQL ile birleştirme
Nesne Gezginihedef veritabanınıza bağlanın.
Standart çubuğunda Yeni Sorguseçin.
Aşağıdaki örneği kopyalayıp sorgu penceresine yapıştırın ve Executeöğesini seçin.
Bu örnek:
- Bölüm işlevinin önceki bir sürümünün
myRangePF1olup olmadığını denetler ve bulunursa siler. - Üç sınır değeriyle tanımlanan ve dört bölümle sonuçlanacak
myRangePF1adlı bir bölüm işlevi oluşturur. - 1 ile 100 arasındaki sınır_değerleri bölümünü, 100 ile 1.000 arasındaki sınır_değerleri bölümüyle birleştirir.
- Bu, bölüm işlevi
myRangePF11 ve 1.000 olmak üzere iki sınır noktasına sahip olmasına neden olur.
IF EXISTS (SELECT * FROM sys.partition_functions WHERE name = 'myRangePF1') DROP PARTITION FUNCTION myRangePF1; GO CREATE PARTITION FUNCTION myRangePF1 (int) AS RANGE LEFT FOR VALUES ( 1, 100, 1000 ); GO ALTER PARTITION FUNCTION myRangePF1 () MERGE RANGE (100);- Bölüm işlevinin önceki bir sürümünün
SSMS ile bölüm işlevini silme
Nesne Gezginihedef veritabanınıza bağlanın.
Bölüm işlevini silmek istediğiniz veritabanını genişletin ve ardından Depolama klasörünü genişletin.
Bölüm İşlevleri klasörünü genişletin.
Silmek istediğiniz bölüm işlevine sağ tıklayın ve Silöğesini seçin.
Nesne Sil iletişim kutusunda doğru bölümleme işlevinin seçili olduğundan emin olun ve ardından Tamam'ıseçin.
Sonraki adımlar
aşağıdaki makalelerde ilgili kavramlar hakkında daha fazla bilgi edinin:
- Bölümlü tablolar ve dizinler
- bölümlenmiş tablolar ve dizinler oluşturma
- PARTİSYON FONKSİYONUNU DEĞİŞTİR (Transact-SQL)
- ayrılmış SQL havuzundaki tabloları bölümleme