我有一个存储过程,在其中声明变量DECLARE @intCount int
并在整个存储过程中将其用作@intcount
。
我在3个数据库中执行了这个存储过程并且它们都成功执行了,但是当我在第四个数据库上执行它时它显示了一条消息
必须声明变量@intcount。
现在,当我在存储过程的每个部分将其重命名为@intCount
时,它也会在第四个数据库上执行。
这是否意味着SQL Server区分大小写?我知道它不是和我在其他3个数据库中可以观察到的一样。
有什么办法可以关闭SQL Server的这种区分大小写?
答案 0 :(得分:2)
将默认排序规则更改为不区分大小写,或编写区分大小写的SQL。
http://msdn.microsoft.com/en-us/library/ms184391.aspx
标识符的排序规则取决于标识符的定级级别。实例级对象的标识符(例如登录名和数据库名)将分配实例的默认排序规则。数据库中对象的标识符(例如表,视图和列名称)将分配数据库的默认排序规则。例如,可以在具有区分大小写的排序规则的数据库中创建两个名称仅在大小写不同的表,但可能不会在具有不区分大小写的排序规则的数据库中创建。有关更多信息,请参阅标识符。
当连接上下文与一个数据库关联时,可以创建变量,GOTO标签,临时存储过程和临时表,然后在将上下文切换到另一个数据库时引用。 变量的标识符,GOTO标签,临时存储过程和临时表都在服务器实例的默认排序规则中。