SQL Server排序规则在实例级别上更改

时间:2017-09-01 17:09:19

标签: sql-server collation

从我们的应用程序创建数据库时,它采用默认的排序规则。我们不想在create database脚本中传递排序规则。

客户端在实例级别设置了一个区分大小写的排序规则。因此,为我们的应用程序创建的数据库就是我们不想要的整理。

他们可以更改实例级别的排序规则,以便创建的数据库具有所需的排序规则,并且可以将其更改回他们想要的任何内容吗?我们如何在实例级别上执行此操作?

谢谢你的时间!

2 个答案:

答案 0 :(得分:1)

您可以配置实例归类,这需要在更改数据库之前删除数据库。 Here is a link to setting or changing the Server Collation.

您也可以在数据库级别执行此操作。 Here is information on setting or changing collation on the database level.

您可能还想阅读the collation clause,它还可以应用于其他选项中的表格,列和投射表达式。

答案 1 :(得分:1)

所以问题是数据库不是由运行在SQL Management Studio中的脚本创建的,而是从应用程序内部启动的脚本。

正如评论和另一个答案中所述,更改服务器排序规则是可能的,但是毛茸茸的,在这种情况下最好的选择是创建数据库为空,更改排序规则(使用ALTER DATABASE或从Management Studio) ,然后创建数据库的其余部分。

这需要更改应用程序,但只需要创建数据库本身,因为表将采用数据库的整理,而不是服务器整理(并且您可以以适用于每个客户端的方式执行,检查是否数据库存在且该情况跳过数据库创建并继续执行其余对象。)

作为最后的警告,请注意,如果DB具有与服务器排序规则不同的排序规则,则表示DB具有与tempdb不同的排序规则,因此如果使用时态表,则如果您具有{{1 }}或WHERE混合时态和常规表。例如,假设JOIN是char列,此查询将失败并出现归类错误:

SerialNumber

如果是这种情况,您将不得不修改应用程序并将查询更改为以下内容:

SELECT *
FROM Products
JOIN #TempTable ON #TempTable.SerialNumber=Products.SerialNumber