Saya telah membaca bahwa setelah SQL Server 2000, kemampuan untuk "menghapus identitas" kolom identitas dihapus. Dan ini adalah "By Design" (bukan hanya fitur yang hilang).
Ini adalah contoh yang saya temukan di sebuah blog . Ini melibatkan memperbarui tabel sistem. (Dan kemampuan itu dihapus setelah SQL Server 2000.) Saya mendapatkan bahwa melakukan ini melalui tabel sistem bukanlah ide yang baik. Saya hanya ingin tahu mengapa fitur untuk melakukan ini dengan cara lain tidak ada.
Mengatasi hal ini akan menyebabkan saya banyak bekerja. (Menyalin ratusan juta baris ke tabel baru di lingkungan yang tidak toleran dengan waktu henti.)
Jadi saya pikir saya akan bertanya "Kenapa".
Apa yang berubah di Sql Server 2005 dan versi yang lebih baru yang menjadikan ini hal yang buruk? Atau apakah itu selalu buruk, dan tidak dikunci?
Apa "Praktik Terbaik" (atau prinsip serupa) apa yang akan dilanggar dengan menjadikan kolom identitas sebagai kolom normal lagi?
-
Perbarui untuk menjawab permintaan "mengapa saya melakukan ini":
Ini adalah ringkasan tingkat yang sangat tinggi: Saya akan mulai menambahkan partisi ke tabel saya. (Sehingga saya dapat mengarsipkan / membersihkan data lama.) Itu semua mudah. Tapi kadang-kadang saya perlu memindahkan catatan ke partisi yang berbeda agar tidak dihapus (ketika sebuah partisi muncul untuk arsip / penghapusan). (Saya meminta kolom partisi saya bertambah 2 sehingga selalu ada ruang untuk memindahkan baris ke partisi lain.)
Tetapi jika kolom partisi adalah kolom identitas, maka saya harus menghapus dan memasukkan kembali nilainya (tidak ada cara untuk memperbarui nilai kolom identitas). Yang menyebabkan masalah dengan replikasi.
Jadi saya ingin menggunakan urutan alih-alih kolom identitas. Tetapi peralihan itu sangat sulit pada basis data besar.
sumber
..SWITCH..
hanya bekerja untuk tabel yang memiliki setidaknya satu partisi yang ditentukan.SWITCH
tidak memerlukan Edisi Perusahaan, meskipun partisi tabel tidak.