none
Collate RRS feed

  • Domanda

  • Abbiamo sviluppato un applicativo che accede a SQL Server. Due nostri clienti utilizzano SQL Server 2008 R2 Express

    ed hanno installato il database utilizzando differenti collate: il primo utilizza SQL_Latin1_General_CP1_CI_AS mentre il secondo ha adottato Latin1_General_CI_AS.

    Premesso che il ns. applicativo, per leggere/scrivere sul database, non utilizza un collate specifico (ovvero è neutro rispetto il collate impostato sul database); ci dobbiamo aspettare dei comportamenti differenti dell'applicativo presso i 2 clienti? In caso affermativo, quali precauzioni dobbiamo avere?

    Grazie

    Davide

    venerdì 6 febbraio 2015 08:59

Tutte le risposte

  • Ti consiglio vivamente questa lettura

    In genere problemi più frequenti sono join tra tabelle con collate diversi.

    Presterei attenzione a join con eventuali tabelle temporanee


    P. Ceglie - "CIA - Is the main thing" ______________________________________________ Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. La community ringrazia :-)

    venerdì 6 febbraio 2015 09:24
  • L'articolo segnalato è molto interessante anche se non esaustivo per il mio problema.

    Nel mio caso specifico non esiste la casistica di dover confrontare colonne con collate differente perchè il database, e tutti gli oggetti in esso contenuti, hanno un solo collate e l'applicazione non forza il collate nelle CREATE TABLE o nelle JOIN.

    Mi chiedevo solamente se ci potevano essere dei comportamenti anomali (es. differenti ordinamenti, prestazioni diverse, ..), tenuto conto che l'applicazione è stata sviluppata utilizzando un DB con collate SQL_Latin1_General_CP1_CI_AS mentre uno dei 2 clienti utilizza il collate Latin1_General_CI_AS.

    Grazie

    lunedì 9 febbraio 2015 21:31
  • Ok facciamo qualche verifica suggerita nell'articolo riportato nel precedente post

    mi servo della COLLATIONPROPERTY per cercare di capire meglio come è definita una collation in SQL Server.

    SELECT 'SQL_Latin1_General_CP1_CI_AS' AS 'Collation',
    	COLLATIONPROPERTY('SQL_Latin1_General_CP1_CI_AS', 'CodePage') AS 'CodePage', 
    	COLLATIONPROPERTY('SQL_Latin1_General_CP1_CI_AS', 'LCID') AS 'LCID',
    	COLLATIONPROPERTY('SQL_Latin1_General_CP1_CI_AS', 'ComparisonStyle') AS 'ComparisonStyle', 
    	COLLATIONPROPERTY('SQL_Latin1_General_CP1_CI_AS', 'Version') AS 'Version'
    UNION ALL
    SELECT 'Latin1_General_CI_AS' AS 'Collation', 
    	COLLATIONPROPERTY('Latin1_General_CI_AS', 'CodePage') AS 'CodePage', 
    	COLLATIONPROPERTY('Latin1_General_CI_AS', 'LCID') AS 'LCID',
    	COLLATIONPROPERTY('Latin1_General_CI_AS', 'ComparisonStyle') AS 'ComparisonStyle', 
    	COLLATIONPROPERTY('Latin1_General_CI_AS', 'Version') AS 'Version'
    GO

    e questo dovrebbe essere il risultato

    Come vedi sembrano essere identiche e mi aspetto gli stessi risultati in entrambe le collation. Tuttavia presterei attenzione nel caso utilizzi le due Collation mixate in un un database o in un'istanza soprattutto riguardo a join e a clausole ORDER BY .. potresti avere delle sorprese


    P. Ceglie - "CIA - Is the main thing" ______________________________________________ Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. La community ringrazia :-)



    martedì 10 febbraio 2015 09:11
  • Ciao Davide, risolto?


    Questo post è fornito "così com'è". Non conferisce garanzie o diritti di alcun tipo. Ricorda di usare la funzione "segna come risposta" per i post che ti hanno aiutato a risolvere il problema e "deseleziona come risposta" quando le risposte segnate non sono effettivamente utili. Questo è particolarmente utile per altri utenti che leggono il thread, alla ricerca di soluzioni a problemi similari. ENG: This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.

    venerdì 13 marzo 2015 11:46