Insert da database AS400 a database SQLSERVER condizionato da una var...

giovedì 29 marzo 2012 - 13.06
Tag Elenco Tags  Windows Server 2003  |  Visual Studio 2008  |  SQL Server 2008 R2

robdis Profilo | Newbie

Salve a tutti ,
ho la necessità di importare su database Sql Server una tabella As400 (cosa che già riesco a fare tramite il seguente job:

TRUNCATE TABLE WBMOV00F;
INSERT INTO [AS400].[dbo].[WBMOV00F]
([WNRMO ,[WCDAR] ,[WCDES] ,[WDSAR] ,[WCDMA],[WDSMA],[WANNO],[WMESE],[WDTMO]
,[WQMSS] ,[WQMCO],[WVMOS],[WPZMO], ecc.ecc.]

SELECT * FROM OPENROWSET
('MSDASQL','DRIVER={Client Access ODBC Driver (32-bit)};SYSTEM=(ip as400);UID=user;PWD=password',
'select * from LibreriaAS400.WBMOV00F '))
ovviamente con questo job io cancello e riscrivo totalmente il database.
Vorrei selezionare da as400 ed aggiornare in sql server solo i record che appartengono ad un certo range di date, ovvero dataodierna -60 giorni ad esempio,quindi lasciare tutti i record consolidati su sql server e cancellare e riscrivere solo quelli degli ultimi 60 giorni.
Avete idee su come fare?
La Data su As400 è un numerico di 8 del tipo YYYYMMDD e lo stesso campo WDTMO è presente come decimal(8,0) su Sql Server
Vi ringrazio in anticipo
Roberto

boccia75 Profilo | Junior Member

Come prima cosa ti dico , se possibile, di non utilizzare la OPENROWSET ma di creare un linked server per l'as400.

Fatto questo, puoi fare tutte le tue query utilizzando la sintassi mssql.

Ad esempio, una volta selezionata la data massima sulla tua tabella WBMOV00F di MSSQL, puoi calcolare la data differenza (-60) in questo modo

declare @datarif datetime
set @datarif=(select convert(datetime,convert(varchar(8),WDTMO))-60)

In questo modo ottieni la tua data di riferimento.

Data che poi dovrai trasformare nuovamente in un decimal(8,0) in questo modo:

select convert(decimal(8,0),convert(varchar(8),@datarif,112))

per filtrare i record da cancellare (su MSSQL) e quelli da reperire (su AS400) .

E' un giro un po' strano...aspetta magari qualcuno che ti puo' dare una soluzione piu' snella, ma in questo modo lavora in modo corretto.

Ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5