Apa pendekatan termudah dan paling dapat diandalkan untuk mengubah nama tabel dan kolom database di SQL Server 2008 r2? Kami telah menyelesaikan pengembangan dan untuk beberapa alasan, kami diminta untuk mengganti nama beberapa tabel dan beberapa kolom baru.
Apakah menggunakan sinonim cara yang baik untuk melakukan itu? Apa jebakan yang harus kita siapkan? Apakah itu membantu mengganti nama kolom dengan anggun juga?
Kami memiliki banyak skrip yang terkait dengan tabel ini dan juga dirujuk dalam aplikasi oleh pengembang .net.
sql-server-2008-r2
Langit
sumber
sumber
Jawaban:
Saya pikir pendekatannya tergantung pada apakah aplikasi itu aktif atau jika Anda masih menguji.
Untuk tabel, pendekatan teraman adalah membuat sinonim menggunakan nama baru. Dengan cara ini Anda dapat mengubah aplikasi satu per satu (atau bahkan satu referensi pada satu waktu), tanpa harus mengubah semuanya sekaligus. Anda tidak harus meninggalkan sinonim dan mengganti nama tabel sampai Anda yakin Anda memiliki semua perubahan di tempatnya.
Untuk kolom, ini sedikit rumit. Anda dapat membuat sinonim yang mengarah ke tampilan, tetapi tidak semua tampilan harus dapat diupdate tergantung pada tabel dasar. Sebagai contoh sederhana:
Kemudian seperti di atas, ketika Anda telah mengubah semua referensi ke kolom dan nama tabel baru, cukup:
Jika aplikasi tidak aktif dan masih melalui pengujian, cukup ganti nama kolom dan perbaiki kerusakan apa yang terjadi setelah pencarian global dan ganti (atau refactor pintar menggunakan SSDT, RedGate, dll.) Melalui kode / prosedur aplikasi dll.
Jika aplikasi ini aktif, Anda perlu melangkah sedikit lebih hati-hati.
sumber
Ada banyak jebakan yang bisa Anda temui saat mengubah nama tabel dan kolom. SQL atau kode aplikasi lain apa pun yang memanggil mereka harus diganti namanya agar cocok atau tidak akan berfungsi. Redgate membuat beberapa alat yang cukup bagus yang dapat melewati dan membuat semua perubahan pada SQL veiws / functions / sprocs. Saran terbesar yang bisa saya berikan kepada Anda adalah melakukan perubahan ini di lingkungan DEV terlebih dahulu dan TEST TEST TEST untuk memastikan Anda telah memperbaiki kode di mana-mana.
sumber