Domanda

E 'possibile avere una colonna varchar come chiave primaria con valori come 'a' e 'a', è dà sempre questo errore "Violazione di vincolo PRIMARY KEY" in MS SQL Server 2008. In Oracle dons't dare alcun errore. BTW Non sto attuazione in questo modo sto solo cercando di migrare i dati da Oracle a SQL server.

Saluti

È stato utile?

Soluzione

È possibile utilizzare una colonna text o ntext, quale dipende dal tipo di dati che si stanno importando e la sua lunghezza - questo conserverà spazi. char saranno spazi pad, quindi potrebbe non essere adatto.

Altri suggerimenti

Lo standard SQL-92 impone che per scopi di confronto stringhe di caratteri, le stringhe vengono riempiti per avere la stessa lunghezza prima di confronto: in genere il carattere di riempimento è uno spazio.

Quindi 'a' e 'un' risultano uguali e questo viola il vincolo PK. http://support.microsoft.com/kb/316626

sono riuscito a trovare nulla che indichi questo comportamento è cambiato da allora.

Si può ottenere via con usando varbinary invece di varchar, ma questo non puoi fare quello che vuoi neanche.

utilizzare un tipo di dati che non striscia spazi finali.

Si potrebbe provare a conservarle come varbinary, e quindi la conversione a VARCHAR quando si seleziona.

Ho pensato che questo potrebbe avere qualcosa a che fare con ANSI_PADDING: ma il mio test qui, indica che per PK (indicatori forse unico così, non provato) questo ancora non aiuta, purtroppo,

.

SET ANSI_PADDING ON

Opere per i campi non-PK - cioè, conserva lo spazio finale sull'inserto, ma per qualche ragione non su PK ...

See:

http://support.microsoft.com/kb/154886/EN- US /

Si potrebbe aggiungere un'altra colonna al vincolo di chiave primaria che detiene la lunghezza dei dati nella colonna oracolo. Questo vi permetterà di importare i dati e di ricostruire i dati Oracle quando è necessario - con una vista che utilizza la lunghezza dei dati Oracle insieme con la lunghezza della tabella di Microsoft per aggiungere di nuovo gli spazi mancanti per la visualizzazione in relazioni, ecc

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top