¿Cómo establecer la clasificación para una conexión en SQL Server?
¿Cómo puedo configurar la intercalación que utilizará SQL Server mientras dure esa conexión?
No hasta que me conecte a SQL Server, sé qué intercalación quiero usar.
p.ej. un navegador con idiomafr-IT
se ha conectado al sitio web. Cualquier consulta que ejecute en esa conexión quiero seguir la Lengua francesa, variante de Italia colación.
i visualiza una propiedad hipotética de nivel de conexión, similar aSET ANSI_NULLS OFF
, pero para cotejar1:
SET COLLATION_ORDER 'French_CI_AS'
SELECT TOP 100 FROM Orders
ORDER BY ProjectName
y despué
SELECT * FROM Orders
WHERE CustomerID = 3277
AND ProjectName LIKE '%l''ecole%'
y despué
UPDATE Quotes
SET IsCompleted = 1
WHERE QuoteName = 'Cour de l''école'
Al mismo tiempo, cuando unchin el cliente se conecta:
SET COLLATION_ORDER Chinese_PRC_CI_AI_KS_WS
SELECT TOP 100 FROM Orders
ORDER BY ProjectName
SELECT * FROM Orders
WHERE CustomerID = 3277
AND ProjectName LIKE '學校'
UPDATE Quotes
SET IsCompleted = 1
WHERE QuoteName = '學校的操場'
Ahora yopodrí alter everySELECT
declaración en el sistema para permitirme pasar una intercalación:
SELECT TOP 100 FROM Orders
WHERE CustomerID = 3278
ORDER BY ProjectName COLLATE French_CI_AS
Pero no puede pasar una orden de clasificación como parámetro a un procedimiento almacenado:
CREATE PROCEDURE dbo.GetCommonOrders
@CustomerID int, @CollationOrder varchar(50)
AS
SELECT TOP 100 FROM Orders
WHERE CustomerID = @CustomerID
ORDER BY ProjectName COLLATE @CollationOrder
Y elCOLLATE
a cláusula @ no puede ayudarme al realizar unaUPDATE
o unSELECT
.
Nota Todas las columnas de cadena en la base de datos ya estánnchar
, nvarchar
ontext
. No estoy hablando de la clasificación predeterminada aplicada a un servidor, base de datos, tabla o columna para columnas no Unicode (es decir,char
, varchar
, text
). Estoy hablando de la clasificación utilizada por SQL Server al comparar y ordenar cadenas.
¿Cómo puedo especificar por-conexió colación?
Ver tambié Pregunta similar, pero para ADO.net y cadenas de conexión Pregunta similar, pero para ASP.net MVC2 y MySQL1 sql hipotético que exhibe problemas locales