Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 OPENQUERY catch source error messages  [new]
essbase.ru
Member

Откуда: http://essbase.ru/about
Сообщений: 1407
День добрый.
Вызываю процедуру в SELECT через OPENQUERY.

В случае ошибки в связанных объектах , вызываемых в процедуре, - теряется исходное сообщение.

Подскажите пж. как правильно управлять ( передавать ) изначальное сообщение об ошибки , что бы не дебажить код всякий раз из -за всяких чудес на стороне ...
17 июл 15, 12:13    [17903754]     Ответить | Цитировать Сообщить модератору
 Re: OPENQUERY catch source error messages  [new]
essbase.ru
Member

Откуда: http://essbase.ru/about
Сообщений: 1407
для истории :
данная проблема только для 2008
2012 честно транслирует ошибку в точку вызова

ЕР
19 июл 15, 16:40    [17909703]     Ответить | Цитировать Сообщить модератору
 Re: OPENQUERY catch source error messages  [new]
essbase.ru
Member

Откуда: http://essbase.ru/about
Сообщений: 1407
+1 к разбору ошибок
нужно в процедуры , которые вызываются из openquery
добавлять команды

SET FMTONLY OFF;
SET NOCOUNT ON;
20 июл 15, 18:00    [17914195]     Ответить | Цитировать Сообщить модератору
 Re: OPENQUERY catch source error messages  [new]
Glory
Member

Откуда:
Сообщений: 104751
essbase.ru
нужно в процедуры , которые вызываются из openquery
добавлять команды

А вы знаете, к чему приведет ваше SET FMTONLY OFF ?
21 июл 15, 11:23    [17916137]     Ответить | Цитировать Сообщить модератору
 Re: OPENQUERY catch source error messages  [new]
essbase.ru
Member

Откуда: http://essbase.ru/about
Сообщений: 1407
Glory,

К рабочему коду ? Нет ?
21 июл 15, 12:31    [17916469]     Ответить | Цитировать Сообщить модератору
 Re: OPENQUERY catch source error messages  [new]
Glory
Member

Откуда:
Сообщений: 104751
essbase.ru
Glory,

К рабочему коду ? Нет ?

Ну если для вас срабатываение кода 2 раза вместо одного есть "рабочий код", то да
21 июл 15, 12:44    [17916532]     Ответить | Цитировать Сообщить модератору
 Re: OPENQUERY catch source error messages  [new]
essbase.ru
Member

Откуда: http://essbase.ru/about
Сообщений: 1407
Glory,


Glory
срабатываение кода 2 раза

есть описание как проверить и почему так ?
21 июл 15, 14:43    [17917213]     Ответить | Цитировать Сообщить модератору
 Re: OPENQUERY catch source error messages  [new]
Glory
Member

Откуда:
Сообщений: 104751
essbase.ru
есть описание как проверить

Мониторить линекд сервер

essbase.ru
и почему так ?

SET FMTONLY
Returns only metadata to the client. Can be used to test the format of the response without actually running the query.

Как вы думаете, как OPENQUERY получает метаданные о результате, который вернет запрос ?
21 июл 15, 14:47    [17917238]     Ответить | Цитировать Сообщить модератору
 Re: OPENQUERY catch source error messages  [new]
essbase.ru
Member

Откуда: http://essbase.ru/about
Сообщений: 1407
Glory,

вот что на заборе написано... а там ...
https://support.microsoft.com/en-us/kb/297368
21 июл 15, 15:40    [17917464]     Ответить | Цитировать Сообщить модератору
 Re: OPENQUERY catch source error messages  [new]
Glory
Member

Откуда:
Сообщений: 104751
essbase.ru
вот что на заборе написано... а там ...
https://support.microsoft.com/en-us/kb/297368

To retrieve the metadata, OpenQuery makes OLE DB calls which eventually execute the query with the SET FMTONLY ON option.
А что внутри вашей процеуры вы помните ?
21 июл 15, 15:42    [17917473]     Ответить | Цитировать Сообщить модератору
 Re: OPENQUERY catch source error messages  [new]
essbase.ru
Member

Откуда: http://essbase.ru/about
Сообщений: 1407
Glory,

а я прочитал другое )

Alternatively, you can use the SET FMTONLY OFF option before the statement to run the extended stored procedure. For example:
21 июл 15, 15:57    [17917554]     Ответить | Цитировать Сообщить модератору
 Re: OPENQUERY catch source error messages  [new]
Glory
Member

Откуда:
Сообщений: 104751
essbase.ru
Alternatively, you can use the SET FMTONLY OFF option before the statement to run the extended stored procedure. For example:

Ну так в замен и получите двойное выполнение кода
Один раз, когда OpenQuery выполняет код с SET FMTONLY ON, который вы отключаете
Второй раз, когда OpenQuery выполняет код с SET FMTONLY OFF
21 июл 15, 16:00    [17917575]     Ответить | Цитировать Сообщить модератору
 Re: OPENQUERY catch source error messages  [new]
essbase.ru
Member

Откуда: http://essbase.ru/about
Сообщений: 1407
блин
я не знаю что на это сказать , вроде нельзя не верить твоему опыту
вроде и двух вызово не видел

Что делать ?
21 июл 15, 16:12    [17917627]     Ответить | Цитировать Сообщить модератору
 Re: OPENQUERY catch source error messages  [new]
Glory
Member

Откуда:
Сообщений: 104751
essbase.ru
вроде и двух вызово не видел

Не видели где ?
21 июл 15, 16:13    [17917633]     Ответить | Цитировать Сообщить модератору
 Re: OPENQUERY catch source error messages  [new]
essbase.ru
Member

Откуда: http://essbase.ru/about
Сообщений: 1407
Glory,

время выполнения процедуры , что с SET , что и без не меняется .

ЕР
21 июл 15, 16:27    [17917697]     Ответить | Цитировать Сообщить модератору
 Re: OPENQUERY catch source error messages  [new]
Glory
Member

Откуда:
Сообщений: 104751
essbase.ru
время выполнения процедуры , что с SET , что и без не меняется .

И что ?
Это ваш способ отслеживания количества вызывов ?
21 июл 15, 16:29    [17917711]     Ответить | Цитировать Сообщить модератору
 Re: OPENQUERY catch source error messages  [new]
essbase.ru
Member

Откуда: http://essbase.ru/about
Сообщений: 1407
Glory,

кхм. убрал вызов и установку SET FMTONLY OFF
все работает и без него ) спсб.


нашел статью которая описывает этот подводный камень
http://blogs.msdn.com/b/dataaccesstechnologies/archive/2013/03/04/why-is-my-stored-procedure-executed-twice.aspx
21 июл 15, 17:59    [17918116]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить