Problema al copiar tabla con campo IDENTITY

13/03/2007 - 20:59 por Vicente Flich | Informe spam
Buenas tardes:

Estoy desarrollando una aplicacion que trabajara con un SQL 2005. El tema es
que, teniendo 2 tablas con la misma estructura (o parecida), necesito copiar
los datos de una sobre la otra. En principio probe con lo siguiente:

INSERT INTO clientes2 SELECT * FROM clientes

Pero el problema esta en que en dichas tablas, hay un campo marcado de
IDENTIDAD. Al ejecutar la consulta anterior me devuelve el error siguiente:

Mens. 8101, Nivel 16, Estado 1, Línea 1
Sólo puede especificarse un valor explícito para la columna de identidad de
la tabla 'PRUEBAS.dbo.CLIENTES2' cuando se usa una lista de columnas e
IDENTITY_INSERT es ON.

¿Alguna sugerencia?

Preguntas similare

Leer las respuestas

#1 DNC
13/03/2007 - 21:17 | Informe spam
el mensaje esta claro, busca en los bols por SET IDENTITY_INSERT

tambien podrias insertar el identity de clientes en otro campo del
mismo tipo y obviar el identity de clientes2.
igual como practica te recomiendo explicitar los campos del insert
into clientes2 (campo1,campo2, etc)

saludos!
diego


On 13 mar, 16:59, Vicente Flich
wrote:
Buenas tardes:

Estoy desarrollando una aplicacion que trabajara con un SQL 2005. El tema es
que, teniendo 2 tablas con la misma estructura (o parecida), necesito copiar
los datos de una sobre la otra. En principio probe con lo siguiente:

INSERT INTO clientes2 SELECT * FROM clientes

Pero el problema esta en que en dichas tablas, hay un campo marcado de
IDENTIDAD. Al ejecutar la consulta anterior me devuelve el error siguiente:

Mens. 8101, Nivel 16, Estado 1, Línea 1
Sólo puede especificarse un valor explícito para la columna de identidad de
la tabla 'PRUEBAS.dbo.CLIENTES2' cuando se usa una lista de columnas e
IDENTITY_INSERT es ON.

¿Alguna sugerencia?
Respuesta Responder a este mensaje
#2 Vicente Flich
14/03/2007 - 13:39 | Informe spam
Gracias por la ayuda. He averiguado algo mas sobre el SET IDENTITY_INSERT y
he puesto la consulta como

SET IDENTITY_INSERT Clientes2 ON
INSERT INTO clientes2 SELECT * FROM clientes
SET IDENTITY_INSERT Clientes2 OFF

pero nada, sigue saliendo el error. El tema creo que va por ahi, pero
seguire viendo a ver como.

"DNC" wrote:

el mensaje esta claro, busca en los bols por SET IDENTITY_INSERT

tambien podrias insertar el identity de clientes en otro campo del
mismo tipo y obviar el identity de clientes2.
igual como practica te recomiendo explicitar los campos del insert
into clientes2 (campo1,campo2, etc)

saludos!
diego


On 13 mar, 16:59, Vicente Flich
wrote:
> Buenas tardes:
>
> Estoy desarrollando una aplicacion que trabajara con un SQL 2005. El tema es
> que, teniendo 2 tablas con la misma estructura (o parecida), necesito copiar
> los datos de una sobre la otra. En principio probe con lo siguiente:
>
> INSERT INTO clientes2 SELECT * FROM clientes
>
> Pero el problema esta en que en dichas tablas, hay un campo marcado de
> IDENTIDAD. Al ejecutar la consulta anterior me devuelve el error siguiente:
>
> Mens. 8101, Nivel 16, Estado 1, Línea 1
> Sólo puede especificarse un valor explícito para la columna de identidad de
> la tabla 'PRUEBAS.dbo.CLIENTES2' cuando se usa una lista de columnas e
> IDENTITY_INSERT es ON.
>
> ¿Alguna sugerencia?



Respuesta Responder a este mensaje
#3 DNC
14/03/2007 - 17:17 | Informe spam
Hola Vicente,

va un ejemplo:

create table dbo.testtable
(cola int identity(1,1) primary key,
colb int not null,
colc as (cola + colb) * 2)
go

insert into [tempdb].[dbo].[testtable]([colb])
values(1)

insert into [tempdb].[dbo].[testtable]([colb])
values(2)

insert into [tempdb].[dbo].[testtable]([colb])
values(3)

insert into [tempdb].[dbo].[testtable]([colb])
values(4)

insert into [tempdb].[dbo].[testtable]([colb])
values(5)

insert into [tempdb].[dbo].[testtable]([colb])
values(6)

insert into [tempdb].[dbo].[testtable]([colb])
values(7)
go

select [cola], [colb], [colc]
from [tempdb].[dbo].[testtable]
go

create table dbo.testtable2
(col1 int identity(1,1) primary key,
cola int not null,
colb int not null,
colc int not null)
go

create table dbo.testtable3
(cola int identity(1,1) primary key,
colb int not null,
colc int not null)
go

insert into [tempdb].[dbo].[testtable2]([cola], [colb], [colc])
select [cola], [colb], [colc]
from [tempdb].[dbo].[testtable]
go

set identity_insert testtable3 off
insert into [tempdb].[dbo].[testtable2]([cola], [colb], [colc])
select [cola], [colb], [colc]
from [tempdb].[dbo].[testtable]
set identity_insert testtable3 on
go


Saludos!
diego


On 14 mar, 09:39, Vicente Flich
wrote:
Gracias por la ayuda. He averiguado algo mas sobre el SET IDENTITY_INSERT y
he puesto la consulta como

SET IDENTITY_INSERT Clientes2 ON
INSERT INTO clientes2 SELECT * FROM clientes
SET IDENTITY_INSERT Clientes2 OFF

pero nada, sigue saliendo el error. El tema creo que va por ahi, pero
seguire viendo a ver como.



"DNC" wrote:
> el mensaje esta claro, busca en los bols por SET IDENTITY_INSERT

> tambien podrias insertar el identity de clientes en otro campo del
> mismo tipo y obviar el identity de clientes2.
> igual como practica te recomiendo explicitar los campos del insert
> into clientes2 (campo1,campo2, etc)

> saludos!
> diego

> On 13 mar, 16:59, Vicente Flich
> wrote:
> > Buenas tardes:

> > Estoy desarrollando una aplicacion que trabajara con un SQL 2005. El tema es
> > que, teniendo 2 tablas con la misma estructura (o parecida), necesito copiar
> > los datos de una sobre la otra. En principio probe con lo siguiente:

> > INSERT INTO clientes2 SELECT * FROM clientes

> > Pero el problema esta en que en dichas tablas, hay un campo marcado de
> > IDENTIDAD. Al ejecutar la consulta anterior me devuelve el error siguiente:

> > Mens. 8101, Nivel 16, Estado 1, Línea 1
> > Sólo puede especificarse un valor explícito para la columna de identidad de
> > la tabla 'PRUEBAS.dbo.CLIENTES2' cuando se usa una lista de columnas e
> > IDENTITY_INSERT es ON.

> > ¿Alguna sugerencia?- Ocultar texto de la cita -

- Mostrar texto de la cita -
Respuesta Responder a este mensaje
#4 Vicente Flich
15/03/2007 - 12:53 | Informe spam
Gracias por el ejemplo. En la segunda opcion realmente, no se porque tiene
la tabla testtable3, ya que no la utilizas. Supongo que lo que querias poner
es

set identity_insert testtable3 off
insert into [tempdb].[dbo].[testtable3]([cola], [colb], [colc])
select [cola], [colb], [colc]
from [tempdb].[dbo].[testtable]
set identity_insert testtable3 on
go

O sea, el insert se hace sobre testtable3 ¿no?

Saludos
Vicente Flich


"DNC" escribió en el mensaje
news:
Hola Vicente,

va un ejemplo:

create table dbo.testtable
(cola int identity(1,1) primary key,
colb int not null,
colc as (cola + colb) * 2)
go

insert into [tempdb].[dbo].[testtable]([colb])
values(1)

insert into [tempdb].[dbo].[testtable]([colb])
values(2)

insert into [tempdb].[dbo].[testtable]([colb])
values(3)

insert into [tempdb].[dbo].[testtable]([colb])
values(4)

insert into [tempdb].[dbo].[testtable]([colb])
values(5)

insert into [tempdb].[dbo].[testtable]([colb])
values(6)

insert into [tempdb].[dbo].[testtable]([colb])
values(7)
go

select [cola], [colb], [colc]
from [tempdb].[dbo].[testtable]
go

create table dbo.testtable2
(col1 int identity(1,1) primary key,
cola int not null,
colb int not null,
colc int not null)
go

create table dbo.testtable3
(cola int identity(1,1) primary key,
colb int not null,
colc int not null)
go

insert into [tempdb].[dbo].[testtable2]([cola], [colb], [colc])
select [cola], [colb], [colc]
from [tempdb].[dbo].[testtable]
go

set identity_insert testtable3 off
insert into [tempdb].[dbo].[testtable2]([cola], [colb], [colc])
select [cola], [colb], [colc]
from [tempdb].[dbo].[testtable]
set identity_insert testtable3 on
go


Saludos!
diego


On 14 mar, 09:39, Vicente Flich
wrote:
Gracias por la ayuda. He averiguado algo mas sobre el SET IDENTITY_INSERT


y
he puesto la consulta como

SET IDENTITY_INSERT Clientes2 ON
INSERT INTO clientes2 SELECT * FROM clientes
SET IDENTITY_INSERT Clientes2 OFF

pero nada, sigue saliendo el error. El tema creo que va por ahi, pero
seguire viendo a ver como.



"DNC" wrote:
> el mensaje esta claro, busca en los bols por SET IDENTITY_INSERT

> tambien podrias insertar el identity de clientes en otro campo del
> mismo tipo y obviar el identity de clientes2.
> igual como practica te recomiendo explicitar los campos del insert
> into clientes2 (campo1,campo2, etc)

> saludos!
> diego

> On 13 mar, 16:59, Vicente Flich
> wrote:
> > Buenas tardes:

> > Estoy desarrollando una aplicacion que trabajara con un SQL 2005. El


tema es
> > que, teniendo 2 tablas con la misma estructura (o parecida), necesito


copiar
> > los datos de una sobre la otra. En principio probe con lo siguiente:

> > INSERT INTO clientes2 SELECT * FROM clientes

> > Pero el problema esta en que en dichas tablas, hay un campo marcado de
> > IDENTIDAD. Al ejecutar la consulta anterior me devuelve el error


siguiente:

> > Mens. 8101, Nivel 16, Estado 1, Línea 1
> > Sólo puede especificarse un valor explícito para la columna de


identidad de
> > la tabla 'PRUEBAS.dbo.CLIENTES2' cuando se usa una lista de columnas e
> > IDENTITY_INSERT es ON.

> > ¿Alguna sugerencia?- Ocultar texto de la cita -

- Mostrar texto de la cita -
Respuesta Responder a este mensaje
#5 DNC
15/03/2007 - 14:47 | Informe spam
perdon por el desliz, en realidad es

set identity_insert testtable3 on
insert into [tempdb].[dbo].[testtable3]([cola], [colb], [colc])
select [cola], [colb], [colc]
from [tempdb].[dbo].[testtable]
set identity_insert testtable3 off

:-)


On 15 mar, 08:53, "Vicente Flich" (quitar 99)>
wrote:
Gracias por el ejemplo. En la segunda opcion realmente, no se porque tiene
la tabla testtable3, ya que no la utilizas. Supongo que lo que querias poner
es

set identity_insert testtable3 off
insert into [tempdb].[dbo].[testtable3]([cola], [colb], [colc])
select [cola], [colb], [colc]
from [tempdb].[dbo].[testtable]
set identity_insert testtable3 on
go

O sea, el insert se hace sobre testtable3 ¿no?

Saludos
Vicente Flich

"DNC" escribió en el mensajenews:
Hola Vicente,

va un ejemplo:

create table dbo.testtable
(cola int identity(1,1) primary key,
colb int not null,
colc as (cola + colb) * 2)
go

insert into [tempdb].[dbo].[testtable]([colb])
values(1)

insert into [tempdb].[dbo].[testtable]([colb])
values(2)

insert into [tempdb].[dbo].[testtable]([colb])
values(3)

insert into [tempdb].[dbo].[testtable]([colb])
values(4)

insert into [tempdb].[dbo].[testtable]([colb])
values(5)

insert into [tempdb].[dbo].[testtable]([colb])
values(6)

insert into [tempdb].[dbo].[testtable]([colb])
values(7)
go

select [cola], [colb], [colc]
from [tempdb].[dbo].[testtable]
go

create table dbo.testtable2
(col1 int identity(1,1) primary key,
cola int not null,
colb int not null,
colc int not null)
go

create table dbo.testtable3
(cola int identity(1,1) primary key,
colb int not null,
colc int not null)
go

insert into [tempdb].[dbo].[testtable2]([cola], [colb], [colc])
select [cola], [colb], [colc]
from [tempdb].[dbo].[testtable]
go

set identity_insert testtable3 off
insert into [tempdb].[dbo].[testtable2]([cola], [colb], [colc])
select [cola], [colb], [colc]
from [tempdb].[dbo].[testtable]
set identity_insert testtable3 on
go


Saludos!
diego

On 14 mar, 09:39, Vicente Flich



wrote:
> Gracias por la ayuda. He averiguado algo mas sobre el SET IDENTITY_INSERT
y
> he puesto la consulta como

> SET IDENTITY_INSERT Clientes2 ON
> INSERT INTO clientes2 SELECT * FROM clientes
> SET IDENTITY_INSERT Clientes2 OFF

> pero nada, sigue saliendo el error. El tema creo que va por ahi, pero
> seguire viendo a ver como.

> "DNC" wrote:
> > el mensaje esta claro, busca en los bols por SET IDENTITY_INSERT

> > tambien podrias insertar el identity de clientes en otro campo del
> > mismo tipo y obviar el identity de clientes2.
> > igual como practica te recomiendo explicitar los campos del insert
> > into clientes2 (campo1,campo2, etc)

> > saludos!
> > diego

> > On 13 mar, 16:59, Vicente Flich
> > wrote:
> > > Buenas tardes:

> > > Estoy desarrollando una aplicacion que trabajara con un SQL 2005. El
tema es
> > > que, teniendo 2 tablas con la misma estructura (o parecida), necesito
copiar
> > > los datos de una sobre la otra. En principio probe con lo siguiente:

> > > INSERT INTO clientes2 SELECT * FROM clientes

> > > Pero el problema esta en que en dichas tablas, hay un campo marcado de
> > > IDENTIDAD. Al ejecutar la consulta anterior me devuelve el error
siguiente:

> > > Mens. 8101, Nivel 16, Estado 1, Línea 1
> > > Sólo puede especificarse un valor explícito para la columna de
identidad de
> > > la tabla 'PRUEBAS.dbo.CLIENTES2' cuando se usa una lista de columnas e
> > > IDENTITY_INSERT es ON.

> > > ¿Alguna sugerencia?- Ocultar texto de la cita -

> - Mostrar texto de la cita -- Ocultar texto de la cita -

- Mostrar texto de la cita -
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida