SQL Server - De Access 97 a SQL Server

   
Vista:
Imágen de perfil de Aldo

De Access 97 a SQL Server

Publicado por Aldo (2 intervenciones) el 20/05/2015 17:46:33
Buenos dias.
Necesito realizar un sistema que lea un archivo de Access 97 e inserte la informacion a una base de datos de SQL Server 2005. Tenia en mente crear por medio de codigo una rutina que lea cada tabla de Access y si no existe en SQL, la cree, y para cada registro realizarlo por medio de Inserts y Updates.
El detalle real es este: Algunas tablas tendrian Identity y en la base de datos de Access no estan todos los registros consecutivos, como puedo realizar esto teniendo un campo Identity en SQL? Si viene el registro 1, 2,4 como insertarlos sin que en SQL me inserte 1,2,3 y el consecutivo del Identity sigua normal (osea, que siguiera el 5).
Muchas gracias de antemano por sus sugerencias.
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

De Access 97 a SQL Server

Publicado por Salvador (20 intervenciones) el 21/05/2015 08:27:32
Hola Aldo,

Esta es la ayuda que trae SQL Server, esto es lo que buscas,

Sintaxis

SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON | OFF }


Argumentos
database_name
Es el nombre de la base de datos en la que reside la tabla especificada.

schema_name
Es el nombre del esquema al que pertenece la tabla.

table
Es el nombre de la tabla con una columna de identidad.

Notas
En todo momento, sólo una tabla de una sesión puede tener la propiedad IDENTITY_INSERT establecida en ON. Si ya existe una tabla con esta propiedad establecida en ON y se ejecuta una instrucción SET IDENTITY_INSERT ON para otra tabla, SQL Server devuelve un mensaje de error que indica que SET IDENTITY_INSERT ya está establecido en ON y la tabla para la que se ha establecido.

Si el valor insertado es mayor que el valor de identidad actual de la tabla, SQL Server utiliza automáticamente el nuevo valor insertado como valor de identidad actual.

La opción SET IDENTITY_INSERT se establece en tiempo de ejecución, no en tiempo de análisis.

Permisos
El usuario debe ser el propietario del objeto, miembro del rol fijo de servidor sysadmin o de los roles fijos de base de datos db_owner y db_ddladmin.

Ejemplos
El ejemplo siguiente crea una tabla con una columna de identidad y muestra cómo se puede utilizar la opción SET IDENTITY_INSERT para llenar un vacío en los valores de identidad causado por una instrucción DELETE.

Copiar código
USE AdventureWorks2008R2;
GO
-- Create tool table.
CREATE TABLE dbo.Tool(
ID INT IDENTITY NOT NULL PRIMARY KEY,
Name VARCHAR(40) NOT NULL
)
GO
-- Inserting values into products table.
INSERT INTO dbo.Tool(Name) VALUES ('Screwdriver')
INSERT INTO dbo.Tool(Name) VALUES ('Hammer')
INSERT INTO dbo.Tool(Name) VALUES ('Saw')
INSERT INTO dbo.Tool(Name) VALUES ('Shovel')
GO

-- Create a gap in the identity values.
DELETE dbo.Tool
WHERE Name = 'Saw'
GO

SELECT *
FROM dbo.Tool
GO

-- Try to insert an explicit ID value of 3;
-- should return a warning.
INSERT INTO dbo.Tool (ID, Name) VALUES (3, 'Garden shovel')
GO
-- SET IDENTITY_INSERT to ON.
SET IDENTITY_INSERT dbo.Tool ON
GO

-- Try to insert an explicit ID value of 3.
INSERT INTO dbo.Tool (ID, Name) VALUES (3, 'Garden shovel')
GO

SELECT *
FROM dbo.Tool
GO
-- Drop products table.
DROP TABLE dbo.Tool
GO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Aldo

De Access 97 a SQL Server

Publicado por Aldo (2 intervenciones) el 21/05/2015 16:19:19
Perfecto, no estaba seguro si el IDENTITY_INSERT cambiaria el valor del Identity e hice una prueba en SQL y si lo efectuo, espero que mediante codigo tambien pueda cambiarlo.
Gracias por el comentario.
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

De Access 97 a SQL Server

Publicado por Isaias (3186 intervenciones) el 21/05/2015 19:28:10
Lo mas adecuado y recomendado por MICROSOFT, es que dicha migración la hagas mediante SSIS (Servicios de Integración), donde te permite re-generar tus IDENTITY en tus tablas destino.
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