询问者
SQL Server 2012 AlwaysOn+包含数据库 的 BUG(求确认)

问题
-
环境:
Server A(主体)
Server B(副本,可读)
Windwos 2008 R2 SP1 X64
SQL Server 2012
AlwaysON + 包含数据库
场景:
1.SQL Server 2012 搭建AlwsysOn后,ServerB通过SSMS查看可用组DB的table文件夹下,刷新本库下的table列表,一切OK,显示正常。
2.如果SQL Server 2012 搭建AlwsysOn后,再指定包含数据库,ServerB通过SSMS查看可用组DB的table文件夹下会报:
消息 451,级别 16,状态 1,第 1 行
无法解决 add 运算符(在 SELECT 语句列 1 中)中“Chinese_PRC_CI_AS”和“Latin1_General_100_CI_AS_KS_WS_SC”之间的排序规则冲突。在2的场景中,执行select tbl.name+SCHEMA_NAME(tbl.schema_id) from sys.tables as tbl 依然会报以上错误,恰恰在SQL SERVER 2012 Alwsays+包含数据库的情况下,节点SERVERB刷新table文件夹会发起类似的请求。
3.场景2中的操作在SERVER A中完全正常,SERVER A为SQL SERVER 2012 +包含数据库,单独运行TSQL也没有问题,只有在ServerB运行会出错,取消掉包含数据库,ServerB运行语句或者刷新文件夹恢复正常。
已经反复确认,SERVER A,B的服务器排序规则和DB排序规则全部为Chinese_PRC_CI_AS
个人怀疑bug,也许个人经验不足无法准确定位问题,求确认~
- 已编辑 Paddy_BJ 2012年12月19日 13:48
全部回复
-
Hi paddy_BJ,
你有按照@rmiao的方法安装了sql2012 SP1吗, 问题得到解决了吗?
如果你觉得是个bug的话,你可以把你的问题提交到:http://connect.microsoft.com/ 。
Best Regards,
Amy Peng
MSDN Community Support | Feedback to us
Develop and promote your apps in Windows Store
Please remember to mark the replies as answers if they help and unmark them if they provide no help.- 已标记为答案 Amy PengMicrosoft employee, Moderator 2012年12月27日 7:55
- 取消答案标记 Paddy_BJ 2012年12月28日 5:29
-
主从全部打完SP1后此BUG依然会出现,不过有所不同:
主机A是alwayson+包含数据库,B 为副本数据库服务器
1. B打开副本数据库->表,提示排序冲突
2. A将包含数据库选项设置成None,返回B刷新文件夹,正常,然后再设置回包含数据库
3. B再打开数据库->表,不再提示错误(重要:步骤2中,如果缺少设置成NONE,B刷新文件夹步骤,而直接设置none又马上设置会包含数据库,依然会提示排序冲突)
4. B继续打开数据库->存储过程,提示排序冲突
5. 重复步骤2的操作后,B再打开数据库->可编译性->存储过程,打开成功,不提示错误
6. B打开数据库->可编译性->函数->表值函数,提示排序冲突,再重复步骤2后,恢复正常
- 已编辑 Paddy_BJ 2012年12月28日 5:45
-
环境:
Server A(主体)
Server B(副本,可读)
Windwos 2008 R2 SP1 X64
SQL Server 2012 RTM
AlwaysON + 包含数据库
场景:
1.SQL Server 2012 搭建AlwaysOn后,ServerB通过SSMS查看可用组DB的table文件夹下,刷新本库下的table列表,一切OK,显示正常。
2.如果SQL Server 2012 搭建AlwaysOn后,再指定包含数据库,ServerB通过SSMS查看可用组DB的table文件夹下会报:
消息 451,级别 16,状态 1,第 1 行
无法解决 add 运算符(在 SELECT 语句列 1 中)中“Chinese_PRC_CI_AS”和“Latin1_General_100_CI_AS_KS_WS_SC”之间的排序规则冲突。在2的场景中,执行select tbl.name+SCHEMA_NAME(tbl.schema_id) from sys.tables as tbl 依然会报以上错误,恰恰在SQL SERVER 2012 Alwsays+包含数据库的情况下,节点SERVERB刷新table文件夹会发起类似的请求。
3.场景2中的操作在SERVER A中完全正常,SERVER A为SQL SERVER 2012 +包含数据库,单独运行TSQL也没有问题,只有在ServerB运行会出错,取消掉包含数据库,ServerB运行语句或者刷新文件夹恢复正常。
已经反复确认,SERVER A,B的服务器排序规则和DB排序规则全部为Chinese_PRC_CI_AS
SQL Server SP1下,问题依旧:
主机A是alwayson+包含数据库,B 为副本数据库服务器
1. B打开副本数据库->表,提示排序冲突
2. A将包含数据库选项设置成None,返回B刷新文件夹,正常,然后再设置回包含数据库
3. B再打开数据库->表,不再提示错误(重要:步骤2中,如果缺少设置成NONE,B刷新文件夹步骤,而直接设置none又马上设置会包含数据库,依然会提示排序冲突)
4. B继续打开数据库->存储过程,提示排序冲突
5. 重复步骤2的操作后,B再打开数据库->可编译性->存储过程,打开成功,不提示错误
6. B打开数据库->可编译性->函数->表值函数,提示排序冲突,再重复步骤2后,恢复正常
个人怀疑BUG,请各位帮忙解答下,谢谢
- 已移动 Allen Li - MSFT 2012年12月31日 7:04 Non English (发件人:SQL Server High Availability and Disaster Recovery)
- 已合并 Amy PengMicrosoft employee, Moderator 2012年12月31日 7:14 repeat
-
Make sure that collation on both Server A and Server B are same, one of the prerequisite for implementing Alwayson is to have same collation settings across the servers, please review this article for more details: http://technet.microsoft.com/en-us/library/ff878487.aspx
Thanks, Sohail ~Please mark answered if your question is completely answered; vote it as helpful to help others find a solution quicker. This posting is provided AS IS with no warranties.
-
Report it to https://connect.microsoft.com/SQLServer.
-
我的环境不是alwayson环境,只是单机环境
后来我是这样解决的:
ALTER DATABASE [pratice] COLLATE Latin1_General_100_CI_AS_KS_WS_SC
GO
将数据库原来的排序规则改为 Latin1_General_100_CI_AS_KS_WS_SC
然后检查每个对象引用的排序规则,然后逐个逐个改
例如,修改一张表某个字段的排序规则
ALTER TABLE tb ALTER COLUMN col2 VARCHAR ( 10) COLLATE Latin1_General_100_CI_AS_KS_WS_SC
GO