SSMS
 sql >> Teknologi Basis Data >  >> Database Tools >> SSMS

Cara Menghentikan SSMS 2012 dari scripting SPs menggunakan sp_executesql

Anda tidak dapat melakukan ini tanpa SQL dinamis karena prosedur tersimpan harus dalam kumpulannya sendiri. Oleh karena itu Anda tidak dapat mengatakan:

IF <some condition>
  <start a new batch>

Satu-satunya cara untuk menyimpannya dalam kumpulan yang sama adalah dengan menggunakan sp_executesql .

Jika Anda akan membuat skrip DROP dan CREATE secara bersamaan, lakukan saja tanpa memeriksa keberadaan objek. Ini akan memberi Anda:

DROP PROCEDURE ...;
GO
CREATE PROCEDURE ...;
GO

Siapa yang peduli jika DROP gagal? (Seharusnya tidak, karena Anda baru saja membuat skrip darinya!)

Jika Anda membuat skrip ini untuk sistem lain yang mungkin memiliki objek, Anda akan mendapatkan pesan kesalahan untuk DROP ketika tidak, tetapi CREATE akan tetap terjadi, jadi Anda dapat mengabaikan DROP kesalahan. Jika Anda benar-benar ingin, Anda dapat secara manual membungkus DROP pernyataan dalam TRY/CATCH tapi menurut saya itu tidak perlu.

Jika Anda perlu melakukan ini untuk banyak prosedur, atau jika Anda benar-benar membutuhkan proses untuk tidak menghasilkan kesalahan jinak, saya sarankan Anda mengabaikan opsi skrip primitif Management Studio dan menggunakan alat pihak ke-3 untuk ini. Mereka pasti sudah menangani banyak masalah yang belum Anda temui, tetapi akan. Saya membuat blog tentang ini:

http:// bertrandaaron.wordpress.com/2012/04/20/re-blog-the-cost-of-reinventing-the-wheel/



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Aturan Windows Firewall Untuk SQL Management Studio

  2. Pisahkan set ke dalam ember persentase yang tidak rata

  3. Bagaimana mengubah tipe data kolom tabel metadata. Seperti apa pernyataan pembaruan itu?

  4. Sintaks Regex lengkap untuk Sql Server Management Studio

  5. Masukkan Data Ke Tabel Temp dengan Query