Megosztás a következőn keresztül:


CREATE PARTITION FUNCTION (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Létrehoz egy függvényt a jelenlegi adatbázisban, amely egy tábla vagy index sorait partíciókra képezi egy meghatározott oszlop értékei alapján. A CREATE PARTITION FUNCTION használata az első lépés egy particionált tábla vagy index létrehozásában. Egy táblázat vagy index legfeljebb 15 000 partícióval rendelkezhet.

Transact-SQL szintaxis konvenciók

Szemantika

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

Arguments

partition_function_name
A partíciós függvény neve. A partíciós függvényneveknek egyedinek kell lenniük az adatbázison belül, és megfelelniük kell az azonosítók szabályainak.

input_parameter_type
Az oszlop adattípusa, amelyet a partícióhoz használnak. Minden adattípus érvényes partíciós oszlopként való használatra, kivéve a szöveget, ntextet, képet, xml-t, időbélyeget, varchar(max), nvarchar(max), varbinary(max), alias adattípusokat vagy CLR felhasználó által definiált adattípusokat.

A tényleges oszlop, az úgynevezett partíciós oszlop, a CREATE TABLE vagy CREATE INDEX utasításokban van megadva.

boundary_value
Megadja a szeginált táblák vagy indexek minden partíciójának határértékeit, amely partition_function_name-t használ. Ha boundary_value üres, a partíciós függvény az egész táblát vagy indexet partition_function_name segítségével egyetlen partícióra képezi. Csak egy partíciós oszlop használható, amelyet egy CREATE TABLE vagy CREATE INDEX utasításban jelöltek meg.

boundary_value egy állandó kifejezés, amely képes változókra hivatkozni. Ez magában foglalja a felhasználó által definiált típusváltozókat, vagyis a függvényeket és a felhasználó által definiált függvényeket. Nem hivatkozhat Transact-SQL kifejezésekre. boundary_value vagy egyezik, vagy implicit módon átalakíthatónak kell lennie az input_parameter_type-ben megadott adattípusra, és nem lehet lerövidíteni implicit átalakítás során úgy, hogy az érték mérete és mérete ne egyezzen meg a megfelelő input_parameter_type értékével.

Megjegyzés:

Ha boundary_valuedatetime vagy littledatetime literalokból áll, ezeket a literálisokat úgy értékelik, hogy us_english a session nyelv. Ez a viselkedés leértékelt. Annak érdekében, hogy a partíciós függvény definíciója minden session nyelvnél elvárt módon viselkedjen, javasoljuk, hogy használj olyan állandókat, amelyeket minden nyelvi beállításnál ugyanúgy értelmeznek, például a yyyymmdd formátumban; vagy kifejezetten átalakítani a szó szerinti szavakat egy adott stílusra. A szerver nyelvi szekciójának meghatározásához futtatd SELECT @@LANGUAGEa .

További információ: Konstans dátumsztringek nemdeterminisztikus konvertálása DÁTUM értékekké.

... n
Megadja az boundary_value által megadott értékek számát, amely nem haladja meg a 14 999-et. A létrehozott partíciók száma n + 1-gyel. Az értékeket nem kell sorrendben felsorolni. Ha az értékek nincsenek sorrendben, az adatbázis motor rendezi őket, létrehozza a függvényt, és figyelmeztet, hogy az értékek nincsenek sorrendben. Az Adatbázis Motor hibát ad vissza, ha n tartalmaz bármilyen duplikált értéket.

BAL | JOBBRA
Megadja, hogy a határérték-intervallum melyik oldalán, balra vagy jobbra, a boundary_value [ ,... n ] tartozik, amikor az intervallumértékeket az Adatbázis Motor növekvő sorrendben rendezi balról jobbra. Ha nincs megadva, akkor a BAL alapértelmezett a választás.

Megjegyzések

A partíciós függvény hatóköre az adatbázisra korlátozódik, ahol létrehozták. Az adatbázison belül a partíciós függvények külön névtérben találhatók a többi függvénytől.

Bármely sor, amelynek partíciós oszlopa nullértékeket tartalmaz, a bal legbaloldali partícióba kerülnek, kivéve, ha a NULL határértékként van megadva, és a RIGHT jelölt. Ebben az esetben a bal oldali partíció üres partíció, és a következő partícióban a NULL értékeket helyezzük el.

Permissions

Az alábbi jogosultságok bármelyike használható a CREATE PARTITION FUNCTION végrehajtására:

  • Bármely adatterület módosítási joga. Ez az engedély alapértelmezés szerint a sysadmin rögzített kiszolgálói szerepkör tagjaira, valamint a db_owner és db_ddladmin rögzített adatbázis-szerepkörök tagjaira vonatkozik.

  • CONTROL vagy ALTER jogosultságot az adatbázison, ahol a partíciós függvényt létrehozják.

  • CONTROL SERVER vagy ALTER BÁRMELY ADATBÁZIS-jogosultságot azon az adatbázis szerverén, ahol a partíciós funkció létrejött.

Példák

A. RANGE BAL partíciós függvény létrehozása egy int oszlopon

A következő partíciós függvény egy táblát vagy indexet négy részre oszt.

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

Az alábbi táblázat bemutatja, hogyan lenne egy olyan táblázat, amely ezt a partíciós függvényt használja az oszlop col1 particionálásán.

Partition 1 2 3 4
Értékek col1<= 1 col1>1 ÉS col1<= 100 col1>100 ÉS col1<=1000 col1>1000

B. RANGE RIGHT partíciós függvény létrehozása egy int oszlopon

A következő partíciós függvény ugyanazokat az értékeket használja boundary_value [ ,... n ] mint az előző példa, kivéve, hogy megadja a RANGE RIGHT-ot.

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

Az alábbi táblázat bemutatja, hogyan lenne egy olyan táblázat, amely ezt a partíciós függvényt használja az oszlop col1 particionálásán.

Partition 1 2 3 4
Értékek col1<1 col1>= 1 ÉS col1<100 col1>= 100 ÉS col1<1000 col1>= 1000

C. RANGE RIGHT partíciós függvény létrehozása egy dátumidő-oszlopon

A következő partíciós függvény egy táblát vagy indexet 12 partícióra oszt fel, egyet az adott év értékeinek minden hónapjára egy dátum-idő oszlopban.

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

Az alábbi táblázat bemutatja, hogyan lenne egy táblázat vagy index, amely ezt a partíciós függvényt használja a datecol oszlop partíciójához.

Partition 1 2 ... 11 12
Értékek Datecol<February 1, 2003 Datecol>= February 1, 2003 ÉS datecol<March 1, 2003 Datecol>= November 1, 2003 ÉS col1<December 1, 2003 Datecol>= December 1, 2003

D. Partíciós függvény létrehozása egy karakteroszlopon

A következő partíciós függvény egy táblát vagy indexet négy részre oszt fel.

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

Az alábbi táblázat bemutatja, hogyan lenne egy olyan táblázat, amely ezt a partíciós függvényt használja az oszlop col1 particionálásán.

Partition 1 2 3 4
Értékek col1<EX... col1>= EX ÉS col1<RXE... col1>= RXE ÉS col1<XR... col1>= XR

E. 15 000 partíció létrehozása

A következő partíciós függvény egy táblát vagy indexet 15 000 partícióra oszt fel.

--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. Több évig történő partíciók létrehozása

A következő partíciós függvény egy táblát vagy indexet 50 partícióra oszt egy datetime2 oszlopban. Minden hónapra egy partíció tartozik 2007 januárja és 2011 januárja között.

--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  

Következő lépések

További információkat a táblázatfelosztásról és kapcsolódó fogalmakról a következő cikkekben találhat: