2012-08-30 18 views
7

Originalmente, creé mi base de datos de SQL Server en una computadora local. Establecí su colación en Latin1_General_CI_AI y todo funcionó bien. Cuando moví el trabajo terminado al alojamiento web de SQL Server, encontré un problema: usan una intercalación de base de datos diferente. Entonces, ¿qué puedo hacer ahora?¿Cómo establecer la intercalación de una columna con SQL?

Para ser más específicos, necesito Latin1_General_CI_AI, pero tienen Czech_CI_AS. Estos dos difieren significativamente al comparar cadenas en idioma checo (sorprendentemente necesito latin1 general, no checo, para obtener resultados correctos.)

Cuando traté de cambiar la intercalación de mi base de datos, el servidor se quejó de que no tengo usuario permiso para hacer eso. Traté de contactar al servicio de asistencia, pero no tuve suerte. ¿Puedo ayudarme a mí mismo?

Sé que posiblemente cada columna de una sola tabla puede tener su propia intercalación, así que tal vez debería configurar todas mis columnas de cadenas en Latin1_CI_AI. Pero no sé cómo hacer esto. Solo tengo acceso SQL a la base de datos (desafortunadamente no hay SQL Server Management Studio).

Respuesta

12

Para cambiar la intercalación de la base de datos

ALTER DATABASE MyDataBase COLLATE [NewCollation] 

Para cambiar la intercalación de una columna

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

Tal vez estos comandos son correctos, pero no trabajo para mí. El primero dice que no tengo permiso para hacerlo, el segundo dice que hay un objeto dependiente CK_algo en esa columna, por lo que no se puede cambiar la intercalación. (No tiene sentido para mí, no entiendo qué es ese objeto dependiente y por qué bloquea la intercalación.) –

+1

Finalmente, lo que funcionó para mí: creé el script "CREATE TABLE" en SQL Management Studio, luego lo abrí en el bloc de notas y agregué manualmente 'COLLATE Latin1_General_CI_AI 'a cada definición de columna' NVARCHAR'. Luego ejecuté este script en una nueva base de datos vacía en el servidor de alojamiento web. –

+0

Creo que CK_something puede ser una clave agrupada, cualquier tipo de clave se considera un objeto en la base de datos, si desea eliminar o cambiar una columna que tiene una clave, primero debe quitarla y volver a agregarla. Necesario (En SQLMS puede crear las escrituras para Crear y Eliminar la clave). – saul672

Cuestiones relacionadas