2012-08-30 13 views
7

Originariamente, ho creato il mio database SQL Server su un computer locale. Ho impostato la sua fascicolazione su Latin1_General_CI_AI e tutto ha funzionato bene. Quando ho spostato il lavoro finito sul web hosting di SQL Server, ho riscontrato un problema: utilizzano un diverso database di confronto. Quindi cosa posso fare ora?Come impostare le regole di confronto di una colonna con SQL?

Per essere più specifici, ho bisogno di Latin1_General_CI_AI, ma hanno Czech_CI_AS. Questi due si differenziano in modo significativo quando si confrontano stringhe in lingua ceca (per ottenere risultati corretti ho bisogno di latin1 generale, non ceco.)

Quando ho provato a modificare le regole di confronto del mio database, il server ha lamentato che non ho utente permesso di farlo. Ho provato a contattare l'assistenza, ma senza fortuna. Posso aiutare me stesso?

So che probabilmente ogni singola colonna della tabella può avere le sue regole di confronto, quindi forse dovrei impostare tutte le mie colonne di stringhe su Latin1_CI_AI. Ma non so come farlo. Ho solo accesso SQL al database (sfortunatamente no SQL Server Management Studio).

risposta

12

Per modificare le regole di confronto del database di

ALTER DATABASE MyDataBase COLLATE [NewCollation] 

Per modificare le regole di confronto di una colonna

ALTER TABLE MyTable ALTER COLUMN Column1 [TYPE] COLLATE [NewCollation] 
+1

Forse questi comandi sono corretti, ma non funzionano per me. Il primo dice che non ho il permesso di farlo, il secondo dice che c'è un oggetto dipendente CK_qualcosa su quella colonna, quindi le regole di confronto non possono essere cambiate. (Non ha senso per me - Non capisco cosa sia quell'oggetto dipendente, e perché blocchi le regole di confronto.) –

+1

Infine, ciò che ha funzionato per me: ho creato lo script "CREATE TABLE" in SQL Management Studio, quindi l'ha aperto nel blocco note e aggiunto manualmente "COLLATE Latin1_General_CI_AI" a ciascuna definizione di colonna "NVARCHAR". Quindi ho eseguito questo script in un nuovo database vuoto sul server di webhosting. –

+0

Penso che CK_something potrebbe essere una chiave cluster, qualsiasi tipo di chiave è considerato un oggetto nel database, se si desidera eliminare o modificare una colonna che contiene una chiave, è necessario rimuovere prima la chiave e aggiungerla di nuovo se necessario (in SQLMS è possibile creare gli scritps per creare ed eliminare la chiave). – saul672

Problemi correlati