Saya telah memodifikasi tabel pusat dalam database saya, dan sp_depends benar-benar mengembalikan ratusan hasil, dan saya khawatir beberapa prosedur tersimpan mungkin tidak dapat dikompilasi lagi setelah perubahan saya.
Memeriksa satu prosedur tersimpan tunggal itu mudah (saya hanya menjalankan kembali skrip alter dan melihat apakah operasi berhasil), tetapi melakukan itu pada 100+ prosedur agak rumit.
Saya tahu saya bisa menggunakan skrip seperti ini untuk mengkompilasi ulang semua objek dari database saya, tetapi operasi yang sebenarnya akan terjadi pada saat prosedur tersimpan dijalankan, tidak segera, sehingga sepertinya tidak sesuai dalam kasus saya.
Saya juga berpikir bahwa saya dapat membuang semua prosedur yang tersimpan secara bersamaan, dan melakukan resycnhronize basis data saya dengan sistem kendali sumber saya, tetapi opsi itu, meskipun dapat dijalankan, tidak terlalu elegan. Apakah ada cara yang lebih baik untuk melakukan ini?
Saya menggunakan SQLServer 2008 R2 dan skrip basis data saya disimpan dalam proyek basis data VS 2008.
Untuk memperjelas, saya tidak menganjurkan orang harus semata-mata mengandalkan pendekatan ini untuk menguji kode. Persis seperti di c # Anda secara instan mendeteksi kesalahan sintaks dalam file dependen lain saat Anda kode (dan kemudian menggunakan strategi lain untuk menguji seperti unit test, yang biasanya beberapa urutan besarnya lebih lambat), saya pikir masuk akal untuk mendeteksi dependensi SQL kesalahan dalam hitungan detik daripada harus menjalankan tes fungsional penuh yang biasanya dapat memakan waktu beberapa jam untuk menyelesaikannya.
Ini pekerjaan yang sulit, tetapi Anda dapat membuat skrip CREATE PROSEDUR untuk basis data (klik kanan basis data -> tugas -> menghasilkan skrip), temukan dan ganti CREATE PROCEDURE dengan ALTER PROCEDURE, kemudian parse.
Saya harap Anda mendapatkan jawaban yang lebih baik di sini - Saya juga tertarik! :)
sumber
Anda dapat menggunakan Sql Server Data Tools (SSDT). Microsoft Visual Studio memungkinkan Anda untuk membuat proyek Server Sql. Satu kemudian mengimpor database ke dalam proyek dan kemudian membangun proyek. Jika ada prosedur atau objek tersimpan yang rusak, Anda akan mendapatkan kesalahan kompilasi.
sumber
Anda mungkin ingin melihat pertanyaan SO ini Saya sedang mencari cara yang dapat diandalkan untuk memverifikasi prosedur tersimpan T-SQL. Adakah yang punya? yang pada dasarnya menanyakan hal yang sama, dengan beberapa jawaban.
Untuk membuat skrip Alaa Awad diposting ... ini harus menunjukkan skema dan database objek yang direferensikan dan referensi. Jika Anda menggunakan banyak tabel temp melalui alias (yang terkadang muncul saat menggunakan
sys.sql_expression_dependencies
), parameter UDTT atau fitur dinamis lainnya Anda mungkin perlu menggunakan fungsisys.dm_sql_referenced_entities
atausys.dm_sql_referencing_entities
sebagai gantinya / juga.sumber
gunakan sys.sql_expression_dependencies ditambahkan dalam sql server 2008
sumber