如何将存储过程的COLLATION设置为数据库缺省值,而不是该过程中的单个表列。
Cannot resolve the collation conflict between “SQL_Latin1_General_Pref_CP1_CI_AS” and “Latin1_General_CI_AS” in the equal to operation
我收到排序规则冲突错误,因为数据库服务器排序规则与数据库排序规则不同。该过程非常庞大,我不知道哪个表列发生了冲突。
是否可以为存储过程分配排序规则,以使该过程中的所有列具有相同的排序规则?
答案 0 :(得分:6)
首先,整理是关于文本数据如何存储在表中而不是存储过程级别。
当文本数据与未存储文本整理的来源进行比较时,会出现整理问题。 (我不是在谈论文本的数据类型,只是字符串数据)
检查TSQL where子句或表连接,这是发生文本比较的最常见位置。您可以使用比较区域旁边的collate函数整理到数据库默认值。例如
SELECT
c.CustomerID
FROM
dbo.Customer c
INNER JOIN dbo.CustomerLog cl on c.CustomerName = cl.LogEntry collate
database_default
根据您的情况,这可能无法实现,但我始终遵循这些规则。
- 在安装时选择正确的服务器默认排序规则,以便在排序规则下创建tempdb,在创建临时表时,这些是在tempdb中创建的
- 创建表时除非有特定原因