Ini seperti kebanyakan fitur dbms, jika Anda menggunakannya dalam situasi yang tepat itu berfungsi dengan baik, situasi yang salah melakukannya dengan buruk.
Pro: Beberapa hal tidak bisa dilakukan tanpa itu. Biasanya saya hanya menemukan ini untuk pekerjaan administrasi, dan bukan kode aplikasi. Beberapa perintah sistem tidak mengizinkan parameter digunakan sebagai input. Jadi misalnya jika saya perlu menjalankan sesuatu melalui sproc terhadap setiap database, pada banyak contoh dengan database yang tidak diketahui, dan perintah tidak menerima parameter, saya biasanya menyelesaikan ini melalui SQL dinamis. Namun ini lebih merupakan hal di Sybase ASE daripada MSSQL.
Cons: Saya tidak akan banyak membahasnya, karena saya pikir kita semua sudah mengetahuinya, tetapi mungkin ada beberapa risiko untuk injeksi SQL jika digunakan secara tidak benar. Yang lebih besar bagi saya adalah bahwa kueri akan diperlakukan seperti apa adanya, kueri adhoc unik, dan bukan bagian dari paket kueri yang dikompilasi. Untuk sesuatu yang berjalan sesekali, bukan masalah besar. Untuk sesuatu yang dieksekusi ratusan kali semenit dan yang akan memiliki banyak sql unik, itu akan menghasilkan banyak rencana kueri yang berpotensi tidak perlu, menghabiskan siklus, dan mempersingkat waktu cache rencana yang valid.