Quando si verifica questo errore, la prima cosa che si chiede è, quale colonna? Sfortunatamente, SQL Server è nessun aiuto qui. Quindi inizi a fare tentativi ed errori. Beh, in questo momento ho una dichiarazione come:La stringa oi dati binari verrebbero troncati - Problema di Heisenberg
INSERT tbl (A, B, C, D, E, F, G)
SELECT A, B * 2, C, D, E, q.F, G
FROM tbl
,othertable q
WHERE etc etc
Nota che
- Alcuni valori vengono modificati o collegati in da un altro tavolo, ma la maggior parte dei valori stanno venendo dal la tabella originale, in modo da non può davvero causare il troncamento risalendo allo stesso campo (che io sappia).
- campi Eliminare uno alla volta alla fine fa l'errore di andare via, se lo faccio in modo cumulativo, ma — ed ecco il kicker — non importa che i campi Elimino. È come se SQL Server si opponga alla lunghezza totale della riga, che dubito, dal momento che ci sono solo circa 40 campi in tutto e niente di grande.
Qualcuno l'ha mai visto prima?
Grazie.
UPDATE: Ho anche eseguito test "orizzontali", filtrando SELECT, con lo stesso risultato. In altre parole, se io dico
- WHERE id tra 1 e 100: Errore
- WHERE id compreso tra 1 e 50: nessun errore
- WHERE id tra 50 e 100: Nessun errore
Ho provato molte combinazioni e non può essere limitato a una singola riga.
Come aiutante di debug: è possibile provare a scrivere un cursore che superi la tabella di origine e inserisca le righe una alla volta. Forse l'errore si trova in una delle file? – Tomalak
Quali sono i vincoli chiave foriegn? Ci sono? –
@Vecdid - No, non ci sono vincoli di alcun tipo, nemmeno una chiave primaria. È solo una copia usa e getta di una tabella remota, utilizzata solo durante questa routine, creata da SELECT * INTO. – harpo