Comment définir le classement pour une connexion à SQL Server?

Comment puis-je définir le classement par SQL Server pour la durée de cette connexion?

Pas jusqu'à me connecter à SQL Server puis-je savoir ce classement que je veux utiliser.

par exemple un navigateur avec la langue fr-IT est connecté sur le web-site. Toutes les requêtes, je tourne sur cette connexion je veux suivre les langue française, de l'Italie variante classement.

j'ai la vision d'un hypothétique au niveau de la connexion de la propriété, simlar à SET ANSI_NULLS OFF, mais pour le classement1:

SET COLLATION_ORDER 'French_CI_AS'

SELECT TOP 100 FROM Orders
ORDER BY ProjectName

et plus tard

SELECT * FROM Orders
WHERE CustomerID = 3277 
AND ProjectName LIKE '%l''ecole%'

et plus tard

UPDATE Quotes
SET IsCompleted = 1
WHERE QuoteName = 'Cour de l''école'

En même temps, quand un chinois client se connecte:

SET COLLATION_ORDER Chinese_PRC_CI_AI_KS_WS

SELECT TOP 100 FROM Orders
ORDER BY ProjectName

ou

SELECT * FROM Orders
WHERE CustomerID = 3277 
AND ProjectName LIKE '學校'

ou

UPDATE Quotes
SET IsCompleted = 1
WHERE QuoteName = '學校的操場'

Maintenant, je pourrait de modifier tous SELECT instruction dans le système, pour me permettre de passer dans un classement:

SELECT TOP 100 FROM Orders
WHERE CustomerID = 3278
ORDER BY ProjectName COLLATE French_CI_AS

Mais vous ne pouvez pas passer un ordre de collation comme un paramètre à une procédure stockée:

CREATE PROCEDURE dbo.GetCommonOrders 
   @CustomerID int, @CollationOrder varchar(50)
AS

SELECT TOP 100 FROM Orders
WHERE CustomerID = @CustomerID
ORDER BY ProjectName COLLATE @CollationOrder

Et la COLLATE clause ne peut pas m'aider lors de l'exécution d'un UPDATE ou un SELECT.

Remarque: Toutes les colonnes de la chaîne dans la base de données sont déjà nchar, nvarchar ou ntext. je ne parle pas le classement par défaut appliqué à un serveur, base de données, de table ou de colonne pour les colonnes non-unicode (c'est à dire char, varchar, text). je parle du classement utilisé par SQL Server lors de la comparaison et de tri de chaînes.


Comment puis-je spécifier parconnexion classement?

Voir aussi

1 hypothétique sql qui présente les paramètres régionaux questions

Le classement est une propriété de la base de données et/ou de tables/colonnes - ce n'est pas quelque chose que vous pouvez changer dynamiquement pour chaque connexion...
Ce n'est pas entièrement une propriété d'une base de données, les tables et les colonnes. Il peut être une propriété d'un ORDER BY.
Malheureusement, cette question, bien que pertinente, n'a pas de réponse. @devio est droit.
Dans votre déclaration que vous écrivez RASSEMBLER sur une ligne distincte après l'instruction SQL. C'est trompeur, car les RASSEMBLER appartient à la dernière colonne de la clause ORDER BY. Suppression de l'ORDRE, et ce sera un échec.

OriginalL'auteur Ian Boyd | 2011-08-26