La conversion implicite de valeur varchar varchar - conflit de classement
J'obtiens l'erreur suivante alors que l'exécution de ce script. J'ai essayé d'utiliser les éléments suivants:
RASSEMBLER Latin1_General_CI_AS. Veuillez peut-il être triés? Grâce
Msg 457, Niveau 16, État 1, Ligne 8
La conversion implicite de valeur varchar varchar ne peut pas être effectuée car le classement de la valeur est en suspens en raison d'un conflit de classement
DECLARE @AccountID INT
SET @AccountID = 12
SELECT TOP 1 ac.AccountID,
co.Email,
ao.AccountOptionID
FROM CRM.acc.Account ac
INNER JOIN CRM.[profile].[Profile] pr
ON pr.ProfileID = ac.ProfileFK
INNER JOIN CRM.[profile].Contact co
ON pr.ProfileID = co.ProfileFK
LEFT JOIN CRM.acc.[AccountOption] ao
ON ao.AccountFK = ac.AccountID
LEFT JOIN (
SELECT OptionID
FROM CRM.acc.[Option]
WHERE [Name] = 'SMS messages') op
ON op.OptionID = ao.OptionFK
WHERE ac.AccountID = @AccountID
UNION ALL
SELECT u.UnsubscribeID,
u.EmailAddress,
u.SentEmailFK
FROM Email.dbo.Unsubscribe u
INNER JOIN (
SELECT CASE
WHEN AccountTypeFK = 2 THEN OnlineBillingEmail
ELSE EmailBillingEmail
END [EmailAddress]
FROM CRM.acc.Account
WHERE AccountID = @AccountID
) ace
ON ace.EmailAddress COLLATE DATABASE_DEFAULT = u.EmailAddress COLLATE DATABASE_DEFAULT
WHERE ISNULL(ace.EmailAddress, '') != ''
whats ur DB classement par défaut?
RASSEMBLER Latin1_General_CI_AS
pour la DB 'Email' = Latin1_General_CI_AS et pour la DB 'CRM' = Latin1_General_CI_AS
u ne essayez d'utiliser ma réponse?
Ouais, ça donne la même erreur
RASSEMBLER Latin1_General_CI_AS
pour la DB 'Email' = Latin1_General_CI_AS et pour la DB 'CRM' = Latin1_General_CI_AS
u ne essayez d'utiliser ma réponse?
Ouais, ça donne la même erreur
OriginalL'auteur newbie_developer | 2012-08-23
Vous devez vous connecter pour publier un commentaire.
Semble que vous avez différents types de tri sur votre base de données. Ensuite, vous pouvez avoir des problèmes lors de l'assemblage des tables ou des tables dans d'autres bases de données, comme dans ce cas. Pour contourner ce problème, vous pouvez spécifier le classement de colonnes ou de force d'un classement à l'aide de la clause COLLATE lors de l'assemblage de deux colonnes. Vérifier plus d'infos sur le classement dans MSDN
Aussi, vous devez spécifier la clause COLLATE où vous êtes à l'aide de la problématique de la colonne(s). Cochez cette réponse, répondre à une question très semblable
Il est préférable de s'en tenir à un classement unique à l'échelle mondiale. Sinon vous aurez des problèmes.
Voir une explication détaillée de la classement différent styles
Édité: pour vérifier le classement de la colonne utilisation de cet extrait
Modifié: ajout de l'extrait de code pour obtenir toutes les colonnes avec classement différent sur une base de données
Cette première sentece est correct
SELECT DATABASEPROPERTYEX('CRM', 'Collation') SQLCollation
. Et en l'utilisant, vous n'avez confirmé le classement sur les deux bases de données est le même ou différent? S'ils sont égaux, alors le problème que vous avez est que les colonnes ont classement différent. Je suis en train de modifier ma réponse à ajouter un code qui vous permet de vérifier votre classement de la colonne et de voir ce qui doit être corrigé.Ouais les deux dbs ont le même classement que Latin1_General_CI_AS. Je vais juste vérifier chaque colonne maintenant, merci
Devrait PK et FK ont le nom de classement? dans la mesure où sur la vérification de son me donner la valeur null pour PK et FK où, comme pour les autres colonnes de son le même:Latin1_General_CI_AS
Ensuite, vérifiez votre colonnes de classement et de voir ce qu'il est différent. Aussi essayer d'obtenir au fond du problème, si possible, et voir pourquoi le classement est différent. Cela peut vous causer plus de problèmes à l'avenir. Une fois que vous avez 15 réputation vous pouvez voter jusqu', deux de plus pour y aller encore. Je suis en train de modifier mon answert pour ajouter un autre extrait de vérifier tous vos colonnes de classement à la fois.
OriginalL'auteur Yaroslav
essayer cette
OriginalL'auteur AnandPhadke