SQL Server中的区分大小写的变量

时间:2011-07-02 19:49:11

标签: sql-server sql-server-2008

我有一个包含多个数据库的SQL Server。我希望其中一个数据库对变量名称区分大小写,而其他数据库则不区分大小写。

我需要更改设置,以便我可以毫无错误地运行此脚本

DECLARE @A int
DECLARE @a int

如何将一个数据库更改为区分大小写(对于其变量名称),同时允许实例上的其他数据库对变量名称不区分大小写?

1 个答案:

答案 0 :(得分:13)

您需要将服务器排序规则更改为区分大小写以获取所需的行为。仅更改数据库的排序规则是不够的。


SQL Server安装的默认排序规则SQL_Latin1_General_CP1_CI_AS不区分大小写。

听起来您希望将服务器的排序规则修改为不区分大小写的排序规则。选择一个_CS_CI表示“不区分大小写”,区分​​大小写为_CS。也许你会想要Latin1_General_CS_AS

这是关于Changing SQL Server collation to case insensitive from case sensitive?的上一个问题的绝佳答案。

来自SQL Server Books Online

  

COLLATE (Transact-SQL)

     

标识符的整理取决于其定义的级别。

     
      
  • 为实例级对象的标识符(例如登录名和数据库名)分配实例的默认排序规则。
  •   
  • 数据库中对象的标识符(例如表,视图和列名)将分配数据库的默认排序规则。

         

    例如,可以在具有区分大小写的排序规则的数据库中创建两个名称仅在大小写不同的表,但可能不会在具有不区分大小写的排序规则的数据库中创建。有关详细信息,请参阅Database Identifiers

  •   
  • 变量 GOTO标签临时存储过程临时表的标识符为在服务器实例的默认排序规则中。

         

    当连接上下文与一个数据库关联时,可以创建变量,GOTO标签,临时存储过程和临时表,然后在将上下文切换到另一个数据库时引用。

  •   

您可以使用以下方式检查服务器整理:

SELECT SERVERPROPERTY('collation');

SQL_Latin1_General_CP1_CI_AS
(1 row(s) affected)