Bagikan melalui


MEMBUAT SKEMA PARTISI (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceDatabase SQL di Microsoft Fabric

Membuat skema dalam database saat ini yang memetakan partisi tabel atau indeks yang dipartisi ke satu atau beberapa grup file. Nilai yang memetakan baris tabel atau indeks ke dalam partisi ditentukan dalam fungsi partisi. Fungsi partisi harus terlebih dahulu dibuat dalam pernyataan CREATE PARTITION FUNCTION sebelum membuat skema partisi.

Catatan

Di Azure SQL Database dan database SQL di Microsoft Fabric, hanya grup file utama yang didukung. Pelajari selengkapnya tentang grup file dan strategi pemartisian di Filegroups.

Konvensi sintaks transact-SQL

Sintaks

CREATE PARTITION SCHEME partition_scheme_name
AS PARTITION partition_function_name
[ ALL ] TO ( { file_group_name | [ PRIMARY ] } [ , ...n ] )
[ ; ]

Argumen

partition_scheme_name

Nama skema partisi. Nama skema partisi harus unik dalam database dan mematuhi aturan untuk pengidentifikasi.

partition_function_name

Nama fungsi partisi menggunakan skema partisi. Partisi yang dibuat oleh fungsi partisi dipetakan ke grup file yang ditentukan dalam skema partisi. partition_function_name harus sudah ada di database. Partisi tunggal tidak boleh berisi grup file FILESTREAM dan non-FILESTREAM.

SEMUA

Menentukan bahwa semua partisi dipetakan ke grup file yang disediakan dalam file_group_name, atau ke grup file utama jika [PRIMARY] ditentukan. Jika ALL ditentukan, hanya satu file_group_name yang dapat ditentukan.

file_group_name | [ PRIMER ] [ , ...n ]

Menentukan nama grup file untuk menahan partisi yang ditentukan oleh partition_function_name. file_group_name harus sudah ada di database.

Jika [PRIMARY] ditentukan, partisi disimpan pada grup file utama. Jika ALL ditentukan, hanya satu file_group_name yang dapat ditentukan. Partisi ditetapkan ke grup file, dimulai dengan partisi 1, dalam urutan di mana grup file tercantum di [, ...<n>]. file_group_name yang sama dapat ditentukan lebih dari satu kali dalam [, ...<n>]. Jika n tidak cukup untuk menahan jumlah partisi yang ditentukan dalam partition_function_name, CREATE PARTITION SCHEME gagal dengan kesalahan.

Jika partition_function_name menghasilkan lebih sedikit partisi daripada grup file, grup file pertama yang tidak ditetapkan ditandai NEXT USED, dan pesan informasi menampilkan penamaan grup file NEXT USED. Jika ALL ditentukan, satu-satunya file_group_name mempertahankan properti NEXT USED untuk partition_function_nameini. Grup file NEXT USED menerima partisi tambahan jika dibuat dalam pernyataan ALTER PARTITION FUNCTION. Untuk membuat lebih banyak grup file yang tidak ditetapkan untuk menyimpan partisi baru, gunakan ALTER PARTITION SCHEME.

Saat Anda menentukan grup file utama di <file_group_name> [, ...<n>], PRIMARY harus dibatasi, seperti dalam [PRIMARY], karena itu adalah kata kunci.

Hanya PRIMARY yang didukung untuk SQL Database. Lihat contoh E.

Izin

Izin berikut dapat digunakan untuk menjalankan CREATE PARTITION SCHEME:

  • ALTER ANY DATASPACE izin. Izin ini default untuk anggota peran server tetap sysadmin dan peran database tetap db_owner dan db_ddladmin .

  • CONTROL atau ALTER izin pada database tempat skema partisi sedang dibuat.

  • CONTROL SERVER atau ALTER ANY DATABASE izin di server database tempat skema partisi sedang dibuat.

Contoh

J. Membuat skema partisi yang memetakan setiap partisi ke grup file yang berbeda

Contoh berikut membuat fungsi partisi untuk mempartisi tabel atau indeks menjadi empat partisi. Skema partisi kemudian dibuat yang menentukan grup file untuk menahan masing-masing dari empat partisi. Contoh ini mengasumsikan grup file sudah ada dalam database.

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

CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
TO (test1fg, test2fg, test3fg, test4fg);

Partisi tabel yang menggunakan fungsi partisi myRangePF1 pada kolom partisi col1 akan ditetapkan seperti yang ditunjukkan dalam tabel berikut.

Grup file Partisi Nilai
test1fg 1 col1 <= 1
test2fg 2 col1 > 1 DAN col1<= 100
test3fg 3 col1 > 100 DAN col1<= 1000
test4fg 4 col1 > 1000

B. Membuat skema partisi yang memetakan beberapa partisi ke grup file yang sama

Jika semua partisi dipetakan ke grup file yang sama, gunakan kata kunci ALL. Tetapi jika beberapa, tetapi tidak semua, partisi dipetakan ke grup file yang sama, nama grup file harus diulang, seperti yang ditunjukkan dalam contoh berikut.

CREATE PARTITION FUNCTION myRangePF2(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS2
AS PARTITION myRangePF2
TO (test1fg, test1fg, test1fg, test2fg);

Partisi tabel yang menggunakan fungsi partisi myRangePF2 pada kolom partisi col1 akan ditetapkan seperti yang ditunjukkan dalam tabel berikut.

Grup file Partisi Nilai
test1fg 1 col1 <= 1
test1fg 2 col1 > 1 DAN col1<= 100
test1fg 3 col1 > 100 DAN col1<= 1000
test2fg 4 col1 > 1000

C. Membuat skema partisi yang memetakan semua partisi ke grup file yang sama

Contoh berikut membuat fungsi partisi yang sama seperti pada contoh sebelumnya, dan skema partisi dibuat yang memetakan semua partisi ke grup file yang sama.

CREATE PARTITION FUNCTION myRangePF3(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS3
AS PARTITION myRangePF3
ALL TO (test1fg);

D. Membuat skema partisi yang menentukan grup file NEXT USED

Contoh berikut membuat fungsi partisi yang sama seperti pada contoh sebelumnya. Ini juga membuat skema partisi yang mencantumkan lebih banyak grup file daripada ada partisi yang dibuat oleh fungsi partisi terkait.

CREATE PARTITION FUNCTION myRangePF4(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS4
AS PARTITION myRangePF4
TO (test1fg, test2fg, test3fg, test4fg, test5fg);

Menjalankan pernyataan mengembalikan pesan berikut.

Partition scheme 'myRangePS4' has been created successfully. 'test5fg' is marked as the next used filegroup in partition scheme 'myRangePS4'.

Jika fungsi myRangePF4 partisi diubah untuk menambahkan partisi, grup file test5fg menerima partisi yang baru dibuat.

E. Membuat skema partisi hanya di PRIMARY

Di Azure SQL Database dan database SQL di Microsoft Fabric, menambahkan file dan grup file tidak didukung, tetapi partisi tabel didukung dengan mempartisi hanya PRIMARY di grup file.

Contoh berikut membuat fungsi partisi untuk mempartisi tabel atau indeks menjadi empat partisi. Skema partisi kemudian dibuat yang menentukan bahwa semua partisi dibuat dalam grup file PRIMARY.

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

CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
ALL TO ([PRIMARY]);