/ / Wie kann ich die Sortierung einer gespeicherten Prozedur in SQL ändern? - c #, SQL-Server, gespeicherte Prozeduren, Sortierung

Wie kann ich die Sortierung einer Stored Procedure in SQL ändern? - c #, SQL-Server, gespeicherte Prozeduren, Sortierung

Wenn ich versuche, eine meiner gespeicherten Prozeduren auszuführen, gibt es in meinem C # -Programm eine Ausnahme, die sich auf einen Konflikt zwischen Sortierungen bezieht. Wie kann ich es reparieren?

Fehlerbeschreibung: "Der Kollatierungskonflikt zwischen kann nicht aufgelöst werden "Arabic_CI_AS" und "Latin1_General_CI_AS" in der Gleichheitsoperation. "

Antworten:

1 für die Antwort № 1

Kollatierungen in SQL Server definieren einen Satz von Regeln zum Kombinieren und Sortieren von Zeichenfolgen.

99 mal von 100 ist dieser Fehler einErgebnis einer datenbankübergreifenden Abfrage mit einer Join- oder where-Bedingung, die "String" -Spalten aus Tabellen in verschiedenen Datenbanken umfasst (eine davon ist typischerweise die Tempdb).

Sie können eine Sortierung als Teil einer Abfrage angeben, z. B. eine benannte oder das Schlüsselwort database_default. Sehen https://msdn.microsoft.com/en-us/library/ms184391.aspx Für mehr Information.

Beachten Sie jedoch, dass dadurch (sofern diese bestimmte Abfrage betroffen ist) ein Index in der Spalte mit dem dynamischen Sortiervorgang praktisch deaktiviert wird, sofern vorhanden.


0 für die Antwort № 2

Ich hatte den gleichen Fehler beim Erstellen von sp, das hatteeinige nvarchar Argumente. Diese Argumente wurden in diesem sp. Hier ist ein Beispiel für den Code, der den Fehler wie Ihr verursacht:

create procedure a
@name nvarchar(128),
as
if (@name = "")
throw 51000, "Empty name", 1;
go

Die Lösung scheint hier eine Kollatierung zu sein (die beste wäre die database_default):

create procedure a
@name nvarchar(128),
as
if (@name = "" collate database_default)
throw 51000, "Empty name", 1;
go