PRINT из вложенной хранимой процедуры вызывает «Произошла серьезная ошибка в текущей команде». - PullRequest
0 голосов
/ 04 октября 2011

Вызов PRINT из дочерней хранимой процедуры вызывает:

Сообщение 0, Уровень 11, Состояние 0, Строка 0
Произошла серьезная ошибка в текущей команде.Результаты, если таковые имеются, должны быть отброшены.

Как сделать так, чтобы это не выдало ошибку?

Примечание: Не SQL Server 2005


у меня есть хранимая процедура

ALTER PROCEDURE [dbo].[Archive_SessionDeleteOnly] AS

  SET XACT_ABORT ON

  BEGIN DISTRIBUTED TRANSACTION
  EXECUTE ASILIVE.ContosoLive.dbo.Archive_Delete 
  ROLLBACK TRANSACTION
  PRINT 'Fargodeep Mine'

с дочерней хранимой процедурой:

ALTER PROCEDURE [dbo].[Archive_Delete] AS

  PRINT 'You no take candle'

Когда я запускаюмоя внешняя процедура Archive_SessionDeleteOnly все это выполняется до конца, включая PRINT после вызова моей дочерней хранимой процедуры

You no take candle
Fargodeep Mine
Msg 0, Level 11, State 0, Line 0
A severe error occurred on the current command.  The results, if any, should be discarded.

Вся операция выполняется до завершения, но я получаюошибка:

Msg 0, Level 11, State 0, Line 0
A severe error occurred on the current command.  The results, if any, should be discarded.

Если я удаляю print из «дочерней» хранимой процедуры:

ALTER PROCEDURE [dbo].[Archive_Delete] AS
  --PRINT 'You no take candle'

она запускается без ошибок.

ятакже попытался случайным образом добавить NOCOUNT (поскольку никто не знает, как это исправить в любом случае):

ALTER PROCEDURE [dbo].[Archive_Delete] AS

  SET NOCOUNT ON
  PRINT 'You no take candle'

это все равно вызывает:

Msg 0, Level 11, State 0, Line 0
A severe error occurred on the current command.  The results, if any, should be discarded.

ServerA: SQL Server 2000

SELECT @@version
Microsoft SQL Server  2000 - 8.00.818 (Intel X86)   May 31 2003 16:08:15   Copyright (c) 1988-2003 Microsoft Corporation  Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2) 

СерверB: SQL Server 2000

SELECT @@version
Microsoft SQL Server  2000 - 8.00.2055 (Intel X86)   Dec 16 2008 19:46:53   Copyright (c) 1988-2003 Microsoft Corporation  Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2) 

В журнале ошибок SQL Server нет ошибок.

Как сделать так, чтобы SQL Server не подавлялся при использовании PRINTу ребенка хранимая процедура.у меня есть другие случаи, когда я вызываю print из дочерних хранимых процедур без ошибок.

Update Обрезается до минимального воспроизводимого случая.Точный sql показан

1 Ответ

2 голосов
/ 04 октября 2011

Кажется, что проблема с SQL 2000, когда запрос запускается из Management Studio

Вы пытались запустить его в Query Analyzer?

...