Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-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: