PARTITION FUNCTION (Transact-sql) oluştur

Geçerli veritabanında belirtilen sütun değerlerine dayalı bölümlere bir tablo veya dizin satırları eşleştiren bir işlev oluşturur. create PARTITION işlevi kullanılarak bölümlenmiş tablo veya dizin oluşturmanın ilk adımı olduğunu. De SQL Server 2012, bir tablo veya dizin-ebilmek-si olmak en fazla 15,000 bölüm.

Konu bağlantısı simgesi Transact-SQL Sözdizim 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şlevi addır. Bölüm işlev adları veritabanı içinde benzersiz olmalı ve için olan kurallara uymak tanımlayıcıları.

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

    Bölümleme sütun olarak, bilinen gerçek sütun create table veya create INDEX deyimi içinde belirtilir.

  • boundary_value
    Bölümlenmiş tablo veya dizin kullanan her bölüm için sınır değerleri belirtir partition_function_name. Eğer boundary_valueolduğu bölüm işlevi tüm tablo ya da dizini kullanarak boş haritalar partition_function_nametek bir bölüm haline. create table veya create INDEX deyiminde belirtilen tek bir bölümleme sütununda kullanılabilir.

    boundary_valuedeğişkenleri başvuru sürekli bir ifadesidir. 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-SQLifadeler. boundary_valuemaç veya sağlanan veri türüne örtük olarak dönüştürülebilir input_parameter_typeve boyut ve ölçek değeri eşleşmiyor ki, onun karşılık gelen bir şekilde örtük dönüştürme sırasında kesilmiş olamaz input_parameter_type.

    [!NOT]

    Eğer boundary_valueoluşan datetimeya smalldatetimerakamları, bu harflerin varsayılarak us_english oturum dildir değerlendirilir. Bu davranış önerilmemektedir. Bölüm işlev tanımının tüm oturum diller için beklendiği gibi davranır emin olmak için tüm dil ayarları, yyyyaagg biçimi gibi aynı şekilde yorumlanır sabitleri kullanmanız önerilir; veya belirli bir stil için harfleri açıkça dönüştürebilirsiniz. Dil oturum sunucunuzun belirlemek için çalıştırın SELECT @@LANGUAGE.

  • ...n
    Tarafından sağlanan değerleri sayısını belirtir boundary_value, 14,999 aşamaz. Oluşturulan bölüm sayısı eşittir n+ 1. Değerleri sırayla listelenmesi gerekmez. Değerler sırayla değilse Veritabanı Altyapısıonları sıralar, işlev oluşturur ve sırayla değerleri sağlanmayan bir uyarı verir. Veritabanı Altyapısı hata döndürür nherhangi bir yinelenen değerler içerir.

  • LEFT | SAĞ
    Her sınır değer aralığı, sola veya sağa, hangi tarafa belirtir boundary_value ,...n aralığı değerleri olarak sıralandığında, ait olduğu Veritabanı Altyapısıartan sırada soldan sağa doğru. Aksi takdirde belirtilen, null varsayılan değerdir.

Açıklamalar

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

Bölümleme sütun null değerlere sahip satırlar en soldaki bölümde bir sınır değer olarak null belirtilirse ve sağ belirtildiği sürece yerleştirilir. Bu durumda, en soldaki bölümü boş bir bölümdür ve null değerleri aşağıdaki bölümde yer alıyor.

İzinler

create PARTITION FUNCTION yürütmek için aşağıdaki izinlerden herhangi biri kullanılabilir:

  • HIÇBIR dataspace alter izni. Bu izni üyeleri için varsayılan sysadmin sabit sunucu rolü ve db_owner ve db_ddladmin veritabanı rolleri sabit.

  • Denetim veya bölüm işlevi oluşturulmaktadır veritabanı üzerinde alter izni.

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

Örnekler

A.ARALIĞIN sol bölüm işlevi bir int sütun oluşturma

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

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

Bölümleme sütun üzerinde bu bölümü işlevini kullanan bir tablo nasıl gösterir aşağıdaki tabloda col1 bölümlenmesi.

Bölüm

1

2

3

4

Değerleri

col1 <=1

col1 > 1 AND col1 <=100

col1 > 100 AND col1 <=1000

col1> 1000

B.SAĞ bölüm işlevi bir int sütun oluşturma

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

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

Bölümleme sütun üzerinde bu bölümü işlevini kullanan bir tablo nasıl gösterir aşağıdaki tabloda col1 bölümlenmesi.

Bölüm

1

2

3

4

Değerleri

col1 < 1

col1 >= 1 AND col1 < 100

col1 >= 100 AND col1 < 1000

col1 >=1000

C.SAĞ bölüm işlevi bir datetime sütun oluşturma

Aşağıdaki bölüm işlevi 12 bölümlerinde, her ay bir yıl değer değerleri bir tablo veya dizin bölümlerini bir datetimesü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 veya bölümleme sütun üzerinde bu bölümü işlevini kullanan dizin nasıl gösterir tablo datecol bölümlenmesi.

Bölüm

1

2

...

11

12

Değerleri

datecol < February 1, 2003

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

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

col1 >=December 1, 2003

D.Bölüm işlevi bir char sütunu oluşturma

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

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

Bölümleme sütun üzerinde bu bölümü işlevini kullanan bir tablo nasıl gösterir aşağıdaki tabloda col1 bölümlenmesi.

Bölüm

1

2

3

4

Değerleri

col1 < EX...

col1 >= EX AND col1 < RXE...

col1 >= RXE AND col1 < XR...

col1 >=XR

E.15.000 Bölümleri oluşturma

Aşağıdaki bölüm işlevi bir tablo ya da dizin 15.000 bölümler.

--Create integer partition function for 15,000 partitions.
DECLARE @IntegerPartitionFunction nvarchar(max) = N'CREATE PARTITION FUNCTION IntegerPartitionFunction (int) AS RANGE RIGHT FOR VALUES (';
DECLARE @i int = 1;
WHILE @i < 14999
BEGIN
    SET @IntegerPartitionFunction += CAST(@i as nvarchar(10)) + N', ';
    SET @i += 1;    
END
SET @IntegerPartitionFunction += CAST(@i as nvarchar(10)) + N');';
EXEC sp_executesql @IntegerPartitionFunction;
GO

F.Çoklu yıl bölümleri oluşturma

Aşağıdaki bölüm işlevi bir tablo ya da dizin 50 üzerinde bölümler bir datetime2sütun. Ocak 2007 ve Ocak 2011 arasında her ay bir bölüm yoktur.

--Create date partition function with increment by month.
DECLARE @DatePartitionFunction nvarchar(max) = N'CREATE PARTITION FUNCTION DatePartitionFunction (datetime2) AS RANGE RIGHT FOR VALUES (';
DECLARE @i datetime2 = '20070101';
WHILE @i < '20110101'
BEGIN
    SET @DatePartitionFunction += '''' + CAST(@i as nvarchar(10)) + '''' + N', ';
    SET @i = DATEADD(MM, 1, @i);    
END
SET @DatePartitionFunction += '''' + CAST(@i as nvarchar(10))+ '''' + N');';
EXEC sp_executesql @DatePartitionFunction;
GO

Ayrıca bkz.

Başvuru

$PARTITION (Transact-sql)

alter PARTITION FUNCTION (Transact-sql)

PARTITION FUNCTION (Transact-sql) bırak

PARTITION düzeni (Transact-sql) oluştur

Tablo (Transact-sql) oluştur

Index (Transact-sql) oluştur

ALTER INDEX (Transact-SQL)

eventdata (Transact-sql)

sys.partition_functions (Transact-sql)

sys.partition_parameters (Transact-sql)

sys.partition_range_values (Transact-sql)

sys.Partitions (Transact-sql)

sys.Tables (Transact-sql)

sys.indexes (Transact-sql)

index_columns (Transact-sql)

Kavramlar

Bölümlenmiş tablolar ve dizinler