none
Impossibile risolvere il conflitto tra le regole di confronto RRS feed

  • Domanda

  • Ciao a tutti
    Ricevo questo errore quando eseguo operazioni su un db ospitato su un server:
    Impossibile risolvere il conflitto tra le regole di confronto "Latin1_General_CI_AS" e "Japanese_90_CI_AS" nell'operazione equal to

    Il db è ospitato su un server che ospita altri db anche di altre persone e l'unica cosa che posso fare e accedere al db. Operazioni di modifica della collation non sono possibili.

    Grazie mille

    mercoledì 19 febbraio 2014 16:38

Risposte

  • Se guardi nelle stored procedures che ti ho indicato, troverai la riga seguente:

    DECLARE @tbNames table(Name nvarchar(256) NOT NULL PRIMARY KEY) 
    

    Questa riga deve essere modificata in modo che tenga conto della collation, ad esempio:

    DECLARE @tbNames table(Name nvarchar(256) COLLATE Latin1_General_CI_AS NOT NULL PRIMARY KEY) 
    il db di riferimento ha una collation "Latin1_General_CI_AS",

    oppure "Japanese_90_CI_AS"?

    HTH


    Alberto Dallagiacoma
    My Italian Blog: http://blogs.ugidotnet.org/alby
    Twitter: http://twitter.com/albertodall
    DotDotNet - User Group .NET Emilia Romagna: http://www.dotdotnet.org

    • Contrassegnato come risposta SviPla martedì 25 febbraio 2014 14:34
    martedì 25 febbraio 2014 13:32

Tutte le risposte

  • Ciao,

    Nelle operazioni di join, è possibile specificare esplicitamente quale collation usare per il confronto. Qui puoi trovare qualche esempio utile:

    http://blog.sqlauthority.com/2007/06/11/sql-server-cannot-resolve-collation-conflict-for-equal-to-operation/

    HTH


    Alberto Dallagiacoma
    My Italian Blog: http://blogs.ugidotnet.org/alby
    Twitter: http://twitter.com/albertodall
    DotDotNet - User Group .NET Emilia Romagna: http://www.dotdotnet.org

    lunedì 24 febbraio 2014 09:01
  • Ciao e grazie
    ho scoperto che l'errore si verifica in Roles.AddUserToRoles.
    Ho trovato una soluzione che suggerisce di modificare 2 stored procedure, ma forse perchè non ho i permessi giusti, quando provo ad eseguire la stored procedure per registrare le modifiche, ricevo lo stesso errore che sto cercando di risolvere

    lunedì 24 febbraio 2014 09:14
  • Sembra un problema legato al Memebership Provider di ASP.NET. Le stored procedures da modificare dovrebbero essere:

    aspnet_UsersInRoles_RemoveUsersFromRoles
    aspnet_UsersInRoles_AddUsersToRoles

    perché al loro interno usano tabelle temporanee.

    HTH


    Alberto Dallagiacoma
    My Italian Blog: http://blogs.ugidotnet.org/alby
    Twitter: http://twitter.com/albertodall
    DotDotNet - User Group .NET Emilia Romagna: http://www.dotdotnet.org

    lunedì 24 febbraio 2014 09:49
  • Ciao
    ho chiesto a chi mi offro il servizio di modificare le stored procedure e ricevo questo errore:
    ############################################### Msg 468, Level 16, State 9, Procedure aspnet_UsersInRoles_AddUsersToRoles, Line 48 Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "Japanese_90_CI_AS" in the equal to operation. Msg 468, Level 16, State 9, Procedure aspnet_UsersInRoles_AddUsersToRoles, Line 52 Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "Japanese_90_CI_AS" in the equal to operation. Msg 468, Level 16, State 9, Procedure aspnet_UsersInRoles_AddUsersToRoles, Line 79 Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "Japanese_90_CI_AS" in the equal to operation. Msg 468, Level 16, State 9, Procedure aspnet_UsersInRoles_AddUsersToRoles, Line 83 Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "Japanese_90_CI_AS" in the equal to operation. Msg 468, Level 16, State 9, Procedure aspnet_UsersInRoles_AddUsersToRoles, Line 93 Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "Japanese_90_CI_AS" in the equal to operation. ############################################### Msg 468, Level 16, State 9, Procedure aspnet_UsersInRoles_RemoveUsersFromRoles, Line 53 Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "Japanese_90_CI_AS" in the equal to operation. Msg 468, Level 16, State 9, Procedure aspnet_UsersInRoles_RemoveUsersFromRoles, Line 58 Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "Japanese_90_CI_AS" in the equal to operation. Msg 468, Level 16, State 9, Procedure aspnet_UsersInRoles_RemoveUsersFromRoles, Line 87 Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "Japanese_90_CI_AS" in the equal to operation. Msg 468, Level 16, State 9, Procedure aspnet_UsersInRoles_RemoveUsersFromRoles, Line 92 Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "Japanese_90_CI_AS" in the equal to operation. ###############################################

    In pratica ricevono lo stesso errore che vorrei risolvere.

    Grazie

    martedì 25 febbraio 2014 11:10
  • Se guardi nelle stored procedures che ti ho indicato, troverai la riga seguente:

    DECLARE @tbNames table(Name nvarchar(256) NOT NULL PRIMARY KEY) 
    

    Questa riga deve essere modificata in modo che tenga conto della collation, ad esempio:

    DECLARE @tbNames table(Name nvarchar(256) COLLATE Latin1_General_CI_AS NOT NULL PRIMARY KEY) 
    il db di riferimento ha una collation "Latin1_General_CI_AS",

    oppure "Japanese_90_CI_AS"?

    HTH


    Alberto Dallagiacoma
    My Italian Blog: http://blogs.ugidotnet.org/alby
    Twitter: http://twitter.com/albertodall
    DotDotNet - User Group .NET Emilia Romagna: http://www.dotdotnet.org

    • Contrassegnato come risposta SviPla martedì 25 febbraio 2014 14:34
    martedì 25 febbraio 2014 13:32