Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Не понятный разрыв соединения MSSQL2008 SP1(CU5)  [new]
GFX
Member

Откуда:
Сообщений: 283
Установил Сиквел 2008 именованным инстансом.
Так же SP1(SQLServer2008SP1-KB968369-x86-ENU.exe) и
Cumulative Update Package 5 for SQL Server 2008 Service Pack 1(SQLServer2008-KB975977-x86.exe)

print @@VERSION:

Microsoft SQL Server 2008 (SP1) - 10.0.2746.0 (Intel X86) 
	Nov  9 2009 16:59:31 
	Copyright (c) 1988-2008 Microsoft Corporation
	Standard Edition on Windows NT 5.2 <X86> (Build 3790: Service Pack 2)

При работе вот этого кода. Непонятно по каким причинам рвется соединение.
В результате чего получаю вот такую не информативную ошибку:
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 20, State 0, Line 0
A severe error occurred on the current command.  The results, if any, should be discarded.
Вот собственно код:
declare @Name nvarchar(100)
declare @Type nvarchar(100)
declare @SQL nvarchar(2000)
declare @text nvarchar(max)

declare curs cursor fast_forward 
for
    select Name, Type 
    from sys.objects 
    where type='P' 

open curs
fetch next from curs into @Name,@Type

while @@fetch_status = 0
begin     
        begin try            
            EXECUTE sp_executesql 
            N'exec sp_refreshsqlmodule @name=@name', N'@name nvarchar(100)',@name = @name;
        end try 
        begin catch
            print 'Ошибка при компиляции:'+@name+' '+@Type
            print	'Важность: '+cast(ERROR_SEVERITY() as nvarchar(10))		+'; '+ 
	                'Объект: '  +cast(isnull(ERROR_PROCEDURE(),'Скрипт') as nvarchar(100))+ '; '+
	                'Состояние: '+cast(ERROR_STATE() as nvarchar(10))+'; '+         
	                '№ Строки в объекте: '+cast(ERROR_LINE() as nvarchar(10))+'; '+ 
	                'Сообщение: '+cast(ERROR_MESSAGE() as nvarchar(800)) 

            print ''
            rollback tran
        end catch    
    fetch next from curs into @Name,@Type
end
close curs
deallocate curs


Подскажите как решить эту проблему? Спасибо.

З.Ы. На 2005 SP3 код отрабатывает без ошибок.
29 дек 09, 12:43    [8131759]     Ответить | Цитировать Сообщить модератору
 Re: Не понятный разрыв соединения MSSQL2008 SP1(CU5)  [new]
Konst_One
Member

Откуда:
Сообщений: 11513
    select Name, Type 
    from sys.objects 
    where type='P' 

посмотрите, что вы там перекомпиллировать решили
29 дек 09, 12:46    [8131782]     Ответить | Цитировать Сообщить модератору
 Re: Не понятный разрыв соединения MSSQL2008 SP1(CU5)  [new]
GFX
Member

Откуда:
Сообщений: 283
Все хранимые процедуры.
29 дек 09, 12:47    [8131789]     Ответить | Цитировать Сообщить модератору
 Re: Не понятный разрыв соединения MSSQL2008 SP1(CU5)  [new]
Konst_One
Member

Откуда:
Сообщений: 11513
там не только пользовательские
29 дек 09, 12:47    [8131790]     Ответить | Цитировать Сообщить модератору
 Re: Не понятный разрыв соединения MSSQL2008 SP1(CU5)  [new]
GFX
Member

Откуда:
Сообщений: 283
select distinct type_desc
from sys.objects 
where type='P' 

Возвращает: SQL_STORED_PROCEDURE

Что не так? Вроде все пользовательские.
29 дек 09, 12:55    [8131845]     Ответить | Цитировать Сообщить модератору
 Re: Не понятный разрыв соединения MSSQL2008 SP1(CU5)  [new]
Konst_One
Member

Откуда:
Сообщений: 11513
там могут быть процедуры репликаций и тп
29 дек 09, 13:00    [8131882]     Ответить | Цитировать Сообщить модератору
 Re: Не понятный разрыв соединения MSSQL2008 SP1(CU5)  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> select Name, Type
> from sys.objects
> where type='P'

и что, они все в схеме текущего пользователя или dbo?
и все non-schema-bound?

Posted via ActualForum NNTP Server 1.4

29 дек 09, 13:00    [8131891]     Ответить | Цитировать Сообщить модератору
 Re: Не понятный разрыв соединения MSSQL2008 SP1(CU5)  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> и все non-schema-bound?

хотя да, там же процедуры только.

Posted via ActualForum NNTP Server 1.4

29 дек 09, 13:05    [8131948]     Ответить | Цитировать Сообщить модератору
 Re: Не понятный разрыв соединения MSSQL2008 SP1(CU5)  [new]
GFX
Member

Откуда:
Сообщений: 283
все в схеме dbo.

Про этот вопрос не понял: и все non-schema-bound?
Объясните пожалуйста.
29 дек 09, 13:06    [8131958]     Ответить | Цитировать Сообщить модератору
 Re: Не понятный разрыв соединения MSSQL2008 SP1(CU5)  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Про этот вопрос не понял: и все non-schema-bound?
> Объясните пожалуйста.

это я ступил, прошу прощения.

Posted via ActualForum NNTP Server 1.4

29 дек 09, 13:10    [8131993]     Ответить | Цитировать Сообщить модератору
 Re: Не понятный разрыв соединения MSSQL2008 SP1(CU5)  [new]
GFX
Member

Откуда:
Сообщений: 283
По проблеме:
Заметил что обрыв коннекта происходит на разных итерациях...
Как победить то, Гуру подскажите. В какую сторону копать?

З.Ы. Кол-во хп порядка 3000.
29 дек 09, 13:44    [8132325]     Ответить | Цитировать Сообщить модератору
 Re: Не понятный разрыв соединения MSSQL2008 SP1(CU5)  [new]
Konst_One
Member

Откуда:
Сообщений: 11513
where type='P' and is_ms_shipped = 0
29 дек 09, 14:27    [8132636]     Ответить | Цитировать Сообщить модератору
 Re: Не понятный разрыв соединения MSSQL2008 SP1(CU5)  [new]
PokeMan
Member

Откуда: MOSKAU
Сообщений: 312
У меня так же валится на пользовательской процедуре, где присутствует следующий код:
  UPDATE tTables
  SET Part=@Part
  WHERE CURRENT OF TableCursor  

TableCursor - это простой курсор.
Видать такой синтаксис sp_refreshsqlmodule понимать отказывается.
29 дек 09, 14:56    [8132932]     Ответить | Цитировать Сообщить модератору
 Re: Не понятный разрыв соединения MSSQL2008 SP1(CU5)  [new]
Konst_One
Member

Откуда:
Сообщений: 11513
sp_refreshsqlmodule should be run when changes are made to the objects underlying the module that affect its definition. Otherwise, the module might produce unexpected results when it is queried or invoked. To refresh a view, you can use either sp_refreshsqlmodule or sp_refreshview with the same results.

может это ваш случай?
29 дек 09, 15:02    [8132991]     Ответить | Цитировать Сообщить модератору
 Re: Не понятный разрыв соединения MSSQL2008 SP1(CU5)  [new]
PokeMan
Member

Откуда: MOSKAU
Сообщений: 312
Нашел тут, но только на немецком :-) Там отказались от этого синтаксиса.

ЗЫ: А мы просто отказались от курсоров и забыли об этой ошибке.
29 дек 09, 15:17    [8133157]     Ответить | Цитировать Сообщить модератору
 Re: Не понятный разрыв соединения MSSQL2008 SP1(CU5)  [new]
GFX
Member

Откуда:
Сообщений: 283
Konst_One
where type='P' and is_ms_shipped = 0

Так тоже пробовал. Но дело не в этих процедурах где is_ms_shipped = 0.
29 дек 09, 15:26    [8133240]     Ответить | Цитировать Сообщить модератору
 Re: Не понятный разрыв соединения MSSQL2008 SP1(CU5)  [new]
Konst_One
Member

Откуда:
Сообщений: 11513
GFX
Konst_One
where type='P' and is_ms_shipped = 0

Так тоже пробовал. Но дело не в этих процедурах где is_ms_shipped = 0.


а в каких? вы же пользовательские желаете обработать или всё-таки нет?
29 дек 09, 15:31    [8133285]     Ответить | Цитировать Сообщить модератору
 Re: Не понятный разрыв соединения MSSQL2008 SP1(CU5)  [new]
GFX
Member

Откуда:
Сообщений: 283
Konst_One
GFX
Konst_One
where type='P' and is_ms_shipped = 0

Так тоже пробовал. Но дело не в этих процедурах где is_ms_shipped = 0.


а в каких? вы же пользовательские желаете обработать или всё-таки нет?


Да хочу обработать только пользовательские ХП
29 дек 09, 17:35    [8134324]     Ответить | Цитировать Сообщить модератору
 Re: Не понятный разрыв соединения MSSQL2008 SP1(CU5)  [new]
Konst_One
Member

Откуда:
Сообщений: 11513
    select Name, Type, schema_id 
    from sys.objects 
    where type='P' and is_ms_shipped = 0

вот это и есть пользовательские.
schema_id проверьте, может у вас объекты из других схем
29 дек 09, 17:56    [8134514]     Ответить | Цитировать Сообщить модератору
 Re: Не понятный разрыв соединения MSSQL2008 SP1(CU5)  [new]
GFX
Member

Откуда:
Сообщений: 283
PokeMan
У меня так же валится на пользовательской процедуре, где присутствует следующий код:
  UPDATE tTables
  SET Part=@Part
  WHERE CURRENT OF TableCursor  

TableCursor - это простой курсор.
Видать такой синтаксис sp_refreshsqlmodule понимать отказывается.


ага именно в этом и кроется причина обрыва соединения. Видимо недоточили хп sp_refreshsqlmodule в 2008 сиквеле.
Спасибо всем.

Отдельное спасибо PokeMan :)
29 дек 09, 18:29    [8134646]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить