Saya memulai proyek baru dan menggunakan SVN (dengan Tortoise) sebagai Sistem Kontrol Versi saya. Saya bertanya-tanya apakah mungkin untuk juga mempertahankan Database SQL Server menggunakan sistem yang sama.
Saya ingin versi tabel saya / fungsi / tampilan / procs / pemicu / dll. tapi bukan data saya karena semuanya akan menjadi data uji. Saya tidak begitu yakin cara mengatur ini. Saya telah menemukan beberapa opsi tetapi saya ingin tahu apakah ada yang saya lewatkan, dan apakah mungkin ada panduan atau sesuatu di luar sana untuk membantu saya menjalankannya.
Saya telah melihat dan mendengar tentang Gerbang Merah, tetapi saya mencari sesuatu yang gratis (atau setidaknya biaya sangat rendah). Saya tahu saya selalu bisa menulis sesuatu sendiri, tetapi saya tidak benar-benar mencoba menghabiskan waktu untuk itu.
Satu hal yang saya temui adalah paket open source yang disatukan disebut ScriptDB4Svn . Adakah yang pernah menggunakan ini sebelumnya? Apakah itu baik? Bisakah ia melakukan hal-hal yang perlu saya lakukan dan apakah cukup mudah untuk mendapatkan pengaturan?
sumber
Has anyone used this before? Is it good? Can it do the things I need it to do and is it pretty simple to get setup?
Mengapa Anda takut mencobanya sendiri? Ambil saja dan mainkan.Jawaban:
Secara teknis Anda bahkan tidak memerlukan alat, Anda dapat skrip objek secara langsung dan memeriksanya ke dalam kontrol sumber. Ini sedikit lebih banyak bekerja tanpa alat, tetapi pasti bisa diterapkan.
BTW: Saya sudah menggunakan alat RedGate dan itu sangat apik dan bernilai uang.
sumber
Sepertinya Anda memiliki sebagian besar pengaturan Microsoft. Anda bisa melihat-lihat Proyek Database (sebelumnya dikenal sebagai DataDude). Mereka pada dasarnya mengubah T-SQL menjadi bahasa kelas satu di Visual Studio; kamu bisa:
[dbo]
dalam kebanyakan kasus) untuk peningkatan kinerja 30% yang bagus.Mereka menyatukan kode Anda dan kode database Anda dengan baik di bawah kendali sumber juga. Jika Anda man-up dan skrip objek database Anda (alih-alih menggunakan Davinci Tools di SSMS) Anda juga menggunakan satu IDE - yang bagus.
sumber
Anda bisa menggunakan Rails. Rails memiliki konsep migrasi basis data yang dapat Anda terapkan atau putar kembali. Dalam pengalaman saya ini adalah cara terbaik untuk versi database. Anda memeriksa file migrasi ini ke SVN.
Dalam proyek saya saat ini, kami tidak mengembangkan aplikasi di Ruby, tetapi kami masih menggunakan Rails untuk mengelola database. Saya tidak akan melakukannya dengan cara lain.
sumber
Ini telah dibahas sebelumnya pada stackoverflow: /programming/2750278/sql-server-2008-create-database-script-schema-data-with-command-line
Juga, artikel eksternal ini memberikan beberapa informasi tambahan http://www.sqlteam.com/article/scripting-database-objects-using-smo-updated bersama dengan kode sampel dalam bentuk Aplikasi Windows.
Karena apa yang ingin Anda lakukan adalah sesuatu yang telah saya lakukan sendiri untuk MS Access, saya akan memberi tahu Anda apa yang telah saya lakukan jika memberi Anda beberapa ide: Saya telah menulis modul yang disebut Ado2Xml yang mengubah skema dan data ADO apa pun Database diakses untuk xml, dan kembali. Hanya tahu tentang tabel dan tampilan; tidak ada prosedur tersimpan, tidak ada pemicu, tidak ada apa-apa. Bagaimanapun, dalam kasus Anda modul ini akan diganti oleh alat yang Anda mungkin akan menemukan yang melakukan apa yang Anda inginkan dengan MS-SQL. Jadi, setiap kali aplikasi saya diluncurkan, ia membandingkan timestamp dari database dengan timestamp dari file xml yang disimpan; jika file xml lebih baru, maka menghancurkan database dan memanggil Ado2Xml untuk membuatnya kembali dari file xml. Ketika aplikasi saya berhenti, ia melakukan kebalikannya: ia memanggil Ado2Xml untuk mengekspor database ke file xml. Sebenarnya, objek ADO yang mengekstrak skema database karena alasan tertentu sangat lambat, menyebabkan proses ekspor membutuhkan waktu. Jadi, untuk menghindari harus menunggu setiap kali aplikasi saya untuk berhenti dan studio visual untuk beralih dari tata letak debugging ke tata letak pengeditan, tepat sebelum itu mengakhiri aplikasi saya meluncurkan aplikasi eksternal untuk melakukan ekspor, sehingga dapat mengakhiri segera.
sumber
Ya, saya telah menggunakan alat serupa (dikembangkan di rumah) pada proyek sebelumnya. Itu akan skrip semua tabel, tampilan, sprocs, pemicu, dll menjadi file .sql individual. Kemudian, kami memiliki skrip yang dijalankan setiap malam untuk "memvalidasi" bahwa semua yang ada di database "pengembangan" kami tercermin dalam kontrol sumber.
Jadi alur kerja normal adalah bahwa Anda akan mengubah kode Anda, mengubah tabel dan sprocs yang sesuai dalam pengembangan database seperti yang diperlukan, maka Anda akan menjalankan alat yang kami miliki yang akan menyegarkan semua file .sql yang dituliskan. Anda kemudian akan memeriksa semuanya sekaligus.
Masalahnya adalah bahwa jika Anda lupa menjalankan alat, kode akan "bekerja" (dan unit test akan lulus) karena database "benar", tetapi sprocs / tabel baru tidak akan menjadi kontrol sumber.
Jadi setiap malam, kami memiliki skrip yang melakukan checkout kode sumber, lalu mencari alat untuk menyegarkan semua skrip. Jika ada perbedaan, itu berarti seseorang lupa memeriksa perubahan mereka dan pemberitahuan email dihasilkan. Itu pada dasarnya hanya cara untuk memastikan kami tidak lupa untuk menjaga kontrol sumber tetap up to date.
Agak menyebalkan karena membuatnya sulit untuk mengerjakan perubahan yang berlangsung beberapa hari, tetapi itu lebih baik daripada tidak memiliki apa-apa ...
sumber
Then, we had a script that ran every night to "validate" that everything in our "development" database was reflected in source control.
? Terimakasih atas tanggapan Anda.