Errore nell'importazione di campi tipo data,da access a sql server 200...

giovedì 20 settembre 2007 - 08.01

ciccios100 Profilo | Junior Member

Ciao a tutti,
Volevo chiedervi come mai provando a copiare un data base access,in un data base sql server 2005,con una OPENROWSET,non riesco a copiare i campi di tipo data/ora....mi viene questo messaggio:
Il provider OLE DB "Microsoft.Jet.OLEDB.4.0" per il server collegato "(null)" ha restituito il messaggio "Si sono verificati errori in un'operazione OLE DB composta da più passaggi. Controllare i singoli valori di stato OLE DB, se disponibili. Nessuna operazione eseguita.".
Messaggio 7341, livello 16, stato 2, riga 1
Impossibile ottenere il valore di riga corrente della colonna "[Microsoft.Jet.OLEDB.4.0].Data_prossimo_contatto" dal provider OLE DB "Microsoft.Jet.OLEDB.4.0" per il server collegato "(null)". Conversione non riuscita perché il valore di dati ha causato l'overflow del tipo di dati utilizzato dal provider.

SSUPERPIPPO Profilo | Guru

Il campo di destinazione e il campo di origine sono entrambi di tipo DateTime?


http://blogs.dotnethell.it/alebadalin

ciccios100 Profilo | Junior Member

No,il campo destinazione è un varchar,ma se inserisco come campo destinazione un datatime mi esce questo messaggio di errore:
Conversione non riuscita durante la conversione di una stringa di caratteri nel tipo di dati datetime.
quindi ho pensato che durante l'importazione del database i campi data time vengono convertiti in stringhe....è giusto?

lbenaglia Profilo | Guru

>No,il campo destinazione è un varchar,ma se inserisco come campo
>destinazione un datatime mi esce questo messaggio di errore:
>Conversione non riuscita durante la conversione di una stringa
>di caratteri nel tipo di dati datetime.
>quindi ho pensato che durante l'importazione del database i campi
>data time vengono convertiti in stringhe....è giusto?
No. Microsoft Access e SQL Server gestiscono le informazioni date/time in modo completamente diverso.
Se vuoi valorizzare una colonna datetime in SQL Server, devi utilizzare il formato ISO 'YYYYMMDD hh:mm:ss.ms' che non viene influenzato dai formati localizzati di data e ora.
Quindi, scrivi una SELECT che formatti la data in quel modo e vedrai che SQL Server l'accetterà senza battere ciglio

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

ciccios100 Profilo | Junior Member

Ciao Lorenzo
in effetti avevo pensato fosse un problema simile e ho trasformato i campi datatime di sql in campi char........così l'importazione è andata a buon fine,per fortuna non devo fare controlli su queste date!
Cmq ti ringrazio e terrò presente il tuo suggerimento x prossime importazioni.
Ciao e grazie mille

lbenaglia Profilo | Guru

>in effetti avevo pensato fosse un problema simile e ho trasformato
>i campi datatime di sql in campi char........così l'importazione
>è andata a buon fine,per fortuna non devo fare controlli su queste
>date!
Attenzione che comunque non è una bella cosa quella che hai fatto.
Ti può sempre scappare un UPDATE... SET ColData = 'pippo'...

Ora che hai effettuato l'importazione modifica la struttura della tabella defininendo una nuova colonna datetime e scrivi una query di UPDATE che formatti la stringa come ti ho illustrato in precedenza e che popoli tale colonna, dopo di che elimini la colonna char.

>Ciao e grazie mille
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

ciccios100 Profilo | Junior Member

>>......e scrivi una query di UPDATE che formatti la stringa come ti ho
>>illustrato in precedenza e che popoli tale colonna, dopo di che elimini la colonna char.
mi puoi dare un link con di query d'esempio o fornire tu un esempio veloce di query per la conversione che mi hai illustrato?
Grazie!

lbenaglia Profilo | Guru

>mi puoi dare un link con di query d'esempio o fornire tu un esempio
>veloce di query per la conversione che mi hai illustrato?
Non posso dato che non conosco il tuo formato data
Comunque non devi fare altro che utilizzare delle funzioni di manipolazione delle stringhe (LEFT, RIGHT, SUBSTRING) componendo una stringa nel formato 'YYYYMMDD hh:mm:ss.ms'.

>Grazie!
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

ciccios100 Profilo | Junior Member

Ok.........ti ringrazio ugualmente e 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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5