Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Import xml, cosa lo fa schiantare?
mercoledì 19 novembre 2008 - 16.57
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
stuzzo
Profilo
| Junior Member
133
messaggi | Data Invio:
mer 19 nov 2008 - 16:57
Salve a tutti!
Mi trovo in una situazione particolare.
Devo importare un file xml nella mia applicazione, ma nel momento che va a scrivere i dati sul db ad un certo punto appare questo errore..
Dati di tipo string o binary che verrebbero troncati.
L'istruzione è stata interrotta.
Il fatto strano è che mi schianta solo per alcuni voci, sono riuscito anche a mettere qualcosa come 300 voci, prima che mi schiantasse. Sicuramente è un problema con qualche carattere o che diavolo ne so :).
Sto impazzendo perchè non riesco a capire dove possa essere l'errore. Vi posto anche un po' di trace.
Premetto che utilizzo NHibernate per la scrittura sul db, ma come ripeto non penso sia lui il problema, visto che ho inserito correttamente numerose voci.
could not insert: [sito.annuncio][SQL: INSERT INTO Annuncio (CodiceAnnuncio, DataInserimento, Titolo, Testo, Cerco, NumeroVisite, Pubblicabile, Validato) VALUES (?, ?, ?, ?, ?, ?, ?, ?)]
in NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object[] fields, Boolean[] notNull, SqlCommandInfo sql, Object obj, ISessionImplementor session)
in NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object[] fields, Object obj, ISessionImplementor session)
in NHibernate.Impl.ScheduledIdentityInsertion.Execute()
in NHibernate.Impl.SessionImpl.Execute(IExecutable executable)
in NHibernate.Impl.SessionImpl.DoSave(Object theObj, EntityKey key, IEntityPersister persister, Boolean replicate, Boolean useIdentityColumn, CascadingAction cascadeAction, Object anything)
in NHibernate.Impl.SessionImpl.DoSave(Object obj, Object id, IEntityPersister persister, Boolean useIdentityColumn, CascadingAction cascadeAction, Object anything)
in NHibernate.Impl.SessionImpl.SaveWithGeneratedIdentifier(Object obj, CascadingAction action, Object anything)
Ho notato che siano presenti i ?, ma perchè? chi può essere il maggior indiziato?
GRazie a tutti in anticipo
Alfredo Aiello
Alex1972
Profilo
| Newbie
14
messaggi | Data Invio:
mer 19 nov 2008 - 17:24
Secondo me è la lunghezza di qualche campo...esempio avrai dichiarato un campo varchar(10) e stai tentando di scrivere un valore con lunghezza > 10.
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 19 nov 2008 - 21:19
>Devo importare un file xml nella mia applicazione, ma nel momento
>che va a scrivere i dati sul db ad un certo punto appare questo
>errore..
>Dati di tipo string o binary che verrebbero troncati.
>L'istruzione è stata interrotta.
Ciao Alfredo,
Come giustamente ha suggerito Alex1972 il problema sta nel fatto che la colonna di destinazione è troppo piccola per contenere il dato che vuoi memorizzare.
Ma fammi capire una cosa: vuoi salvare l'intero documento XML in una colonna oppure vuoi trasformarlo in un rowset relazionale in modo da salvare ogni elemento/attributo nelle corrispondenti colonne della tabella?
>GRazie a tutti in anticipo
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
stuzzo
Profilo
| Junior Member
133
messaggi | Data Invio:
gio 20 nov 2008 - 09:39
>Come giustamente ha suggerito Alex1972 il problema sta nel fatto
>che la colonna di destinazione è troppo piccola per contenere
>il dato che vuoi memorizzare.
>Ma fammi capire una cosa: vuoi salvare l'intero documento XML
>in una colonna oppure vuoi trasformarlo in un rowset relazionale
>in modo da salvare ogni elemento/attributo nelle corrispondenti
>colonne della tabella?
Ciao Lorenzo,
la seconda che hai detto. Il file xml è formato da tag che rispecchiano le colonne della tabella di destinazione. Anch'io ho subito pensato che ci sia qualcosa troppo lungo, ma non riesco proprio a capire quale tag possa essere. Mica esiste un qualche tool che processa un file xml o che mi controlla la correttezza dei caratteri? Ho pensato che potesse essere di peso anche da questo.
Grazie
Ciao
Alfredo Aiello
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
gio 20 nov 2008 - 10:07
>Anch'io ho subito pensato
>che ci sia qualcosa troppo lungo, ma non riesco proprio a capire
>quale tag possa essere. Mica esiste un qualche tool che processa
>un file xml o che mi controlla la correttezza dei caratteri?
Ciao Alfredo,
Fossi in te caricherei l'intero file in una variabile XML che successivamente andrei ad interrogare tramite SELECT utilizzando il metodo Nodes e XQuery, calcolando la lunghezza delle colonne utilizzando la funzione DATALENGTH().
In questo articolo trovi un esempio:
http://www.dotnethell.it/articles/XML-SQL-Server-2005.aspx
>Grazie
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
stuzzo
Profilo
| Junior Member
133
messaggi | Data Invio:
gio 20 nov 2008 - 11:18
>Ciao Alfredo,
Grazie Lorenzo
>Fossi in te caricherei l'intero file in una variabile XML che
>successivamente andrei ad interrogare tramite SELECT utilizzando
>il metodo Nodes e XQuery, calcolando la lunghezza delle colonne
>utilizzando la funzione DATALENGTH().
>In questo articolo trovi un esempio:
>
http://www.dotnethell.it/articles/XML-SQL-Server-2005.aspx
Ho letto l'articolo e l'ho trovato molto interessante. Proverò ad implementare la procedura, anche se come ti ripeto io ho il file xml nella forma di rowset e l'interfaccia con il db viene gestita da NHibernate. Appena ho novità ti faccio sapere. Adesso chiudo il topic.
>Ciao!
Ciao
Alfredo Aiello
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
gio 20 nov 2008 - 13:41
>Ho letto l'articolo e l'ho trovato molto interessante. Proverò
>ad implementare la procedura, anche se come ti ripeto io ho il
>file xml nella forma di rowset e l'interfaccia con il db viene
>gestita da NHibernate.
La query ti serve per stabilire la lunghezza massima di ogni elemento/attributo del file XML, in modo da dimensionare opportunamente le colonne della tabella.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
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 !