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

Откуда:
Сообщений: 255
Настал день и час избавляться от SQL 2000 (SP4).
Подняли SQL
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (Intel X86) 

Программа работавшая "относительно нормально" на SQL 2000 начала давать сбои.

Вопрос уже обсуждался но это было давно https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=245819&pg=2&hl=data%20type%20receiving%20variable%20not%20equal%20data%20type%20column
но тогда решение не было найдено.

declare @t table(d numeric(16, 9) NULL)
declare @V numeric(17, 9)
update @t set @V=d=1

Ошибка:
Msg 425, Level 16, State 1, Line 3
Data type numeric of receiving variable is not equal to the data type numeric of column 'd'.

При этом достаточно поменять "declare @V numeric(17, 9)" на "declare @V numeric(16, 9)"
и все чудно отрабатывает

Уже и SP1 для R2 на тестовом сервере накатили.

Есть ли возможность исправить данную "ошибку"? Обращаться к разработчикам софта - боюсь что приведет к более плачевным результатам, у них даже исходников толком не осталось.
13 фев 12, 15:36    [12082320]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки после перехода SQL 2000 -> 2008 R2  [new]
baracs
Member

Откуда: Москва
Сообщений: 7217
Astakhov,

Попробуйте с этим параметром поиграться.

Есть соответствующая установка в свойствах БД.
13 фев 12, 17:08    [12083136]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки после перехода SQL 2000 -> 2008 R2  [new]
Crimean
Member

Откуда:
Сообщений: 13147
2 baracs

дык пофик эти сеты

2 Astakhov

вообще код достаточно стремный, переписывать
я так понимаю смысл конструкции - узнать прошел ли update? так это корректнее по @@rowcount сделать
13 фев 12, 17:25    [12083315]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки после перехода SQL 2000 -> 2008 R2  [new]
Astakhov
Member

Откуда:
Сообщений: 255
baracs
Попробуйте с этим параметром поиграться.
Есть соответствующая установка в свойствах БД.
не помогает :-(

Crimean
вообще код достаточно стремный, переписывать
Переписать не в нашей власти. Разве что менять программу полностью.

Crimean
я так понимаю смысл конструкции - узнать прошел ли update? так это корректнее по @@rowcount сделать

Ну в sql 2000 я лично это не раз применял и чтоб пронумеровать строки или еще чего посчитать.
Ну вот например простейший запросец

declare @t table(r int, p bigint, t varchar(255))
insert into @t (t) values('r1')
insert into @t (t) values('r2')
insert into @t (t) values('r3')
insert into @t (t) values('r4')
insert into @t (t) values('r5')
insert into @t (t) values('r6')

select * from @t

declare @numRow int; set @numRow = 0
declare @val bigint; set @val = 1
update @t set 
	@numRow = r = @numRow + 1,
	@val = p = @val * 2

select * from @t
13 фев 12, 19:52    [12084513]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки после перехода SQL 2000 -> 2008 R2  [new]
Crimean
Member

Откуда:
Сообщений: 13147
Astakhov
не помогает :-(


ну что могу сказать.. надо было в CTP влазить вовремя.. cmptlevel тоже не помогает
оставайтесь на 2000 или проверяйте на данали. но там в релиз тоже не успеете, в сп1 может быть разве что
13 фев 12, 20:12    [12084628]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить