Bölüm işlevi (Transact-SQL) oluştur

Geçerli veritabanında belirtilen sütundeğerlerini temel alan bölümlere bir tablo veya dizin satırları eşleştiren bir işlev oluşturur.Bölüm işlevi oluşturma kullanılarak bir bölümlenmiş tablo ya da dizin oluşturma ilk adımıdır.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

CREATE PARTITION FUNCTION partition_function_name ( input_parameter_type )
AS RANGE [ LEFT | RIGHT ] 
FOR VALUES ( [ boundary_value [ ,...n ] ] ) 
[ ; ]

Bağımsız değişkenler

  • partition_function_name
    Bölüm işlevaddır.Bölüm işlev adları veritabanı içinde benzersiz olması ve kurallarına uymanız tanımlayıcıları.

  • input_parameter_type
    bölümlemeiçin kullanılan sütun veri türüdür.bölümleme sütun olarak kullanmak üzere geçerli tüm veri türleri dışında text, ntext, image, xml, timestamp, varchar(max), nvarchar(max), varbinary(max), diğer ad veri türü veya clr kullanıcı tanımlı veri türleri.

    Bir bölümlemesütunolarak bilinen gerçek sütuncreate table veya create INDEX deyimbelirtilir.

  • boundary_value
    bölümlenmiş tablo veya dizin kullanan her bölüm için sınır değerleri belirtir partition_function_name.boundary_value Olan boş, bölüm işlev tüm tablo veya dizin kullanarak eşler partition_function_name tek bir bölüm.create table veya create INDEX deyim, belirtilen tek bir bölümlemesütunkullanılabilir.

    boundary_valuedeğişkenleri başvuruda bulunabilir bir sabit ifade edilir.Bu kullanıcı tanımlı tür değişkenleri veya işlevleri ve kullanıcı tanımlı işlevler içerir.Başvuru yapamazsınız Transact-SQL ifadeler.boundary_valueeşleşen veya tarafından veri türüne örtük olarak dönüştürülebilir input_parameter_typeve boyut ve ölçek değeri eşleşmiyor olduğunu, kendi karşılık gelen bir şekilde örtük dönüştürme sırasında kesilmiş olamaz input_parameter_type.

    Not

    boundary_value Oluşur datetime veya smalldatetime hazır, bu harflerin varsayılarak us_english dir. oturum dili değerlendirilirBu davranış önerilmiyor.Bölüm işlev tanımı tüm oturum diller için beklendiği gibi davranan emin olmak için yyyyaagg biçimi gibi tüm dil ayarları ile aynı şekilde yorumlanır sabitleri kullanmanız önerilir; veya belirli bir stil için harfleri açıkça dönüştürün.Daha fazla bilgi için, bkz. Uluslararası Transact-sql deyimleri yazma.Sunucunuzun oturum dili belirlemek için çalıştırmak SELECT @@LANGUAGE.

  • ...n
    Tarafından sağlanan değerleri sayısını belirtir boundary_value, 999 aşamaz.Oluşturulan bölüm sayısı eşittir n + 1.Değerleri sırayla listelenmesi gerekmez.Değerleri sırasıyla değilseniz Veritabanı Altyapısı bunları sıralar, işlevoluşturur ve değerler değil sipariş sağlanan bir uyarı verirVeritabanı Altyapısı hata verir n içeren yinelenen herhangi değerleri.

  • LEFT | SAĞA
    Hangi tarafının her sınır değer aralığı, sola veya sağa belirtir boundary_value**,**...n aralığı değerlerini sıralanır, ait Veritabanı Altyapısı artan sırada soldan sağa doğru.Aksi takdirde belirtilen, sol varsayılandır.Daha fazla bilgi için bkz: örnekleri.

Açıklamalar

Bölüm işlev kapsam içinde oluşturulan veritabanı sınırlıdır.Veritabanı içinde bölüm işlevleri diğer işlevler ayrı bir ad alanında bulunur.

bölümlemesütun null değerlere sahip satırlar sınır değer olarak null belirtilirse ve sağ gösterdiği sürece en sol bölümünde yer alır. Bu durum, en soldaki bölümü boş bir bölümdür ve null değerleri aşağıdaki bölümde yerleştirilir.

İzinler

yürütmek için bölüm işlevi oluşturma, aşağıdaki izinlerden herhangi biri kullanılabilir:

  • alter any dataspace izni.Bu izin, üyeleri için varsayılan sysadmin sabit sunucu rolü ve db_owner ve db_ddladmin veritabanı rolleri sabit.

  • Bölüm işlev oluşturulmaktadır veritabanı control veya alter izni.

  • Bölüm işlev oluşturulmaktadır veritabanının control server veya alter any database izni sunucu üzerinde.

Örnekler

A.ARALIĞIN Sol bölüm işlev bir int sütunoluşturma

Aşağıdaki bölüm işlev bir tablo ya da dizin dört bölüm bölümlenir.

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

Aşağıdaki tablo , nasıl bunu kullanan bir tablo bölüm işlev bölümlemesütungösterircol1 bölümlenmiş.

Bölüm

1

2

3

4

Değerler

col1 <=1

col1 > 1 AND col1 <=100

col1 > 100 AND col1 <=1000

col1> 1000

B.Bir ARALIĞI sağ bölüm işlev bir int sütunoluşturma

Aşağıdaki bölüm işlev için aynı değerleri kullanır boundary_value**,**...n ARALIĞI sağ belirtir dışında önceki örnek olarak.

CREATE PARTITION FUNCTION myRangePF2 (int)
AS RANGE RIGHT FOR VALUES (1, 100, 1000);

Aşağıdaki tablo , nasıl bunu kullanan bir tablo bölüm işlev bölümlemesütungösterircol1 bölümlenmiş.

Bölüm

1

2

3

4

Değerler

col1 < 1

col1 >= 1 AND col1 < 100

col1 >= 100 AND col1 < 1000

col1 >=1000

C.Bir ARALIĞI sağ bölüm işlev bir datetime sütunoluşturma

Aşağıdaki bölüm işlev değerleri değerinde bir yılın her ayı için 12 bölümlerinde bir tablo ya da dizin bölümlerini bir datetime sütun.

CREATE PARTITION FUNCTION [myDateRangePF1] (datetime)
AS RANGE RIGHT FOR VALUES ('20030201', '20030301', '20030401',
               '20030501', '20030601', '20030701', '20030801', 
               '20030901', '20031001', '20031101', '20031201');

Aşağıdaki tablo , nasıl bir tablo ya da bunu kullanan dizin bölüm işlev bölümlemesütungösterirdatecol bölümlenmiş.

Bölüm

1

2

...

11

12

Değerler

datecol < February 1, 2003

datecol >= February 1, 2003 ve datecol < March 1, 2003

datecol >= November 1, 2003 AND col1 < December 1, 2003

col1 >=December 1, 2003

D.Bölüm işlev bir char sütunoluşturma

Aşağıdaki bölüm işlev bir tablo ya da dizin dört bölümler.

CREATE PARTITION FUNCTION myRangePF3 (char(20))
AS RANGE RIGHT FOR VALUES ('EX', 'RXE', 'XR');

Aşağıdaki tablo , nasıl bunu kullanan bir tablo bölüm işlev bölümlemesütungösterircol1 bölümlenmiş.

Bölüm

1

2

3

4

Değerler

col1 < EX...

col1 >= EX AND col1 < RXE...

col1 >= RXE AND col1 < XR...

col1 >=XR