无法解决 equal to 操作中 "Latin1_General_CI_AI" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突。
也许是SQL Server2005的一bug,也是我在开发OFrame框架的工具时遇到的问题(木think到已经有N个朋友已经遇到拉),现描述如下:
当你在SQL Server2005的查询分析器里执行如下SQL代码:
SELECT
TABLE_CATALOG,
TABLE_SCHEMA,
TABLE_NAME,
TABLE_TYPE,
ExtendedProperty.value AS ProgrammaticAlias
FROM
INFORMATION_SCHEMA.TABLES
LEFT JOIN ::FN_LISTEXTENDEDPROPERTY('ProgrammaticAlias', 'user', 'dbo', 'table', default, default, default) AS ExtendedProperty ON INFORMATION_SCHEMA.TABLES.TABLE_NAME = ExtendedProperty.objname
WHERE
TABLE_TYPE = 'BASE TABLE'
AND TABLE_NAME != 'dtProperties'
AND TABLE_CATALOG = 'OForum'
就是查询OForum数据库的扩展等信息时,他会提示你:
无法解决 equal to 操作中 "Latin1_General_CI_AI" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突。
Google搜索一下,给出的答案是:系统数据库和用户数据库的语言不一样所造成 (增加COLLATE Chinese_PRC_CI_AS限制)
通过属性查看语言完全一致。而且当你把用户数据库的语言更改成Latin1_General_CI_AI后可以执行,但是中文数据会显示成乱码。
最好的解决方法还是:增加COLLATE Chinese_PRC_CI_AS限制,修改后代码如下:
SELECT
TABLE_CATALOG,
TABLE_SCHEMA,
TABLE_NAME,
TABLE_TYPE,
ExtendedProperty.value AS ProgrammaticAlias
FROM
INFORMATION_SCHEMA.TABLES
LEFT JOIN ::FN_LISTEXTENDEDPROPERTY('ProgrammaticAlias', 'user', 'dbo', 'table', default, default, default) AS ExtendedProperty ON INFORMATION_SCHEMA.TABLES.TABLE_NAME = ExtendedProperty.objname COLLATE Chinese_PRC_CI_AS
WHERE
TABLE_TYPE = 'BASE TABLE'
AND TABLE_NAME != 'dtProperties'
AND TABLE_CATALOG = 'OForum'
在SQL Server2000下无此现象!
不知道在下是否有更好的解决方法?
谢谢
posted @ 2006-11-01 10:32
overred 阅读(1308)
评论(2) 编辑 收藏