DELETE su tabella non funziona!

venerdì 15 maggio 2009 - 17.37

MagoDaniel1981 Profilo | Newbie

Buongiorno, ho la seguente tabella in un database SQL Server Express 2005...

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Quando, anche da IDE Management Studio Express tento di eliminare un record creato prima via Vb.Net da un sito, mi da il seguente errore:

I dati di tipo string o binary verrebbero troncati. L'istruzione è stata interrotta.

E non mi cancella il record. Se converto i tre capi, da ntext a nvarchar l'eliminazione avviene con successo.
Come mai? Come devo fare per risolvere?

Grazie a chiunque vorrà essermi d'aiuto!

Daniel

lbenaglia Profilo | Guru

>Quando, anche da IDE Management Studio Express tento di eliminare
>un record creato prima via Vb.Net da un sito, mi da il seguente
>errore:
>
>I dati di tipo string o binary verrebbero troncati. L'istruzione
>è stata interrotta.
>
>E non mi cancella il record. Se converto i tre capi, da ntext
>a nvarchar l'eliminazione avviene con successo.
>Come mai? Come devo fare per risolvere?

Ciao Daniel,

L'errore che riporti si verifica in fase di INSERT/UPDATE quando si supera la dimensione massima di una colonna stringa (varchar, nvarchar, char, nchar) nel tentativo di popolarla.
ntext pur essendo un datatype deprecato (al suo posto dovresti utilizzare nvarchar(max)) è un BLOB che permette di memorizzare oltre 1 miliardo di caratteri, quindi dubito che tu abbia raggiunto tale limite.
Inoltre non mi risulta che una operazione di DELETE comporti quel problema (a meno che sia definito un trigger di INSERT/UPDATE che vada a popolare una seconda tabella che genera l'errore):

INSERT dbo.GruppiMailAgenti VALUES( CURRENT_TIMESTAMP , NEWID() , N'Header Cumulo' , N'Corpo Cumulo' , 5 , N'Footer Cumulo' , 0 , CURRENT_TIMESTAMP ); DELETE dbo.GruppiMailAgenti WHERE idCumulo = 1; /* Output: (1 row(s) affected) */

>Grazie a chiunque vorrà essermi d'aiuto!
Prego.

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

MagoDaniel1981 Profilo | Newbie

Ciao! Dunque, ho risolto semplicemente utilizzando NvarChar(max) al posto di Ntext (prima non l'avevo mai notato).
Per quanto rigaurda il popolamento, certo che non utilizzo una dimensione tale di caratteri, è semplicemente la lettura di uno streaming di un file HTML, modifica con i dati della personalizzazione dell'email. Eppure, tentando di eliminare questo recordo, dopo averlo inserito da sito appunto, ricevevo questo errore. Non c'erano trigger di nessun tipo nella tabella! Veramente non mi spiego. Comunque ora la cosa è a posto, grazie ad NvarChar(max) appunto.

Grazie comunque per la rapidità e la disponibilità.

Ciao e buon lavoro.
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