SSMS
 sql >> база данни >  >> Database Tools >> SSMS

Как да спрете SSMS 2012 от скриптиране на SP с помощта на sp_executesql

Не можете да направите това без динамичния SQL, защото съхранената процедура трябва да бъде в собствена партида. Следователно не можете да кажете:

IF <some condition>
  <start a new batch>

Единственият начин да го запазите в една и съща партида е да използвате sp_executesql .

Ако ще скриптирате DROP и CREATE едновременно, просто го направете без проверка за съществуване на обект. Това ще ви даде:

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

На кого му пука дали DROP не успява? (Не трябва, защото току-що сте написали скрипт от него!)

Ако скриптирате това за друга система, която може ако имате обекта, ще получите съобщение за грешка за DROP когато не е така, но CREATE все пак ще се случи, така че можете да игнорирате DROP грешки. Ако наистина искате, можете ръчно да обвиете DROP изрази в TRY/CATCH но не мисля, че е необходимо.

Ако трябва да направите това за много процедури или ако наистина имате нужда от процеса да не генерира доброкачествени грешки, предлагам ви да изоставите примитивните опции за скриптове на Management Studio и да използвате инструмент на трета страна за това. Те вече ще са се справили с много от проблемите, които все още не сте срещали, но ще се сблъскат. Написах в блог за това:

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. SQL заявката с помощта на Entity Framework работи по-бавно, използва лош план за заявка

  2. Simba Mongo ODBC драйвер:върнати данни, които не съответстват на очакваната дължина на данните

  3. Изглед на схемата на SQL Server Management Studio

  4. База данни по подразбиране на SQL Server, когато заявка - главен

  5. Ограничете списъка с бази данни до такива с разрешение SQL Server