SQL不能在同样的决心“Arabic_100_CI_AI”和规则“SQL_Latin1_General_CP1_CI_AS”之间的排序规则冲突操作
当我点击右键我的DB,这个错误似乎 “SQL无法解析之间的排序规则冲突‘Arabic_100_CI_AI’和‘SQL_Latin1_General_CP1_CI_AS’在相同的操作。无法使用视图或函数“dbo.sysdac_instances”,因为绑定错误”的SQL不能在同样的决心“Arabic_100_CI_AI”和规则“SQL_Latin1_General_CP1_CI_AS”之间的排序规则冲突操作
UPDATE 我想这个代码改变数据库的默认排序规则但是它给出了一个错误
在此先感谢。
试试下面的语法:
SELECT * FROM Table1 PT
JOIN Table2 TA ON PT.Value COLLATE DATABASE_DEFAULT = TA.Value COLLATE DATABASE_DEFAULT
哪个表/存储过程应该执行此脚本? –
@ MohamedNasr,详情请参考此URL https://www.mssqltips.com/sqlservertip/4395/understanding-the-collate-databasedefault-clause-in-sql-server/ – Mansoor
你的两个表使用不同的排序规则。你可以告诉你的查询中使用一个特定的排序是这样的:
SELECT * FROM A JOIN B ON A.Text = B.Text COLLATE SQL_Latin1_General_CP1_CI_AS
或者,如果你喜欢使用数据库的默认排序:
SELECT * FROM A JOIN B ON A.Text = B.Text COLLATE DATABASE_DEFAULT
更新
我认为你需要将数据库设置为单用户模式
use master
ALTER DATABASE yourDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE yourDB MODIFY NAME = [yourDBNew]
ALTER DATABASE yourDBNew SET MULTI_USER
此问题与's ysdac_instances'在这里解释http://dba.stackexchange.com/questions/133981 – devio