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

Откуда:
Сообщений: 241
Добрый день, подскажите, пожалуйста, почему может не устанавливаться свойство identity_insert?

Задача банальная, перелить часть записей из таблицы с identity-полем в другую (временную) таблицу.

Модельный пример:
create table f (id bigint identity, value varchar(32))

;with d(d) as (select 10 union all select d+1 from d where d<19)
insert into f 
select * from d

select top 0 * into #tmp from f
set identity_insert #tmp on

insert into #tmp select * from f
- в результате его выполнения в SSMS получаю ошибку
Msg 8101, Level 16, State 1, Line 2
An explicit value for the identity column in table '#tmp' can only be specified when a column list is used and IDENTITY_INSERT is ON.


Хотя после "set identity_insert #tmp on" SSMS с каменной мордой говорит мне, что "Command(s) completed successfully."

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

Версия сервера Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) Jun 17 2011 00:54:03 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
17 июн 13, 13:52    [14441999]     Ответить | Цитировать Сообщить модератору
 Re: Энто-как-же-вашу-мать-извиняюсь-понимать?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Shlippenbaranus
На поверхности никаких оговорок разработчика по данному поводу вроде бы нет. На одну сессию попытка сделать "set identity_insert ..." у меня только одна.


найдите 10 отличий между примером из хелпа
-- Try to insert an explicit ID value of 3.
INSERT INTO dbo.Tool (ID, Name) VALUES (3, 'Garden shovel')

и вашим
insert into #tmp select * from f
17 июн 13, 13:54    [14442022]     Ответить | Цитировать Сообщить модератору
 Re: Энто-как-же-вашу-мать-извиняюсь-понимать?  [new]
Shlippenbaranus
Member

Откуда:
Сообщений: 241
Забыл сказать,
insert into #tmp select id,value from f
приводит к такому же результату.
17 июн 13, 13:55    [14442031]     Ответить | Цитировать Сообщить модератору
 Re: Энто-как-же-вашу-мать-извиняюсь-понимать?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Shlippenbaranus
Забыл сказать,
insert into #tmp select id,value from f

приводит к такому же результату.

Значит не все отличия нашли
17 июн 13, 13:55    [14442037]     Ответить | Цитировать Сообщить модератору
 Re: Энто-как-же-вашу-мать-извиняюсь-понимать?  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Shlippenbaranus
Msg 8101, Level 16, State 1, Line 2
An explicit value for the identity column in table '#tmp' can only be specified when a column list is used and IDENTITY_INSERT is ON.
insert into #tmp (id, value) select * from f
17 июн 13, 13:57    [14442051]     Ответить | Цитировать Сообщить модератору
 Re: Энто-как-же-вашу-мать-извиняюсь-понимать?  [new]
Shlippenbaranus
Member

Откуда:
Сообщений: 241
Glory, invm,

Спасибо! Не там column list прописал. Приношу извинения (смайлик: смущенная рожица).
17 июн 13, 14:02    [14442100]     Ответить | Цитировать Сообщить модератору
 Re: Энто-как-же-вашу-мать-извиняюсь-понимать?  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2415
Shlippenbaranus
Добрый день, подскажите, пожалуйста, почему может не устанавливаться свойство identity_insert?

Msg 8101, Level 16, State 1, Line 2
An explicit value for the identity column in table '#tmp' can only be specified when a column list is used and IDENTITY_INSERT is ON.


оно установилось. просят вас колонки указать, так укажите (последняя строчка):

insert into #tmp (id,value) select * from f
17 июн 13, 14:03    [14442113]     Ответить | Цитировать Сообщить модератору
 Re: Энто-как-же-вашу-мать-извиняюсь-понимать?  [new]
Shlippenbaranus
Member

Откуда:
Сообщений: 241
StarikNavy,

Да, разобрался уже.
17 июн 13, 14:05    [14442127]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить