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

Откуда:
Сообщений: 4
Имеется база. Под нее вышло обновление. При установке обновление останавливается на следующем коде.
CREATE procedure _PRJFILTER_ACCESS_BU_BU 
@old_prjfilter_id INTEGER output,
@old_principal_id INTEGER output,
@old_principal_type CHAR(1) output,
@new_prjfilter_id INTEGER output,
@new_principal_id INTEGER output,
@new_principal_type CHAR(1) output,
@new_prjfilter_acc_view INTEGER output,
@new_prjfilter_acc_edit INTEGER output,
@new_prjfilter_acc_grant INTEGER output
as
begin
if (
       (@old_prjfilter_id <> @new_prjfilter_id) or
       (@old_principal_id <> @new_principal_id) or
       (@old_principal_type <> @new_principal_type)
      )
        exec sp_exception 'exception_not_supported'
       

  if( @new_prjfilter_acc_grant>0 or @new_prjfilter_acc_edit>0 ) begin set set @new_prjfilter_acc_view = 1 end
end

указывает на ошибку в следующей строчке кода, а именно в SET
  if( @new_prjfilter_acc_grant>0 or @new_prjfilter_acc_edit>0 ) begin set set @new_prjfilter_acc_view = 1 end
end
Incorrect syntax near the keyword 'SET'.

Правильнее было бы вот так:
if( @new_prjfilter_acc_grant>0 or @new_prjfilter_acc_edit>0 ) begin set @new_prjfilter_acc_view = 1 end
end

Но разработчики обновления утверждают что в коде все нормально и у них все проходит на ура.

Где все-таки закралась ошибка: у них в программе обновления или у нас в SQL?
Прогоняли обновление и на SQL2005 SP2 и SP3. Везде - Incorrect syntax near the keyword 'SET'
Правилен ли следующий код?
begin set set @new_prjfilter_acc_view = 1 end
end
5 авг 09, 12:31    [7499859]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в коде процедуры, дублированное SET SET  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36808
Синтаксис неверный. Разработчики накосячили.
5 авг 09, 12:32    [7499877]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в коде процедуры, дублированное SET SET  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Евгений Михайлов
Но разработчики обновления утверждают что в коде все нормально и у них все проходит на ура.
А чем они объясняют возникновение ошибки у Вас?
5 авг 09, 12:34    [7499891]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в коде процедуры, дублированное SET SET  [new]
Евгений Михайлов
Member

Откуда:
Сообщений: 4
Паганель
Евгений Михайлов
Но разработчики обновления утверждают что в коде все нормально и у них все проходит на ура.
А чем они объясняют возникновение ошибки у Вас?

Версией SQL. Первоначально у нас возникла на SQL2005 SP3. Разработчики предложили прогнать на голом SQL2005 без сервис-паков или на SP2 (на нем они тестируют).
5 авг 09, 12:36    [7499911]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в коде процедуры, дублированное SET SET  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36808
Евгений Михайлов
Версией SQL. Первоначально у нас возникла на SQL2005 SP3. Разработчики предложили прогнать на голом SQL2005 без сервис-паков или на SP2 (на нем они тестируют).
Предложите таки разработчикам синтаксис оператора set почитать.
5 авг 09, 12:38    [7499925]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в коде процедуры, дублированное SET SET  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Евгений Михайлов
предложили прогнать на голом SQL2005 без сервис-паков или на SP2 (на нем они тестируют).
Так пусть тестируют на сервере, аналогичном Вашему, и все
5 авг 09, 12:38    [7499928]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в коде процедуры, дублированное SET SET  [new]
rata
Member

Откуда:
Сообщений: 130
Вернее всего процедуры написаны на SQL 2000.
Или в базе уровень совместимости стоит- 2000 (8.0)
Мы когда с 2000 на 2005 переходили- с десяток таких SET SET нашли, в 2000 работали, в 2005- облом.
Решения три варината мне видится - поправить текст процедуры, либо у базы установить уровень совместимости 2000. Ну и самый правильный- выдать разработчикам волшебного пенделя.
5 авг 09, 12:41    [7499948]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в коде процедуры, дублированное SET SET  [new]
Евгений Михайлов
Member

Откуда:
Сообщений: 4
Паганель
Евгений Михайлов
предложили прогнать на голом SQL2005 без сервис-паков или на SP2 (на нем они тестируют).
Так пусть тестируют на сервере, аналогичном Вашему, и все

говорят прогоняли, у них все без проблем, как говорят.

На вопрос:

if( @new_prjfilter_acc_grant>0 or @new_prjfilter_acc_edit>0 ) begin [b]set set[/b] @new_prjfilter_acc_view = 1 end end
а здесь, в коде все гут (выделено жирным)?

Отвечают:
гут, гут. И на ранних версиях MS все отлично работает.

Вот http://forum.technologics.ru/topic1206.html ссылка на обсуждение проблемы с разработчиками.
5 авг 09, 12:43    [7499972]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в коде процедуры, дублированное SET SET  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
rata
выдать разработчикам волшебного пенделя.
не обделите также своим вниманием тестировщиков
5 авг 09, 12:45    [7499995]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в коде процедуры, дублированное SET SET  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Евгений Михайлов
а здесь, в коде все гут (выделено жирным)?
Отвечают:
гут, гут. И на ранних версиях MS все отлично работает.
Попросите ответ с цитатами из BOL
5 авг 09, 12:47    [7500019]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в коде процедуры, дублированное SET SET  [new]
Евгений Михайлов
Member

Откуда:
Сообщений: 4
rata
Вернее всего процедуры написаны на SQL 2000.
Или в базе уровень совместимости стоит- 2000 (8.0)


Во, за это спасибо. Прошло.
5 авг 09, 12:48    [7500036]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в коде процедуры, дублированное SET SET  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Евгений Михайлов
rata
Вернее всего процедуры написаны на SQL 2000.
Или в базе уровень совместимости стоит- 2000 (8.0)
Во, за это спасибо. Прошло.
Значит на сервере с 9-м уровнем совместимости они не тестировали
5 авг 09, 12:52    [7500076]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в коде процедуры, дублированное SET SET  [new]
Glory
Member

Откуда:
Сообщений: 104760
Паганель
Евгений Михайлов
rata
Вернее всего процедуры написаны на SQL 2000.
Или в базе уровень совместимости стоит- 2000 (8.0)
Во, за это спасибо. Прошло.
Значит на сервере с 9-м уровнем совместимости они не тестировали

И мало того, не проверяют версию сервера, на который устанавливают приложение
5 авг 09, 12:54    [7500089]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в коде процедуры, дублированное SET SET  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Паганель
Евгений Михайлов
а здесь, в коде все гут (выделено жирным)?
Отвечают:
гут, гут. И на ранних версиях MS все отлично работает.
Попросите ответ с цитатами из BOL
В SQL 2000 действительно работает вот такое:
автор
DECLARE @X INT;
SET SET @X=0;
SELECT @X;

То есть, просто пустой SET нормально молча отрабатывает
5 авг 09, 12:55    [7500105]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в коде процедуры, дублированное SET SET  [new]
Glory
Member

Откуда:
Сообщений: 104760
iap

То есть, просто пустой SET нормально молча отрабатывает

Не отрабатывает, а игнорируется.
А в SQL2005 пустой SET вызывает ошибку компиляции
Вывод - был изменен синтаксический анализатор
5 авг 09, 12:58    [7500126]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в коде процедуры, дублированное SET SET  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
iap
В SQL 2000 действительно работает вот такое:
Да я-то верю
Я про то, что разработчик при вопросе - нормальный у него код
лучше бы процитировал документацию и все, никаких к нему больше вопросов
5 авг 09, 13:01    [7500147]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить