Domanda

La storia: L'altra sera ho avuto una distribuzione che prevedeva l'esecuzione di uno script che creava una procedura memorizzata. Tuttavia, durante l'esecuzione dello script, si è verificato un errore relativo alle regole di confronto del DB.

Il problema: Con l'aiuto del nostro amico Google, sono riuscito a scoprire che il problema che stavo avendo era perché il db del nostro ambiente dal vivo ha un confronto e il confronto temporaneo del DB è diverso e ho riscontrato un errore durante il tentativo di inserimento in una variabile tavolo.

La domanda: Qual è il modo migliore per procedere o le mie opzioni?

Ambiente: sql 2000

Grazie in anticipo.

È stato utile?

Soluzione

Ci siamo imbattuti in questo con database temporanei che utilizziamo per i test di integrazione, in relazione ai database di sviluppo e produzione. Quello che abbiamo fatto è assicurarci che tutti i database utilizzino le stesse regole di confronto. Nel tuo caso, dovresti probabilmente essere in grado di fare una semplice ricerca / sostituzione nel file di script e semplicemente cambiare le regole di confronto con quella utilizzata nel database di destinazione.

Modifica: cambiare lo script ti farà avanzare ora; a lungo termine, ti consigliamo di utilizzare la stessa raccolta in tutti i database correlati.

Altri suggerimenti

Esistono alcune soluzioni

  • Assicurati che tutti i tuoi fascicoli corrispondano nello stesso db. Altrimenti avrai un po 'di dolore.
  • La cosa giusta da fare se le tabelle temporanee non contengono molti dati è ricrearle con le stesse regole di confronto delle tabelle dest.
  • Se questa non è un'opzione, cerca i tipi di stringa e forza la tua fascicolazione sul db di destinazione

     INSERT INTO dest_db..DEST_TABLE ( DEST_VARCHAR_COLUMN )
     SELECT TMP_VARCHAR_COLUMN COLLATE <dest_db_collate>
     FROM tmp_db..#TEMP_TABLE
    

La soluzione ovvia è reinstallare il database di sviluppo con le stesse regole di confronto del database di produzione.

Se non è possibile, ad esempio se si dispone di più database di produzione con regole di confronto diverse, è possibile assicurarsi che gli aggiornamenti non riescano o abbiano esito positivo nel suo insieme. Metti una transazione attorno a tutti gli aggiornamenti delle procedure memorizzate e assicurati di utilizzare alter, non drop / create.

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