【发布时间】:2012-11-20 13:34:55
【问题描述】:
如何将存储过程的 COLLATION 设置为数据库默认值,而不是该过程中表的单个列。
Cannot resolve the collation conflict between “SQL_Latin1_General_Pref_CP1_CI_AS” and “Latin1_General_CI_AS” in the equal to operation
我收到排序规则冲突错误,因为数据库服务器排序规则与数据库排序规则不同。程序很大,不知道是哪个表列冲突。
是否甚至可以为存储过程分配排序规则,以使该过程中的所有列都具有相同的排序规则?
【问题讨论】:
-
我认为这样的 cmets 不会对您的事业有所帮助。我也不相信您能够在连接范围内做到这一点。我认为您最好的选择是在系统表上运行查询以尝试找出哪些列包含该排序规则,并使用这些查询结果来查看您是否可以看到任何似乎可能在您的存储过程中使用的内容。
-
抱歉我已经删除了那条评论
-
没有问题。尝试以下类似的方法,看看它是否可以缩小您的问题范围; SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLLATION_NAME = 'SQL_Latin1_General_Pref_CP1_CI_AS'
-
使用临时表时要小心,您希望它们与您正在使用的数据库具有相同的排序规则。临时表使用数据库的服务器默认排序规则。创建临时表时显式设置排序规则。创建表#TestTempTab(PrimaryKey int PRIMARY KEY,Col1 nchar COLLATE Estonian_CS_AS)。见msdn.microsoft.com/en-us/library/ms190920(v=sql.100).aspx
-
@Daniel Cabral 这是你提供给我的一些非常重要的信息,我现在会小心临时表..非常感谢先生..
标签: sql sql-server collation