SQL Server - Identity_Insert ON/OFF con parámetros

 
Vista:
sin imagen de perfil
Val: 3
Ha disminuido su posición en 7 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Identity_Insert ON/OFF con parámetros

Publicado por María Inés Burgos (2 intervenciones) el 27/08/2018 22:33:56
Buenos días! He pensado en remover de mi tabla principal (historia clínica) de la base de datos los registros que hace más de 5 años no se usen para quitarlos del movimiento diario de información, pero guardarlos porque puedo necesitarlos.
Esta tabla principal Historia clínica, es llave foránea de otra tabla Consultas y a su vez ésta última lo es de otras 4 tablas más.
Con un simple select sobre un campo fecha obtengo el ID de la tabla historia clínica de los pacientes que hace 5 años no veo. Luego, he creado otra base de datos que es exactamente igual a esta de donde quiero remover los registros e inserto con un insert múltiple los datos de la base de datos original a esta otra de "baja", para posteriormente borrar el paciente con todos sus datos asociados en las otras tablas de mi base central.
Hasta ahí voy bien. Pero pensé, si a alguno de estos pacientes después de 5 años se le ocurre volver, debería poder restaurar los datos a la tabla original, la cual uso en Visual.net para la aplicación.
Todas las tablas tienen campos identity.
He leído sobre el IDENTITY_INSERT ON/OFF y lo he podido aplicar probandolo con valores, ahora mi problema es que necesito pasarle un parámetro porque el insert into tiene que tomar los valores de la tabla "baja" que yo le indico a través del ID. es decir, necesito pasarle desde visual el Número de historia clínica, para que me recupere de éstos.
Y bueno, noté escribiendo el stored procedure que ésto no lo permite (poner simplemente @NHC smallint) Me obliga a poner "Declare" y no me sirve para poder pasarle los datos desde visual. De otro modo con un SET podría solucionarlo, pero el tema es que quería automatizarlo mandándole el dato desde Visual.Net
algo así me quedaría (abrevio los campos porque son muchos)

1
2
3
4
5
6
7
8
Create Procedure Restaurar_Paciente
as
SET IDENTITY_INSERT HC ON
GO
Declare @NHC Smallint
insert into CargaHC(NHC, Fecha, Apellido, DNI, Domicilio, etc) (SELECT NHC, Fecha, Apellido, DNI, Domicilio, etc where HCBaja.dbo.HCBaja.NHC = @NHC)
SET IDENTITY_INSERT HC OFF
GO

Después debo repetir eso para el resto de las tablas dado que por lo que vi, no se permite más de 1 identity insert ON por sentencia. Pero eso sería lo de menos.


Desde ya muchas gracias y leo sus sugerencias y correcciones

PD: estoy usando SQL server Management Studio 2017
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Identity_Insert ON/OFF con parámetros

Publicado por Isaias (4558 intervenciones) el 28/08/2018 19:25:25
Hola

SQL Server 2017, querrá usted decir

¿Es necesariamente imprescindible que borre esos registros?, ¿De cuantos registros estamos hablando?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 3
Ha disminuido su posición en 7 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Identity_Insert ON/OFF con parámetros

Publicado por María Inés Burgos (2 intervenciones) el 28/08/2018 21:23:10
Hola Isaias! No sé cuán imprescindible resultará a largo plazo pero pensé dejar contemplada la situación, por las dudas que se me pusiera pesada la base de datos. Ud cree que si acumulo registros ociosos durante no sé, digamos 35-40 años de práctica que me pueden quedar hasta que me retire, no se me pondrá complicado manejar ese volumen de datos cuando realizo búsquedas y demás? Mi preocupación es el rendimiento a largo plazo cuando busco pacientes o sus consultas, como no tengo parámetro de comparación, no sé valorar si realmente vale la pena tener esto en cuenta o no. Le estaría agradecida si me diera su opinión.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Identity_Insert ON/OFF con parámetros

Publicado por Isaias (4558 intervenciones) el 29/08/2018 18:55:38
Bueno, primero en 40-50 años, seguramente habrán salido al mercado mas versiones de SQL Server, que posiblemente, le resuelvan el problema de acumulación de registros, HOY, 2017 ya permite acceder a bases de datos tipo BIG DATA (HADOP) no estructuradas.

Si cuenta con edición ENTERPRISE puede PARTICIONAR su tabla, donde en una particion deje a todos aquellos pacientes que usted considera NO ACTIVOS

¿De cuantos registros estamos hablando en su tabla de pacientes?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar