首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL_Latin1_General错误

SQL_Latin1_General错误
EN

Stack Overflow用户
提问于 2016-06-16 10:07:25
回答 1查看 1K关注 0票数 1

我已经从本地数据库(MSSQL 2012)创建了.bak文件,并在活动服务器(MSSQL 2012)上还原了它。它正在工作,但有些stored_procedures没有执行,并且正在生成错误:

无法解决操作中"SQL_Latin1_General_CP1_CI_AS“和"Latin1_General_CI_AI”之间的排序冲突。

我不知道这个错误是什么以及如何解决它?

我有数千个stored_procedures.How来解决所有存储过程中的这个问题?

EN

回答 1

Stack Overflow用户

发布于 2016-06-16 11:31:50

此问题可能是“本地”Server和“活动”Server之间排序规则设置的差异,因此数据库和数据库对象使用了错误的排序规则。

在安装开发服务器时,需要密切注意服务器参数(ANSI设置、排序规则等),以确保它们与生产服务器完全匹配。这同样适用于数据库参数。关于排序规则设置如何工作的请看这篇有点古老但仍然相关的文章。

您可以通过SSMS或运行以下查询(请参阅MSDN)查找当前排序规则设置:

代码语言:javascript
复制
-- Server Collation Setting
SELECT CONVERT (varchar, SERVERPROPERTY('collation'));

-- Database Collation Settings
SELECT name, collation_name FROM sys.databases;

-- Table column Collation Settings
SELECT t.name, c.name AS ColName, *
FROM sys.tables AS t
    INNER JOIN sys.columns AS c ON t.object_id = c.object_id
WHERE not collation_name is NULL
ORDER BY t.name, column_id

在如何解决此问题时,您有两个选择:

更改数据库和所有对象的排序规则设置

要解决“活动”环境上的这种排序差异,您需要:

  1. 与生产服务器的排序规则设置匹配的更改数据库的排序规则
  2. 更改表/视图中每个列的排序规则等(请参阅此帖子)

最简单的解决方案是使用正确的排序规则设置重新创建数据库中的每个对象(在更改DB排序规则之后)。

修改您的代码

第二个选项是人们在评论中所建议的,即在代码中明确指定排序规则设置“无处不在”。这一选择应作为最后手段或绝对必要时使用(不能想出可能需要的理由)。

其他

更改服务器的排序规则也是可能的,但这并不是一个真正的选择。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37856088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档