3

在 SQL Server(2000 或 2005)中,是否可以设置数据库或服务器排序规则,以便标识符名称(表、列等)需要使用正确的大小写?如果是这样,所有区分大小写的排序规则都是如此,还是单独设置?(我一直认为区分大小写适用于数据,而不是对象名称)。

如果应用程序存储的过程和查询不是以一致的大小写编写的,大概这会破坏应用程序?有没有办法处理这个问题而不必确保所有查询都使用正确的大小写,例如设置数据库连接的排序规则?

我从现有应用程序的角度来看待这个问题,该应用程序中可能包含不一致的大小写 sql 代码,并且我希望能够针对具有不同排序规则的数据库运行它。我需要哪些设置或哪些数据库/服务器排序规则不能与应用程序一起使用?

4

4 回答 4

2

排序规则决定了您的查询是否不区分大小写。因此,确保您的架构适用于多种环境的唯一方法是让您的查询区分大小写。如果您的查询不一致,那么您的排序规则必须不区分大小写,否则它将不起作用。

http://msdn.microsoft.com/en-us/library/aa174903(SQL.80).aspx

需要注意的一点是,一旦您使用某种排序规则设置了 SQL Server 环境,您就不能在不创建新的 SQL Server 实例的情况下更改它。所以不区分大小写通常是要走的路。然后努力使您的查询保持一致。

我相信,一旦设置了排序规则,它就适用于数据和元数据。

于 2009-01-30T19:22:56.007 回答
1

排序规则在 SQL Server 的早期版本中设置,但在 2005 年及以后版本中,您可以在创建对象时按对象更改它。

于 2009-01-30T19:34:17.823 回答
1

数据库默认排序规则确定数据库中的对象是否在查询中以区分大小写的方式处理 - 这适用于所有对象名称:表、列等。

如果您的应用程序代码来自不区分大小写的排序规则数据库,则如果对象被错误引用,它可能无法在区分大小写的排序规则数据库上运行(当您尝试运行语句或创建存储过程时会收到一条消息,或者在存储过程架构,除非你有大量的动态 SQL,否则你会很快捕捉到所有这些)。

请记住,即使您的代码运行,也可以使用与数据库不同的排序规则设置各个列,因此使用不同的排序规则,您的代码总是可能出现意外行为(例如,GROUP BY 的行为不同)。

于 2009-01-30T20:34:49.933 回答
0

您可以为每个对象设置排序规则,也可以为数据库和服务器设置默认值。

如何处理?您需要在这里执行标准。你可以很容易地让自己与不同的人用不同的案例纠缠在一起。

排序规则也适用于数据,所以 "bob" != "Bob"

于 2009-01-30T18:36:48.363 回答