Aracılığıyla paylaş


CREATE PARTITION SCHEME (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen Örneği

Geçerli veritabanında, bölümlenmiş tablo veya dizinin bölümlerini bir veya daha fazla dosya grubuyla eşleyen bir düzen oluşturur. Bir tablo veya dizinin satırlarını bölümlere eşleyen değerler, bölüm işlevinde belirtilir. Bölüm şeması oluşturmadan önce bir bölüm işlevi CREATE PARTITION FUNCTION deyiminde oluşturulmalıdır.

Not

Azure SQL Veritabanı'nda yalnızca birincil dosya grupları desteklenir. Dosya Grupları'nda dosya grupları ve bölümleme stratejileri hakkında daha fazla bilgi edinin.

Transact-SQL söz dizimi kuralları

Sözdizimi

CREATE PARTITION SCHEME partition_scheme_name
AS PARTITION partition_function_name
[ ALL ] TO ( { file_group_name | [ PRIMARY ] } [ , ...n ] )
[ ; ]

Bağımsız değişken

partition_scheme_name

Bölüm düzeninin adı. Bölüm düzeni adları veritabanında benzersiz olmalı vetanımlayıcılarının kurallarına uymalıdır.

partition_function_name

Bölüm düzenini kullanan bölüm işlevinin adı. Bölüm işlevi tarafından oluşturulan bölümler, bölüm düzeninde belirtilen dosya gruplarına eşlenir. partition_function_name veritabanında zaten mevcut olmalıdır. Tek bir bölüm hem FILESTREAM hem de FILESTREAM olmayan dosya gruplarını içeremez.

TÜM

Tüm bölümlerin file_group_nameiçinde sağlanan dosya grubuyla veya [PRIMARY] belirtilirse birincil dosya grubuyla eşlendiğini belirtir. ALL belirtilirse, yalnızca bir file_group_name belirtilebilir.

file_group_name | [ BİRİnCİl ] [ , ...n ]

partition_function_nametarafından belirtilen bölümleri tutmak için dosya gruplarının adlarını belirtir. file_group_name veritabanında zaten var olmalıdır.

[PRIMARY] belirtilirse, bölüm birincil dosya grubunda depolanır. ALL belirtilirse, yalnızca bir file_group_name belirtilebilir. Bölümler, bölüm 1'den başlayarak dosya gruplarına, dosya gruplarının [, ...<n>]içinde listelendiği sırayla atanır. aynı file_group_name[, ...<n>]içinde birden fazla kez belirtilebilir. npartition_function_nameiçinde belirtilen bölüm sayısını tutmak için yeterli değilse CREATE PARTITION SCHEME hatayla başarısız olur.

partition_function_name dosya gruplarından daha az bölüm oluşturursa, atanmamış ilk dosya grubu NEXT USEDolarak işaretlenir ve NEXT USED dosya grubunu adlandıran bir bilgi iletisi görüntülenir. ALL belirtilirse, tek file_group_name bu NEXT USEDiçin özelliğini korur. NEXT USED dosya grubu, bir ALTER PARTITION FUNCTION deyiminde oluşturulduysa ek bir bölüm alır. Yeni bölümleri tutmak üzere atanmamış daha fazla dosya grubu oluşturmak için ALTER PARTITION SCHEMEkullanın.

birincil dosya grubunu <file_group_name> [, ...<n>]içinde belirttiğinizde, anahtar sözcük olduğundan PRIMARY[PRIMARY]gibi sınırlandırılmalıdır.

SQL Veritabanı için yalnızca PRIMARY desteklenir. Bkz. örnek E.

İzinler

CREATE PARTITION SCHEMEyürütmek için aşağıdaki izinler kullanılabilir:

  • ALTER ANY DATASPACE izni. Bu izin varsayılan olarak sysadmin sabit sunucu rolünün üyeleriyle db_owner ve sabit veritabanı rollerini db_ddladmin.

  • Bölüm düzeninin oluşturulduğu veritabanında CONTROL veya ALTER izni.

  • Bölüm düzeninin oluşturulduğu veritabanının sunucusunda CONTROL SERVER veya ALTER ANY DATABASE izni.

Örnekler

A. Her bölümü farklı bir dosya grubuna eşleyen bir bölüm düzeni oluşturma

Aşağıdaki örnek, bir tabloyu veya dizini dört bölüme bölmek için bir bölüm işlevi oluşturur. Ardından, dört bölümden her birini barındıracak dosya gruplarını belirten bir bölüm düzeni oluşturulur. Bu örnekte dosya gruplarının veritabanında zaten var olduğu varsayılır.

CREATE PARTITION FUNCTION myRangePF1(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
TO (test1fg, test2fg, test3fg, test4fg);

Bölümleme sütunu myRangePF1 bölümleme işlevi col1 kullanan bir tablonun bölümleri aşağıdaki tabloda gösterildiği gibi atanabilir.

Dosya Grubu Bölüm Değer
test1fg 1 col1 <= 1
test2fg 2 col1 > 1 AND col1<= 100
test3fg 3 col1 > 100 AND col1<= 1000
test4fg 4 col1 > 1000

B. Birden çok bölümü aynı dosya grubuna eşleyen bir bölüm düzeni oluşturma

Tüm bölümler aynı dosya grubuyla eşlenmişse ALL anahtar sözcüğünü kullanın. Ancak bölümlerin tümü değil de birden çok sayıda olması durumunda, aşağıdaki örnekte gösterildiği gibi dosya grubu adı yinelenmelidir.

CREATE PARTITION FUNCTION myRangePF2(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS2
AS PARTITION myRangePF2
TO (test1fg, test1fg, test1fg, test2fg);

Bölümleme sütunu myRangePF2 bölümleme işlevi col1 kullanan bir tablonun bölümleri aşağıdaki tabloda gösterildiği gibi atanabilir.

Dosya Grubu Bölüm Değer
test1fg 1 col1 <= 1
test1fg 2 col1 > 1 AND col1<= 100
test1fg 3 col1 > 100 AND col1<= 1000
test2fg 4 col1 > 1000

C. Tüm bölümleri aynı dosya grubuna eşleyen bir bölüm düzeni oluşturma

Aşağıdaki örnek, önceki örneklerle aynı bölüm işlevini oluşturur ve tüm bölümleri aynı dosya grubuna eşleyen bir bölüm düzeni oluşturulur.

CREATE PARTITION FUNCTION myRangePF3(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS3
AS PARTITION myRangePF3
ALL TO (test1fg);

D. NEXT USED dosya grubunu belirten bir bölüm düzeni oluşturma

Aşağıdaki örnek, önceki örneklerde olduğu gibi aynı bölüm işlevini oluşturur. Ayrıca, ilişkili bölüm işlevi tarafından oluşturulan bölümlerden daha fazla dosya grubunu listeleyen bir bölüm düzeni oluşturur.

CREATE PARTITION FUNCTION myRangePF4(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS4
AS PARTITION myRangePF4
TO (test1fg, test2fg, test3fg, test4fg, test5fg);

deyimi yürütülürken aşağıdaki ileti döndürülür.

Partition scheme 'myRangePS4' has been created successfully. 'test5fg' is marked as the next used filegroup in partition scheme 'myRangePS4'.

Bölüm işlevi myRangePF4 bölüm eklemek için değiştirilirse, dosya grubu test5fg yeni oluşturulan bölümü alır.

E. Yalnızca BİRİnCİl'de bölüm düzeni oluşturma

Azure SQL Veritabanı'nda dosya ve dosya grupları ekleme desteklenmez, ancak tablo bölümleme yalnızca PRIMARY dosya grubu genelinde bölümlenerek desteklenir.

Aşağıdaki örnek, bir tabloyu veya dizini dört bölüme bölmek için bir bölüm işlevi oluşturur. Ardından, tüm bölümlerin PRIMARY dosya grubunda oluşturulduğunu belirten bir bölüm düzeni oluşturulur.

CREATE PARTITION FUNCTION myRangePF1(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
ALL TO ([PRIMARY]);