Как я заставляю Studio управления SQL Server прекращать обрабатывать на ошибке?

Если вы используете Jackson2, то получите name как JsonNode

JsonNode nameNode = value.path("name");

И затем снова получите firstName и lastName как JsonNode

[111 ]

Из JsonNode firstName и JsonNode lirstName получить строковое значение

String name1 = firstName.path("string").asText();
String name2 = lastName.path("string").asText();
.
28
задан Community 23 May 2017 в 12:18
поделиться

7 ответов

Краткий ответ: вы не можете.

Спасибо тем, кто предоставил обходные пути, но кажется, что сам SSMS не может быть настроен на приостановку или остановку при ошибке так же, как Жаба для SQL Server может.

11
ответ дан 28 November 2019 в 03:42
поделиться

ApexSQL Скрипт генерирует пакетные скрипты именно так, как вы хотите. В качестве примера:

--Script Header
begin transaction
go

{Statement #1}
go
--Standard Post-Statement Block
if @@error <> 0 or @@trancount = 0 begin
    if @@trancount > 0 rollback transaction
    set noexec on
end
go

{Statement #2}
go
--Standard Post-Statement Block
if @@error <> 0 or @@trancount = 0 begin
    if @@trancount > 0 rollback transaction
    set noexec on
end
go

--Script Footer
if @@trancount > 0 commit transaction
go
set noexec off
go
6
ответ дан 28 November 2019 в 03:42
поделиться

будет использовать здесь справку блока try catch. В случае ошибки попытка будет завершена, реализовать обработку ошибок в catch

http://msdn.microsoft.com/en-us/library/ms179296.aspx

2
ответ дан 28 November 2019 в 03:42
поделиться

Вам необходимо заключить ваши SQL-операторы в транзакцию .

BEGIN TRANSACTION
   /* run all your SQL statements */
COMMIT TRANSACTION

Если есть ошибка внутри транзакции начала / завершения, все операторы будут отменены.

] РЕДАКТИРОВАТЬ: Обертывание внутри транзакции начала / окончания предотвратит фиксацию операторов в базе данных, но не остановит ее на этом этапе. Вам необходимо дополнительно обернуть его внутри блока try / catch следующим образом:

BEGIN TRY
  BEGIN TRANSACTION
  /* run all your SQL statements */
  COMMIT TRANSACTION
END TRY
BEGIN CATCH
  ROLLBACK TRANSACTION
END CATCH
4
ответ дан 28 November 2019 в 03:42
поделиться

Если вы не можете поместить свой скрипт в хранимую процедуру и использовать оператор return для выхода при ошибке, решение предоставленный @Justice, может быть вашим лучшим выбором. Все остальные упускают из виду главное - вы не можете вернуться из скрипта, даже если вы используете транзакции или даже если вы подняли ошибку. SSMS в любом случае просто выполнит следующее действие, даже если установлено xact abort.

Если вы можете преобразовать свой скрипт в хранимую процедуру, вы можете просто вернуться из него, когда обнаружите ошибку.

0
ответ дан 28 November 2019 в 03:42
поделиться

Вау. Это чушь какая-то, не правда ли? Я использую SQL-Workbench, который, как и Toad для SQL Server, легко справляется с этим. Однако, в отличие от Toad для SQL Server, он бесплатный.

Я удивлен, что такая фундаментальная функциональность не является частью стандартного инструмента.

4
ответ дан 28 November 2019 в 03:42
поделиться

рассмотрите возможность использования программы командной строки 'sqlcmd', которая поставляется с SQL Server, с опциями -b и -V. -b заставит sqlcmd завершить работу при возникновении ошибки. Опция -V контролирует уровень серьезности, который считается ошибкой.

6
ответ дан 28 November 2019 в 03:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: