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
Megváltoztatja a partíciós függvényt a határértékeinek felosztásával vagy összeolvasztásával is. Az ALTER PARTITION függvény utasítás futtatásával egy táblázatot vagy indexpartíciót két részre lehet osztani, amely a partíciós függvényt használja. Az állítás két partíciót is egyesíthet egy partícióba.
Caution
Több tábla vagy index is használhatja ugyanazt a partíciófüggvényt. AZ ALTER PARTITION FUNCTION mindegyiket egyetlen tranzakcióban érinti.
Transact-SQL szintaxis konvenciók
Szemantika
ALTER PARTITION FUNCTION partition_function_name()
{
SPLIT RANGE ( boundary_value )
| MERGE RANGE ( boundary_value )
} [ ; ]
Arguments
partition_function_name
A módosítandó partíciós függvény neve.
OSZTOTT TARTOMÁNY ( boundary_value )
Egy partíciót ad hozzá a partíciós függvényhez.
boundary_value meghatározza az új partíció tartományát, és eltérnie kell a partíciófüggvény meglévő határtartományaitól.
boundary_value alapján az adatbázis motor az egyik meglévő tartományt ketté osztja. E két tartomány közül az új boundary_value az új partíció.
Egy fájlcsoportnak online kell léteznie. És annak a partíciós séma, amely a partíciós függvényt KÖVETKEZŐ HASZNÁLT módként használja az új partíció tárolására, meg kell jelölnie a fájlcsoportot. A CREATE PARTITION SCHEME utasítás fájlcsoportokat rendel partíciókhoz. A CREATE PARTITION FUNCTION utasítás kevesebb partíciót hoz létre, mint a fájlcsoportok, amelyek tárolják őket. A CREATE PARTITION SCHEME utasítás több fájlcsoportot félreállíthat, mint amennyi szükséges. Ha ez megtörténik, akkor végül nem hozzárendelt fájlcsoportok lesznek. Emellett a partíciós séma az egyik fájlcsoportot KÖVETKEZŐ HASZNÁLTNAK jelöli. Ez a fájlcsoport tartalmazza az új partíciót. Ha nincs olyan fájlcsoport, amit a partíció séma KÖVETKEZŐ HASZNÁLTKÉNT jelöl, akkor ALTER PARTITION SCHEME utasítást kell használni.
Az ALTER PARTITION SCHEME utasítás hozzáadhat egy fájlcsoportot, vagy választhat egy létezőt, hogy megtartsa az új partíciót. Kijelölhetsz egy fájlcsoportot, amely már tartalmaz partíciókat, hogy további részeket is tároljon. Egy partíciós függvény több partíciós sémában is részt vehet. Ezért minden partíciós sémának, amely használja azt a partition függvényt, amelyhez a részeket hozzáadod, rendelkeznie kell egy KÖVETKEZŐ HASZNÁLT fájlcsoporttal. Ellenkező esetben az ALTER PARTITION FUNCTION utasítás hibával meghibásodik, amely megjeleníti a NEXT USED fájlcsoportot nem tartalmazó partíciós sémát vagy sémákat.
Ha az összes partíciót ugyanabban a fájlcsoportban hozod létre, az a fájlcsoport automatikusan automatikusan a KÖVETKEZŐ HASZNÁLT fájlcsoportnak van kijelölve. Azonban egy split művelet után már nincs kiválasztott NEXT USED fájlcsoport. A fájlcsoportot kifejezetten a következő HASZNÁLT fájlcsoportként rendeled meg az ALTER PARTITION SCHEME segítségével, különben egy közelgő felosztási művelet sikertelenül megbukik.
Megjegyzés:
Korlátok a columnstore indexgel: Csak üres partíciók oszthatók be, ha columnstore index van a táblán. A művelet végrehajtása előtt el kell távolítanod vagy letiltanod a columnstore indexet.
EGYESÜLÉS [ TÁVOLSÁG ( boundary_value) ]
Kidob egy partíciót, és az adott partícióban lévő értékeket egy maradék partícióval egyesíti. A RANGE (boundary_value) egy meglévő határértéknek kell lennie annak a partíciónak, amelyet el kell vetni. Ez az érv eltávolítja azt a fájlcsoportot, amely eredetileg boundary_value volt a partíciós sémából, hacsak egy maradék partíció nem használja azt, vagy jelöli meg a KÖVETKEZŐ HASZNÁLT tulajdonsággal. Az összevont partíció abban a fájlcsoportban létezik, amely először nem tartotta meg boundary_value .
boundary_value egy állandó kifejezés, amely képes változókra (beleértve a felhasználó által definiált típus változókat) vagy függvényekre (beleértve a felhasználó által definiált függvényeket is) hivatkozni. Nem utalhat Transact-SQL kifejezésre.
boundary_value vagy egyezik, vagy implicit módon átalakíthatónak kell lennie a megfelelő partíciós oszlop adattípusára. Az implicit átalakítás során sem lehet boundary_value úgy lerövidíteni, hogy az érték mérete és mérete ne egyezzen a megfelelő input_parameter_type értékével.
Megjegyzés:
Korlátok a columnstore indexgel: Két nem üres partíció, amely columnstore indexet tartalmaz, nem lehet összevonni. A művelet végrehajtása előtt el kell engedned vagy letiltanod a columnstore indexet
Ajánlott eljárások
Mindig tartsd üres partíciókat a partíció mindkét végén. Tartsd meg a partíciókat mindkét végén, hogy biztosítsd a partíció szétválása és a felosztás összevonása ne okozzon adatmozgást. A partíció felosztása az elején, a partíció pedig a végén történik. Kerüld a feltöltődő partíciók szétválasztását vagy összevonását. A feltöltött partíciók felosztása vagy összevonása hatástalan lehet. Ezek hatékonyabbak lehetnek, mert a hasadás vagy összeolvadás akár négyszer több rönktermelést is okozhat, és súlyos záródást is okozhat.
Az elsődleges ok, amiért a partíciókat több fájlcsoportra helyezed, az, hogy biztosítsd a mentési és helyreállítási műveleteket önállóan a partíciókon. További információ a Filegroupsfájlcsoportjairól és particionálási stratégiáiról.
Korlátozások és korlátozások
AZ ALTER PARTITION FUNCTION egyetlen atomi műveletben újraosztja azokat a táblákat és indexeket, amelyek a függvényt használják. Ez a művelet azonban offline módon történik, és a megosztás mértékétől függően erőforrásigényes lehet.
Az ALTER PARTITION FUNCTION funkciót csak egy partíció kettőre bontásához, vagy két partíció egyesítéséhez használd. Ahhoz, hogy megváltoztassuk a táblázat egyéb partíciójának módját (például 10 partícióról öt partícióra), alkalmazza az alábbi lehetőségek bármelyikét. A rendszer konfigurációjától függően ezek az opciók eltérhetnek az erőforrás-fogyasztásban:
Hozzon létre egy új partíciós táblát a szükséges partíciós funkcióval. Ezután a régi táblázatból származó adatokat az új táblázatba INSERT INTO... SELECT FROM utasítás.
Hozz létre egy partíciózott, klaszterelt indexet egy halomban.
Megjegyzés:
A particionált fürtözött index megszüntetése eredményez egy particionált halmot.
Dobd el és építs újra egy meglévő partíciós indexet a Transact-SQL CREATE INDEX utasítással a DROP EXISTING = ON klauzulával.
Futtass egy ALTER PARTITION FUNCTION utasítássorozatot.
Az ALTER PARTITION FÜGGVÉNY által érintett összes fájlcsoportnak online állapotúnak kell lennie.
AZ ALTER PARTITION FUNCTION meghibásodik, ha bármely olyan táblázaton létezik letiltott klaszteres index, amely a partíciós függvényt használja.
Az adatbázis motor nem támogatja replikációt egy partíciós függvény módosításához. A kiadóadatbázis partíciós funkciójának módosításait manuálisan kell alkalmazni az előfizetési adatbázisban.
Permissions
Az alábbi engedélyek bármelyike használható az ALTER PARTITION FÜGGVÉNY végrehajtásához:
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 engedély azon az adatbázison, amelyben a partíció függvényt létrehozták.
CONTROL SERVER vagy ALTER ANY DATABASE engedély a szerveren, amely azon adatbázis kiszolgálója, amelyben a partíciófüggvényt létrehozták.
Példák
A. Oszd szét egy partíciós táblázatot vagy indexet két részre
Az alábbi példa egy partíciófüggvényt hoz létre egy tábla vagy index négy partícióra való particionálásához.
ALTER PARTITION FUNCTION az egyik partíciót ketté osztja, így összesen öt partíciót alkotnak.
IF EXISTS (SELECT * FROM sys.partition_functions
WHERE name = 'myRangePF1')
DROP PARTITION FUNCTION myRangePF1;
GO
CREATE PARTITION FUNCTION myRangePF1 (int)
AS RANGE LEFT FOR VALUES ( 1, 100, 1000 );
GO
--Split the partition between boundary_values 100 and 1000
--to create two partitions between boundary_values 100 and 500
--and between boundary_values 500 and 1000.
ALTER PARTITION FUNCTION myRangePF1 ()
SPLIT RANGE (500);
B. Egyesítsük egy partíciós táblázat két partícióját egy partícióba
A következő példa ugyanazt a partíciós függvényt hozza létre, mint fent, majd két partíciót egyesít egy partícióvá, így összesen három partíciót adunk.
IF EXISTS (SELECT * FROM sys.partition_functions
WHERE name = 'myRangePF1')
DROP PARTITION FUNCTION myRangePF1;
GO
CREATE PARTITION FUNCTION myRangePF1 (int)
AS RANGE LEFT FOR VALUES ( 1, 100, 1000 );
GO
--Merge the partitions between boundary_values 1 and 100
--and between boundary_values 100 and 1000 to create one partition
--between boundary_values 1 and 1000.
ALTER PARTITION FUNCTION myRangePF1 ()
MERGE RANGE (100);
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: