SSMS
 sql >> Baza danych >  >> Database Tools >> SSMS

Jak zatrzymać SSMS 2012 przed skryptowaniem SP przy użyciu sp_executesql?

Nie można tego zrobić bez dynamicznego SQL, ponieważ procedura składowana musi znajdować się we własnej partii. Dlatego nie możesz powiedzieć:

IF <some condition>
  <start a new batch>

Jedynym sposobem na zachowanie tego w tej samej partii jest użycie sp_executesql .

Jeśli zamierzasz napisać skrypt DROP i CREATE jednocześnie, po prostu zrób to bez sprawdzania istnienia obiektu. To da ci:

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

Kogo to obchodzi, jeśli DROP zawodzi? (Nie powinno, ponieważ właśnie z niego napisałeś skrypt!)

Jeśli piszesz to dla innego systemu, może masz obiekt, otrzymasz komunikat o błędzie dla DROP kiedy nie, ale CREATE nadal się wydarzy, więc możesz zignorować DROP błędy. Jeśli naprawdę chcesz, możesz ręcznie zawinąć DROP instrukcje w TRY/CATCH ale myślę, że nie jest to konieczne.

Jeśli musisz to zrobić w przypadku wielu procedur lub jeśli naprawdę potrzebujesz, aby proces nie generował łagodnych błędów, sugeruję porzucenie opcji prymitywnych skryptów Management Studio i użycie do tego narzędzia innej firmy. Zajmą się już wieloma problemami, z którymi jeszcze się nie spotkałeś, ale to zrobią. Pisałem o tym na blogu:

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. Czy mogę mieć wiele rzędów kart w SQL Server Management Studio?

  2. Zapytanie SQL przy użyciu Entity Framework działa wolniej, używa złego planu zapytań

  3. Powielanie TABELI za pomocą Microsoft SQL Server Management

  4. Jak wyświetlić kod procedury składowanej w SQL Server Management Studio

  5. Wyniki SSMS jako klikalny link