Configurar o cambiar la intercalación del servidor

Se aplica a:SQL ServerAzure SQL Managed Instance

La intercalación de servidor actúa como intercalación predeterminada para todas las bases de datos del sistema que se han instalado con la instancia de SQL Server, así como las bases de datos de usuario recién creadas.

Debes considerar cuidadosamente la intercalación de nivel de servidor, ya que puede afectar a lo siguiente:

  • Las reglas de ordenación y comparación en =, JOIN, ORDER BY y otros operadores que comparan datos textuales.
  • La intercalación de las columnas CHAR, VARCHAR, NCHAR y NVARCHAR en vistas del sistema, funciones del sistema y los objetos en tempdb (por ejemplo, las tablas temporales).
  • Los nombres de variables, cursores y etiquetas GOTO. Por ejemplo, las variables @pi y @PI se consideran diferentes si la intercalación de nivel de servidor distingue entre mayúsculas y minúsculas, y se consideran iguales si la intercalación de nivel de servidor no distingue entre mayúsculas y minúsculas.

Intercalación del servidor en SQL Server

La intercalación de servidor se especifica durante la instalación de SQL Server. La intercalación de nivel de servidor predeterminada se basa en la configuración regional del sistema operativo.

Por ejemplo, la intercalación predeterminada para sistemas que usan inglés de Estados Unidos (en-US) es SQL_Latin1_General_CP1_CI_AS. Para obtener más información, incluida la lista de la configuración regional del sistema operativo en las asignaciones de intercalación predeterminadas, vea la sección "Intercalaciones de nivel de servidor" de Intercalación y compatibilidad con Unicode.

Nota:

La intercalación de nivel de servidor para SQL Server Express LocalDB es SQL_Latin1_General_CP1_CI_AS y no se puede cambiar ni durante la instalación ni después de esta.

Cambio de la intercalación del servidor en SQL Server

Cambiar la intercalación predeterminada de una instancia de SQL Server puede ser una operación compleja.

Nota:

En lugar de cambiar la intercalación predeterminada de una instancia de SQL Server, puedes especificar una intercalación predeterminada para cada nueva base de datos que crees a través de la cláusula COLLATE de las instrucciones CREATE DATABASE y ALTER DATABASE. Para más información, vea Set or Change the Database Collation.

El cambio de la intercalación de la instancia implica los pasos siguientes:

  • Asegurarse de que se dispone de toda la información o scripts necesarios para volver a crear las bases de datos de usuario y todos los objetos contenidos en ellas.

  • Exportar todos los datos mediante una herramienta como bcp Utility. Para obtener más información, vea Importar y exportar datos en bloque (SQL Server).

  • Quitar todas las bases de datos de usuario.

  • Para recompilar la base de datos master, especifica la nueva intercalación en la propiedad SQLCOLLATION del comando setup. Por ejemplo:

    Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName
    /SQLSYSADMINACCOUNTS=accounts [ /SAPWD= StrongPassword ]
    /SQLCOLLATION=CollationName  
    

    Para obtener más información, vea Volver a generar bases de datos del sistema.

  • Crear todas las bases de datos y todos los objetos contenidos en ellas.

  • Importar todos los datos.

Establecimiento de la intercalación del servidor en Azure SQL Managed Instance

La intercalación de nivel de servidor en Instancia administrada de Azure SQL se puede especificar al crear la instancia y no se puede cambiar posteriormente. Puede establecer la intercalación de nivel de servidor a través de Azure Portal o PowerShell y la plantilla de Resource Manager mientras crea la instancia. La intercalación de nivel de servidor predeterminada es SQL_Latin1_General_CP1_CI_AS.

Si vas a migrar bases de datos de SQL Server a Azure SQL Managed Instance, comprueba la intercalación del servidor en la instancia de SQL Server de origen mediante la función SERVERPROPERTY(N'Collation') y crea una instancia administrada que coincida con la intercalación de SQL Server. Es posible que la migración de una base de datos de SQL Server a SQL Managed Instance con intercalaciones de nivel de servidor que no coinciden produzca varios errores inesperados en las consultas. No se puede cambiar la intercalación de nivel de servidor en la instancia administrada existente.

Intercalación de Azure SQL Database

No puede cambiar ni establecer la intercalación del servidor lógico en Azure SQL Database, pero puede configurar las intercalaciones de cada base de datos tanto para los datos como para el catálogo. La intercalación de catálogo determina la intercalación para los metadatos del sistema, como identificadores de objeto. Ambas intercalaciones se pueden especificar de forma independiente al crear la base de datos en Azure Portal, en T-SQL con CREATE DATABASE, en PowerShell con New-AzSqlDatabase.