Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
 Срочно !!! Помогите !!!  [new]
poisk32
Member

Откуда:
Сообщений: 55
Использоват SQL 2000 под него написанна большая задача управления.
Вчера , пока не кто не работал перешо на 2008.
Сегодня ошибки на 2008

SELECT c.Recid as Id_torec into #tmp FROM Sbit_zakaz a,Sbit_zakaz_poz c WHERE a.Num_dok = 6709 and a.Recid=c.Recid_zakaz
update #tmp set Id_torec=NULL

Эта ниструкция ывдает ошибку

Cannot insert the value NULL into column 'Id_torec', table 'tempdb.dbo.#tmp________________________________________________________________________________________________________________00000000006C'; column does not allow nulls. UPDATE fails.
The statement has been terminated.

Помогите кто может ! Работа стоит !
7 ноя 11, 12:04    [11557082]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
И что непонятного из тескта ошибки?
7 ноя 11, 12:05    [11557091]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
poisk32
Member

Откуда:
Сообщений: 55
Ошибка понятна на на 2000 все работало А сейчас по предприятия стои !!!
7 ноя 11, 12:07    [11557107]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
poisk32
Ошибка понятна на на 2000 все работало А сейчас по предприятия стои !!!
Вам придется или исправить ваш код, или опять поставить 2000й.
7 ноя 11, 12:09    [11557115]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
poisk32
Использоват SQL 2000 под него написанна большая задача управления.
Вчера , пока не кто не работал перешо на 2008.

Помогите кто может ! Работа стоит !


Шикарно, и вот чем нужно было думать при переходе на продуктиве без предварительного тестирования ?

Кстати файлы бд от 2008 на 2000 уже не приаттачишь.
7 ноя 11, 12:09    [11557116]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
poisk32
Member

Откуда:
Сообщений: 55
poisk32
Ошибка понятна на на 2000 все работало А сейчас по предприятия стои !!!

Извините добавляю
Скорее всего разница в обработке null у 2000 и 2008
может гдето в настройках базы ????
7 ноя 11, 12:10    [11557119]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
poisk32
poisk32
Ошибка понятна на на 2000 все работало А сейчас по предприятия стои !!!

Извините добавляю
Скорее всего разница в обработке null у 2000 и 2008
может гдето в настройках базы ????
Нет никакой у них разницы в обработке null. Приведенный код на 2000м мог работать только в случае, если таблица #tmp получалась пуста.
7 ноя 11, 12:12    [11557134]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
poisk32
Member

Откуда:
Сообщений: 55
Тестирование было.
Просто зпдпча очень большая и до таких дебрей не дошел.
Да и не ожидал что ошибка в таком может быть !
7 ноя 11, 12:12    [11557142]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
poisk32
Member

Откуда:
Сообщений: 55
На 2000 он работал всегда. Как минимум уже 4 года.
На 2008 не работает !
7 ноя 11, 12:14    [11557149]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
poisk32,

изучайте SET ANSI_NULLS
7 ноя 11, 12:15    [11557154]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
poisk32,

но вот это
update #tmp set Id_torec=NULL
тот еще ахтунг, у нас за такое ногти вырывают клещами.
7 ноя 11, 12:16    [11557162]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
WarAnt
poisk32,

изучайте SET ANSI_NULLS

А теперь обоснуйте , нахуа гофен в этом случае ?
7 ноя 11, 12:18    [11557178]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
poisk32
Member

Откуда:
Сообщений: 55
Установка
SET ANSI_NULLS в занчение On или OFF

Результат тотже Только что проверил
7 ноя 11, 12:21    [11557204]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
poisk32
Установка
SET ANSI_NULLS в занчение On или OFF

Результат тотже Только что проверил


гы, никто не сомневался.

ЗЫ. Нет 2000 уже , ничем помочь не смогу. Правте скрипт , если возможно или откатитесь назад.
7 ноя 11, 12:23    [11557238]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
Бектуров Роман
Member

Откуда: Новосибирск
Сообщений: 1606
а если уровень совместимости попробовать 2000 поставить ?:
7 ноя 11, 12:24    [11557243]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
poisk32
Member

Откуда:
Сообщений: 55
Бектуров Роман
а если уровень совместимости попробовать 2000 поставить ?:


Как установить ????
7 ноя 11, 12:25    [11557256]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
Бектуров Роман
Member

Откуда: Новосибирск
Сообщений: 1606
на базе "свойста"/"параметры"
7 ноя 11, 12:27    [11557282]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
poisk32
Бектуров Роман
а если уровень совместимости попробовать 2000 поставить ?:


Как установить ????

ALTER DATABASE SET COMPATIBILITY_LEVEL = 80
7 ноя 11, 12:28    [11557291]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
poisk32
Бектуров Роман
а если уровень совместимости попробовать 2000 поставить ?:


Как установить ????


это точно не вариант! не заморачивайтесь...

либо искать как откатиться, либо править код - других вариантов нет, к сожалению.
7 ноя 11, 12:30    [11557297]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
SELECT 0+c.Recid as Id_torec into #tmp FROM Sbit_zakaz a,Sbit_zakaz_poz c WHERE a.Num_dok = 6709 and a.Recid=c.Recid_zakaz 
update #tmp set Id_torec=NULL
не поможет?
7 ноя 11, 12:30    [11557301]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
andy st
Member

Откуда:
Сообщений: 838
iap
SELECT 0+c.Recid as Id_torec into #tmp FROM Sbit_zakaz a,Sbit_zakaz_poz c WHERE a.Num_dok = 6709 and a.Recid=c.Recid_zakaz 
update #tmp set Id_torec=NULL
не поможет?

тогда уж сразу
SELECT null as Id_torec into #tmp FROM Sbit_zakaz a,Sbit_zakaz_poz c WHERE a.Num_dok = 6709 and a.Recid=c.Recid_zakaz 
:)
7 ноя 11, 12:34    [11557331]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
poisk32
Member

Откуда:
Сообщений: 55
iap
SELECT 0+c.Recid as Id_torec into #tmp FROM Sbit_zakaz a,Sbit_zakaz_poz c WHERE a.Num_dok = 6709 and a.Recid=c.Recid_zakaz 
update #tmp set Id_torec=NULL
не поможет?


Это не работает т.к. c.Recid имеет тип uniqueidentifier

Правит весь код который писался лет 5 . Это ну очень большая работа.
7 ноя 11, 12:35    [11557348]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
Glory
Member

Откуда:
Сообщений: 104751
poisk32
Эта ниструкция ывдает ошибку

Команда SELECT into создает поля с такими же типами и разрешениями NULL, что и у источника
Так что у вас таблицы Sbit_zakaz и Sbit_zakaz_poz разные на серверах
И от версии сервера это не зависит

use tempdb
go
if object_id('dbo.testtable') is not null drop table dbo.testtable
if object_id('tempdb..#testtable') is not null drop table #testtable
go
create table dbo.testtable(f1 int NULL)
go
insert dbo.testtable values(1)
go
select * into #testtable from dbo.testtable
update #testtable set f1 = NULL
go

if object_id('dbo.testtable') is not null drop table dbo.testtable
if object_id('tempdb..#testtable') is not null drop table #testtable
go

create table dbo.testtable(f1 int NOT NULL)
go
insert dbo.testtable values(1)
go
select * into #testtable from dbo.testtable
update #testtable set f1 = NULL
go
if object_id('dbo.testtable') is not null drop table dbo.testtable
if object_id('tempdb..#testtable') is not null drop table #testtable


Сообщение было отредактировано: 7 ноя 11, 12:37
7 ноя 11, 12:36    [11557361]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
WarAnt
poisk32,

но вот это
update #tmp set Id_torec=NULL
тот еще ахтунг, у нас за такое ногти вырывают клещами.
Может, это хорошо продуманный тактический ход?
А вообще, вот эквивалент всего этого безобразия:
SELECT NULLIF(c.Recid,c.Recid) as Id_torec
INTO #tmp
FROM Sbit_zakaz a
JOIN Sbit_zakaz_poz c ON a.Recid=c.Recid_zakaz
WHERE a.Num_dok=6709
UPDATE не нужен, получается
7 ноя 11, 12:38    [11557373]     Ответить | Цитировать Сообщить модератору
 Re: Срочно !!! Помогите !!!  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
andy st
iap
SELECT 0+c.Recid as Id_torec into #tmp FROM Sbit_zakaz a,Sbit_zakaz_poz c WHERE a.Num_dok = 6709 and a.Recid=c.Recid_zakaz 
update #tmp set Id_torec=NULL
не поможет?

тогда уж сразу
SELECT null as Id_torec into #tmp FROM Sbit_zakaz a,Sbit_zakaz_poz c WHERE a.Num_dok = 6709 and a.Recid=c.Recid_zakaz 
:)
null в этом селекте какого типа?
А ведь тип требуется для создания таблицы.
7 ноя 11, 12:40    [11557395]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить