Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Memperbaiki "Fungsi partisi terkait menghasilkan lebih banyak partisi daripada grup file yang disebutkan dalam skema" Msg 7707 di SQL Server

Jika Anda mendapatkan pesan kesalahan 7707 di SQL Server, itu karena Anda mencoba membuat skema partisi yang tidak menentukan grup file yang cukup untuk mencocokkan fungsi partisi.

Untungnya, ini mudah diperbaiki.

Contoh Kesalahan

Kesalahannya terlihat seperti ini:

Msg 7707, Level 16, State 1, Line 1
The associated partition function 'CatsPartitionFunction' generates more partitions than there are file groups mentioned in the scheme 'CatsPartitionScheme'.

Mengapa Ini Terjadi?

Dalam kasus saya, saya menetapkan tiga grup file saat membuat skema partisi, tetapi fungsi partisi sebenarnya menghasilkan empat.

Berikut kode yang saya gunakan untuk membuat fungsi partisi dan skema partisi.

CREATE PARTITION FUNCTION CatsPartitionFunction (int)  
    AS RANGE LEFT FOR VALUES (1, 100, 10000);
GO  

CREATE PARTITION SCHEME CatsPartitionScheme  
    AS PARTITION CatsPartitionFunction  
    TO (CatsFg1, CatsFg2, CatsFg3);  
GO

Fungsi partisi saya memiliki tiga nilai batas, yang menghasilkan empat partisi. Skema partisi saya hanya menetapkan tiga grup file (seharusnya ada empat).

Ini adalah kesalahan yang mudah dilakukan, karena saat Anda membuat fungsi partisi, jumlah nilai batas yang Anda tentukan sebenarnya kurang satu dari jumlah partisi yang dihasilkan. Dengan kata lain, jumlah partisi yang dibuat akan sama dengan jumlah nilai batas + 1.

Jika Anda tidak sepenuhnya siap, Anda mungkin secara tidak sengaja mencocokkan jumlah grup file dengan nilai batas, lupa bahwa Anda perlu menentukan satu grup file lagi.

Perbaiki Kesalahan

Jadi untuk memperbaiki kesalahan ini, yang perlu saya lakukan adalah menentukan satu grup file lagi saat membuat skema partisi.

Kode saya akan terlihat lebih seperti ini:

CREATE PARTITION FUNCTION CatsPartitionFunction (int)  
    AS RANGE LEFT FOR VALUES (1, 100, 10000);
GO 

CREATE PARTITION SCHEME CatsPartitionScheme  
    AS PARTITION CatsPartitionFunction  
    TO (CatsFg1, CatsFg2, CatsFg3, CatsFg4);  
GO

Dalam hal ini, saya cukup menambahkan CatsFg4 ke daftar grup file. Ini jelas mengasumsikan bahwa filegroup yang ditentukan ada.

Perhatikan juga bahwa Anda tidak perlu membuat grup file yang sama sekali baru. Anda dapat berbagi filegroup (yaitu memiliki beberapa partisi yang dipetakan ke satu filegroup).

Oleh karena itu, saya bisa melakukan ini:

CREATE PARTITION FUNCTION CatsPartitionFunction (int)  
    AS RANGE LEFT FOR VALUES (1, 100, 10000);
GO 

CREATE PARTITION SCHEME CatsPartitionScheme  
    AS PARTITION CatsPartitionFunction  
    TO (CatsFg1, CatsFg2, CatsFg3, CatsFg3);  
GO

Perhatikan bahwa dua grup file terakhir adalah sama (CatsFg3 ).

Tetapi Anda tidak perlu berhenti di situ. Pendekatan lain adalah memiliki semua partisi yang dipetakan ke filegroup.

Dalam hal ini kita bisa menggunakan ALL argumen, dan tentukan hanya satu filegroup:

CREATE PARTITION FUNCTION CatsPartitionFunction (int)  
    AS RANGE LEFT FOR VALUES (1, 100, 10000);
GO  
 
CREATE PARTITION SCHEME CatsPartitionScheme  
    AS PARTITION CatsPartitionFunction  
    ALL TO (CatsFg1);  
GO


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menggunakan Operator Logika APAPUN / BEBERAPA di SQL Server - Tutorial SQL Server / TSQL Bagian 127

  2. Kondisi Balapan Antrian Proses SQL Server

  3. Apa cara yang baik untuk memangkas semua karakter spasi putih dari string di T-SQL tanpa UDF dan tanpa CLR?

  4. Hitung jumlah catatan untuk setiap tanggal antara 2 tanggal

  5. Gunakan OBJECTPROPERTY() untuk Menentukan Apakah Objek adalah Tampilan di SQL Server