Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ADODB.CONNECTION не видит ошибок при запуске процедуры на MSSQL  [new]
удшщтантон
Member

Откуда:
Сообщений: 22
Коллеги,

Есть проблема при использовании ADODB.Connection.

Если запускать выполнение процедуры на MSQL(08) через созданный ADODB.Connection, то объект не отлавливает ошибку, если первый селект отрабатывает нормально а последующие со ошибкой.

Пример:
Создаем две процедуры.
В процедуре тест1 генерируем ошибку после успешной итерации (select 1)
В процедуре тест2 генерируем ошибку в начале.

create  procedure  dbo.test1
as
begin 
select 1
raiserror('ошибка',16,1)
end 

create  procedure  dbo.test2
as
begin 
raiserror('ошибка',16,1)
select 1
end 

В VBA создаем соединение:
Sub tes()

Dim cnn As ADODB.Connection
Set cnn = CreateObject("ADODB.Connection")
Replica_CONNECT_STRING = "Provider=SQLOLEDB.1;Password=***;User ID=admin;Data source=SERVER"

cnn.Open Replica_CONNECT_STRING

cnn.Execute "uba.dbo.test1"
cnn.Execute "uba.dbo.test2"
End Sub

При запуске test1 ошибку не выдает.
При запуске test2 ошибка есть.

В окне Managment Studio ошибка есть в обоих случаях.

Кто-нибудь сталкивался с подобным? Есть ли способ отловить ошибку для первого test1 ?
cnn.Errors.Count возращает всегда 0
31 авг 11, 15:45    [11206922]     Ответить | Цитировать Сообщить модератору
 Re: ADODB.CONNECTION не видит ошибок при запуске процедуры на MSSQL  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
"При запуске test2 ошибка есть."

какая?
31 авг 11, 15:48    [11206947]     Ответить | Цитировать Сообщить модератору
 Re: ADODB.CONNECTION не видит ошибок при запуске процедуры на MSSQL  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Winnipuh
"При запуске test2 ошибка есть."

какая?


вопрос снят

А если выполнить те же запросы в SSMS от того же юзера, что будет?
31 авг 11, 15:49    [11206958]     Ответить | Цитировать Сообщить модератору
 Re: ADODB.CONNECTION не видит ошибок при запуске процедуры на MSSQL  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
удшщтантон
Есть проблема при использовании ADODB.Connection.

Если запускать выполнение процедуры на MSQL(08) через созданный ADODB.Connection, то объект не отлавливает ошибку, если первый селект отрабатывает нормально а последующие со ошибкой.
Такие вопросы продуктивнее задавать в форуме по ADODB.

А вообще нужно прочитать рекордсет, чтобы получить ошибку.

Т.е. правильная стратегия прочитывать все рекордсеты после вызова, тогда ошибки не будут пропадать.
31 авг 11, 15:54    [11207031]     Ответить | Цитировать Сообщить модератору
 Re: ADODB.CONNECTION не видит ошибок при запуске процедуры на MSSQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
SET NOCOUNT ON

в первую строчку процедур.
31 авг 11, 20:58    [11209050]     Ответить | Цитировать Сообщить модератору
 Re: ADODB.CONNECTION не видит ошибок при запуске процедуры на MSSQL  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
pkarklin
SET NOCOUNT ON

в первую строчку процедур.
ИМХО не должно помочь.

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

Соответственно, и читаются они тоже по порядку.
31 авг 11, 23:04    [11209484]     Ответить | Цитировать Сообщить модератору
 Re: ADODB.CONNECTION не видит ошибок при запуске процедуры на MSSQL  [new]
удшщтантон
Member

Откуда:
Сообщений: 22
Winnipuh
Winnipuh
"При запуске test2 ошибка есть."

какая?


вопрос снят

А если выполнить те же запросы в SSMS от того же юзера, что будет?



В обоих случаях будет выдаваться сообщение об ошибке.
1 сен 11, 10:40    [11210439]     Ответить | Цитировать Сообщить модератору
 Re: ADODB.CONNECTION не видит ошибок при запуске процедуры на MSSQL  [new]
удшщтантон
Member

Откуда:
Сообщений: 22
alexeyvg,

Не совсем понимаю как здесь можно использовать рекордсет.
При выполнении процедуры может и не быть никакой таблицы. Допустим следущая процедура:

create   procedure  [dbo].[test1]
as
begin 
select 1 a into #temp 
raiserror('ошибка',16,1)
end 

и ADODB не видит ошибки
1 сен 11, 10:51    [11210552]     Ответить | Цитировать Сообщить модератору
 Re: ADODB.CONNECTION не видит ошибок при запуске процедуры на MSSQL  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
удшщтантон
alexeyvg,

Не совсем понимаю как здесь можно использовать рекордсет.
При выполнении процедуры может и не быть никакой таблицы.
В этом примере рекордсета нет, должно видеть ошибку.

Странно, у вас что, никогда не видит ошибку, если raiserror не первым оператором??? Никогда с таким не встечался.

Попробуйте, конечено, SET NOCOUNT ON поставить. Но вообще странное поведение.
1 сен 11, 11:25    [11210877]     Ответить | Цитировать Сообщить модератору
 Re: ADODB.CONNECTION не видит ошибок при запуске процедуры на MSSQL  [new]
удшщтантон
Member

Откуда:
Сообщений: 22
всем спасибо
SET NOCOUNT ON в данном примере помог.


Без " SET NOCOUNT ON" если ошибка идет второй и далее , то ADODB ее не видит.
1 сен 11, 12:33    [11211586]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить