具有不同排序规则的数据库能否在一台服务器上相处?

时间:2016-03-07 09:06:51

标签: sql sql-server-2012 collation

所以我目前有两个SQL Server,2012年都运行不同的系统。

其中一个服务器运行latin1_general_bin的整理,另一个运行latin1_general_ci_as运行,理想情况下,我希望关闭其中一个服务器并将所有系统移至一个位置。

我知道这可以在技术上完成,但是我想知道这是不是一个好主意?我会不会给自己造成更多问题?

这两个数据库都是基于事务的,并且由外部方定义,因此无法更改其排序规则。如果我这样做,将服务器排序规则设置为latin1_general_binlatin1_general_ci_as会更好吗?我认为区分大小写的选项会更好,因为查询仍然会针对不区分大小写的数据库运行,而不区分大小写的查询需要谨慎管理

2 个答案:

答案 0 :(得分:4)

在一台服务器上使用具有不同排序规则的数据库应该没有问题。我们的一个外部供应商还提供了一个具有不同排序规则的数据库,自SQL Server 2000以来,这一过程一直没有问题。但是,您必须明确指定排序规则(或者当您想要连接表时使用collation database_default根据我自己的经验,这可能会对性能产生很大的影响。在创建新表时使用SELECT INTO时还需要小心,因为这会导致数据库或表中的混合排序。

答案 1 :(得分:2)

是的,SQL Server将整理与数据库整齐地分开。但是有一个很大的缺陷,导致我们的一个客户严重问题

如果您未明确指定排序规则,临时表CREATE TABLE #Tbl ...)将使用服务器的默认排序规则。

在我们的一个项目中,特别是使用SQL Server 2000创建的相当旧的存储过程,大量使用临时表来存储中间结果。

客户遇到了疯狂的错误,需要花费大量时间来追踪这一点。他不想改变他的服务器(由于其他数据库在那里运行)。所以我们将数据库更改为整理。在此之后,我们的一些升级脚本不再运行了...它以所有数据库更改为相同的排序规则和另一个SQL Server实例的安装结束。

哪种校对最适合您?我不知道......这取决于你的需求。你是否经常处理变音符号(看看" _as"),你想要"测试"与#34; TeSt"相等(看看" _ci")