¿Cómo podría cambiar la Clasificación predeterminada de SQL Server 2008 R2 Express para todo el servidor y una base de datos en particular?
¿Hay alguna manera de hacerlo usando la interfaz visual de SQL Server Management Studio? En la ventana Propiedades del servidor (y en la ventana Propiedades de la base de datos correspondiente), esta propiedad no está disponible para edición.
sql-server
sql-server-2008
collation
movimiento rápido del ojo
fuente
fuente
Respuestas:
Sí.
Puede cambiar la clasificación predeterminada de la instancia expresa de SQL Server 2008 R2 y las bases de datos individuales, pero es una tarea compleja.
Lamentablemente, no hay una opción visual para hacerlo a través de SSMS.
Configuración y cambio de la clasificación del servidor - SQL Server 2008
Asegúrese de tener toda la información o los scripts necesarios para volver a crear sus bases de datos de usuario y todos los objetos en ellas.
Exporte todos sus datos utilizando una herramienta como la utilidad bcp. Para obtener más información, consulte Importar y exportar datos en masa.
Descarte todas las bases de datos de usuarios.
Reconstruya la base de datos maestra especificando la nueva clasificación en la propiedad SQLCOLLATION del comando de configuración
Cree todas las bases de datos y todos los objetos en ellas.
Importa todos tus datos.
Configuración y cambio de la clasificación de la base de datos - SQL Server 2008
COLLATION
opción en laCREATE DATABASE
declaración mientras crea una nueva base de datos.Del mismo modo, configure las
COLLATION
opciones en laALTER DATABASE
instrucción para cambiar la recopilación de una base de datos existente.ALTER DATABASE [database_name] COLLATE SQL_Latin1_General_CP1_CI_AS;
Establecer y cambiar la clasificación de columnas
fuente
Asegúrese de que realmente quiere "soltar" las bases de datos de usuario como se indica en la respuesta anterior. Es posible que solo desee "separar" las bases de datos. O, en realidad, no puede hacer nada, ya que la reconstrucción del maestro elimina efectivamente los enlaces a las bases de datos de los usuarios. Hay momentos en que las bases de datos se crean en la clasificación deseada pero el servidor no. No querría tener que recuperar todas sus bases de datos de usuarios de las copias de seguridad en este caso.
fuente
Hice algo como esto y funcionó, pero debe tener en cuenta que los índices que apuntan al tipo de datos como text / varchar / nvarchar deben eliminarse, ejecutar el script y luego crear los índices.
esta es mi primera respuesta publicada perdón mi desastre
fuente
Exportar todos los datos (incluidos los inicios de sesión, los servidores vinculados, los trabajos del Agente SQL, la configuración de DB Mail, etc.) y reconstruir los datos a nivel de instancia, además de volver a cargar todos los datos del usuario, es mucho trabajo. E, incluso después de todo eso, todavía no hay garantía de que pueda actualizar la clasificación predeterminada de una base de datos a través de
ALTER DATABASE
porque hay varias condiciones que evitarán que la operación se complete (consulte la sección "Cambiar la clasificación de la base de datos" de laALTER DATABASE
documentación para más detalles) .Sin embargo, hay un método indocumentado que es mucho más fácil. El principal inconveniente es que no es compatible. Esto no quiere decir que algo salga mal, solo que si algo sucede, Microsoft no ayudará a solucionarlo (porque nunca garantizaron que funcionaría).
El método del que hablo se ejecuta
sqlservr.exe
con el-q {new_collation_name}
interruptor. Hay un poco más que eso, pero esa es la idea básica. Este método simplemente actualiza los metadatos del sistema, lo que tiene beneficios y consecuencias, siendo los principales:Beneficios
ALTER DATABASE
funcioneDIBUJOS
VARCHAR
los datos pueden cambiar, SI la página de códigos es diferente entre las colaciones antiguas y nuevas, y existen caracteres con valores de 128 - 255 (0x80 - 0xFF), y esos caracteres no existen como el mismo carácter con el mismo valor en el nuevo código página. Por lo tanto, existe la posibilidad de pérdida de datos, y sus datos deben investigarse primero para garantizar que esta condición no exista. Pero, esto también significa que hay muchos casos con solo caracteres que tienen valores de 0 a 127 que no están en peligro, incluso si la página de códigos cambia.Para obtener una descripción detallada de lo
sqlservr.exe -q
que hace y no hace el método (incluidos los detalles sobre cómo funcionan las colaciones en los distintos niveles y los posibles problemas a tener en cuenta), consulte mi publicación:Cambio de la clasificación de la instancia, las bases de datos y todas las columnas en todas las bases de datos de usuario: ¿qué podría salir mal?
Para cambiar sólo la instancia (incluyendo las bases de datos del sistema:
master
,model
,msdb
, ytempdb
) y una o más bases de datos (pero no todas las bases de datos), sólo tienes que separar la base de datos (s) que desea excluir de esta operación, y luego vuelva a conectar ellas una vez que se completa la actualización de colación.fuente