【发布时间】:2011-09-27 09:43:23
【问题描述】:
我有一个包含多个数据库的 SQL Server。我希望其中一个数据库对变量名称区分大小写,而其他数据库则不区分。
我需要更改设置,这样我才能运行此脚本而不会出错
DECLARE @A int
DECLARE @a int
如何将一个数据库更改为区分大小写(对其变量名),同时允许实例上的其他数据库对变量名不区分大小写?
【问题讨论】:
标签: sql-server sql-server-2008
我有一个包含多个数据库的 SQL Server。我希望其中一个数据库对变量名称区分大小写,而其他数据库则不区分。
我需要更改设置,这样我才能运行此脚本而不会出错
DECLARE @A int
DECLARE @a int
如何将一个数据库更改为区分大小写(对其变量名),同时允许实例上的其他数据库对变量名不区分大小写?
【问题讨论】:
标签: sql-server sql-server-2008
您需要将服务器排序规则更改为区分大小写以获得所需的行为。仅仅改变数据库的排序规则是不够的。
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? 上一个问题的一个很好的回答。
COLLATE (Transact-SQL)
标识符的排序规则取决于定义它的级别。
- 实例级对象的标识符(例如登录名和数据库名称)分配给实例的默认排序规则。
数据库中对象的标识符(例如表、视图和列名)被分配了数据库的默认排序规则。
例如,可以在具有区分大小写排序规则的数据库中创建两个名称仅在大小写不同的表,但不能在具有不区分大小写排序规则的数据库中创建。如需更多信息,请参阅Database Identifiers。
变量、GOTO标签、临时存储过程和临时表的标识符是默认的服务器实例的排序规则。
当连接上下文与一个数据库相关联时,可以创建变量、GOTO 标签、临时存储过程和临时表,然后在上下文切换到另一个数据库时引用。
您可以使用以下方法检查您的服务器排序规则:
SELECT SERVERPROPERTY('collation');
SQL_Latin1_General_CP1_CI_AS
(1 row(s) affected)
【讨论】: