Principales respuestas
Desactivar identity de forma masiva

Pregunta
-
Saludos,
Cómo desativo y activo el campo identity autoincrementable de forma masiva cuando todas mis tablas el campo identity tiene por nombre "ID"
Esto debido a que tengo un procedure que recorre todas las tablas y hace un insert into dbo.tablaX select * from servidorremoto.dbo.tablaX
Gracias de antemano
viernes, 27 de agosto de 2010 13:16
Respuestas
-
Hola.
Más que activar y desactivar el campo identity (algo más costoso que difícil de hacer, porque implica recrear las tablas), haz uso de "set identity_insert MiTabla on" (y off): http://msdn.microsoft.com/es-es/library/ms188059.aspx. Ojo, te obligará a escribir los nombres de las columnas en el insert.. select, pero te permitirá realizar la inserción asignándole un valor al autoincremental y poder seguir usando éste luego de la inserción.
Si no lo logras, nos dices.
Alberto López Grande
SQL Server MVP
Visita mi blog en http://qwalgrande.blogspot.es/- Propuesto como respuesta Alberto López Grande (qwalgrande)Moderator viernes, 27 de agosto de 2010 13:43
- Marcado como respuesta Rafael Fagundes viernes, 3 de septiembre de 2010 14:27
viernes, 27 de agosto de 2010 13:41Moderador
Todas las respuestas
-
Hola.
Más que activar y desactivar el campo identity (algo más costoso que difícil de hacer, porque implica recrear las tablas), haz uso de "set identity_insert MiTabla on" (y off): http://msdn.microsoft.com/es-es/library/ms188059.aspx. Ojo, te obligará a escribir los nombres de las columnas en el insert.. select, pero te permitirá realizar la inserción asignándole un valor al autoincremental y poder seguir usando éste luego de la inserción.
Si no lo logras, nos dices.
Alberto López Grande
SQL Server MVP
Visita mi blog en http://qwalgrande.blogspot.es/- Propuesto como respuesta Alberto López Grande (qwalgrande)Moderator viernes, 27 de agosto de 2010 13:43
- Marcado como respuesta Rafael Fagundes viernes, 3 de septiembre de 2010 14:27
viernes, 27 de agosto de 2010 13:41Moderador -
Es el problema que son como 30 tablas y muchas tablas tienen decenas de campos. Pero sepungo no me queda de otra. Para poder hacer un Script
viernes, 27 de agosto de 2010 14:33 -
Hola.
Nada que no pueda facilitarse haciendo uso de metadatos...
declare @insert varchar(8000) select @insert = 'set identity_insert Tabla1 on insert Tabla1 (' select @insert = @insert + '[' + column_name + '],' from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'Tabla1' select @insert = left(@insert, len(@insert) -1) + ' select * from ServidorRemoto.BDRemota.dbo.Tabla1 set identity_insert Tabla1 off' select @insert
Alberto López Grande
SQL Server MVP
Visita mi blog en http://qwalgrande.blogspot.es/viernes, 27 de agosto de 2010 14:42Moderador