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

Откуда:
Сообщений: 710
Запрос вида ниже успешно отрабатывает на одном сервере, но выдаёт ошибку на другом, на обоих серверах идентичная структура таблицы
Microsoft SQL Server 2000 - 8.00.2282 (Intel X86) Dec 30 2008 02:22:41 Copyright (c) 1988-2003 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
select * into #RUSitPrCostOnDateMat from RUSitPrCostOnDateMat
GO

DROP TABLE RUSitPrCostOnDateMat
GO

CREATE TABLE [RUSitPrCostOnDateMat] (
	[group_item] [ItemType] NOT NULL ,
	[calc_date] [DateType] NOT NULL ,
	[item] [ItemType] NOT NULL ,
	[TopItem] [ItemType] NOT NULL ,
	[TLevel] [int] NULL ,
	[seq] [int] NOT NULL ,
	[ItPrice] [AmountType] NULL ,
	[ItCostPrice] [AmountType] NULL ,
	[product_code] [ProductCodeType] NULL ,
	[pmt_code] [PMTCodeType] NULL ,
	[qty] [QtyUnitType] NULL ,
	[u_m] [UMType] NULL ,
	[TUnit] [char] (1) COLLATE Cyrillic_General_CI_AS NULL ,
	[wc] [WcType] NULL ,
	[oper_num] [OperNumType] NULL ,
	[HRCost] [AmountType] NULL ,
	[Fovhd_fact] [AmountType] NULL ,
	[Vovhd_fact] [AmountType] NULL ,
	[InWorkflow] [FlagNyType] NOT NULL CONSTRAINT [DF_RUSitPrCos_InWorkflow_1__70] DEFAULT (0),
	[NoteExistsFlag] [FlagNyType] NOT NULL CONSTRAINT [DF_RUSitPrCos_NoteExistsFlag_2__70] DEFAULT (0),
	[RecordDate] [CurrentDateType] NOT NULL CONSTRAINT [DF_RUSitPrCos_RecordDate_3__70] DEFAULT (getdate()),
	[RowPointer] [RowPointerType] NOT NULL CONSTRAINT [DF_RUSitPrCos_RowPointer_4__70] DEFAULT (newid()),
	[CreatedBy] [UsernameType] NOT NULL CONSTRAINT [DF_RUSitPrCos_CreatedBy_5__70] DEFAULT (suser_sname()),
	[UpdatedBy] [UsernameType] NOT NULL CONSTRAINT [DF_RUSitPrCos_UpdatedBy_6__70] DEFAULT (suser_sname()),
	[CreateDate] [CurrentDateType] NOT NULL CONSTRAINT [DF_RUSitPrCos_CreateDate_7__70] DEFAULT (getdate()),
	CONSTRAINT [PK_RUSitPrCostOnDateMat] PRIMARY KEY  CLUSTERED 
	(
		[group_item],
		[calc_date],
		[item],
		[TopItem],
          [seq]
	)  ON [PRIMARY] 
) ON [PRIMARY]
GO

INSERT INTO RUSitPrCostOnDateMat
SELECT * FROM #RUSitPrCostOnDateMat
GO

DROP TABLE #RUSitPrCostOnDateMat
GO

CREATE UNIQUE INDEX [IX_RUSitPrCostOnDateMat_RowPointer] ON [dbo].[RUSitPrCostOnDateMat]([RowPointer]) ON [PRIMARY]
GO


Ошибка
(строк обработано: 1683313)
Сообщение 2627, уровень 14, состояние 1, строка 2
Violation of PRIMARY KEY constraint 'PK_RUSitPrCostOnDateMat'. Cannot insert duplicate key in object 'RUSitPrCostOnDateMat'.
The statement has been terminated.

(строк обработано: 0)

В аттаче файл трасировки.

Помогите пожалуйста вразумить, что надо подкрутить и в чём проблема.

К сообщению приложен файл (trace.trc - 12Kb) cкачать
16 фев 12, 16:30    [12104308]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться в ошибке запроса  [new]
iap
Member

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

надо явно перечислить поля у таблицы, в которую происходит вставка, и в SELECTе,
из которого берутся данные. Их должно быть одинаковое количество и следовать они
должны в одном и том же порядке. Это как минимум.
16 фев 12, 16:44    [12104451]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться в ошибке запроса  [new]
stavgreengo
Member

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

надо явно перечислить поля у таблицы, в которую происходит вставка, и в SELECTе,
из которого берутся данные. Их должно быть одинаковое количество и следовать они
должны в одном и том же порядке. Это как минимум.

Огромное спасибо, всё отработало ))))))))
А может кто-нибудь может объяснить природу сего феномена или ссылку дать для просвещения ?
16 фев 12, 17:19    [12104854]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться в ошибке запроса  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
stavgreengo
А может кто-нибудь может объяснить природу сего феномена или ссылку дать для просвещения ?

Да на здоровье.
16 фев 12, 17:22    [12104878]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться в ошибке запроса  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
stavgreengo
iap
stavgreengo,

надо явно перечислить поля у таблицы, в которую происходит вставка, и в SELECTе,
из которого берутся данные. Их должно быть одинаковое количество и следовать они
должны в одном и том же порядке. Это как минимум.

Огромное спасибо, всё отработало ))))))))
А может кто-нибудь может объяснить природу сего феномена или ссылку дать для просвещения ?
Порядок столбцов в удалённой и новой таблице необязательно совпадают.
В удалённой могли удалять/создавать заново колонки, например.
Поэтому данные из одних колонок Вы пытались вставить в другие.
Если бы не CONSTRAINT, можно было бы заметить это нескоро, когда было бы слишком поздно.
Так что Вам повезло.
16 фев 12, 17:27    [12104943]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить