我有一个SQL Server 2005数据库,使用与我们的服务器不同的sorting规则构build。 每当我尝试运行该网站时,都会收到此错误消息:
exception消息:无法解决等于操作中“Latin1_General_CI_AS”和“SQL_Latin1_General_CP1_CI_AS”之间的sorting规则冲突
有谁知道无论如何,我可以修复错误,而不必重build数据库?
如果问题是查询,而您没有重build数据库的选项,则可以使用COLLATE关键字,例如:
SELECT * FROM OtherServer.xyz.dbo.Table2 t2 inner join myTable t1 on t1.name = t2.name COLLATE SQL_Latin1_General_CP1_CI_AS
这是COLLATE的MSDN文档 。
使用COLLATE Database_Default强制连接或比较。
这具有中立的优势,并且不会严格地对sorting规则进行编码,但是如果期望二进制或区分大小写的sorting,则具有意想不到的结果的缺点。 在这种情况下,我希望它是确定的。
SELECT * FROM dbo.ThisTable t2 join dbo.ThatTable t1 on t1.name = t2.name COLLATE Database_Default --or dbo.myTable t1 on t1.name COLLATE Database_Default = t2.name COLLATE Database_Default --or dbo.myTable t1 on t1.name COLLATE Database_Default = t2.name
解决这个问题的方法是重build数据库或重新安装SQL实例,我猜这不是你想要的。
这里有一个应用程序,声称可以为你做这个,它被称为SQL 2000联合更换器,但声称与SQL 2005一起工作。 我没有用过它,所以我不能给你一个经验,但它是一个select。 一如既往,确保您完全备份