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 FUNCTION 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ümleme işleviyle yeni bir bölümlenmiş tablo oluşturun ve ardından eski tablodaki verileri, INSERT INTO ... SELECT FROM Transact-SQL deyimini ya da SQL Server Management Studio (SSMS) içindeki Bölüm Yönetme Sihirbazı aracını kullanarak yeni tabloya ekleyin.
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ümcesine sahip Transact-SQLdeyimini kullanarak mevcut bir bölümlenmiş dizini silip yeniden oluşturun. Bir dizi ALTER PARTITION FUNCTION ifade yürütün.
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.
Etkilenen ALTER PARTITION FUNCTION tüm dosya gruplarının çevrimiçi olması gerekir.
İzinler
Aşağıdaki izinlerden herhangi biri, ALTER PARTITION FUNCTION komutunu yürütmek için 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.
Bölümleme işlevinin oluşturulduğu veritabanının sunucusunda CONTROL SERVER veya ALTER ANY DATABASE izni.
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
- ALTER PARTITION FUNCTION (Transact-SQL)
- ayrılmış SQL havuzundaki tabloları bölümleme