Sql server 2005 SQL存储过程排序规则上下文

Sql server 2005 SQL存储过程排序规则上下文,sql-server-2005,collation,Sql Server 2005,Collation,嘿,我有一个问题似乎与排序有关,但我不确定 我正在开发生产数据库的备份。 SQL Server 2005环境中唯一的区别(我现在知道)是我的本地主机使用“SQL拉丁1\u General\u CP1\u CS\u AS”(区分大小写)作为排序规则,而生产环境使用“SQL拉丁1\u General\u CP1\u CI\u AS”(不区分大小写) 当我在本地执行存储过程时,它会抛出 必须声明标量变量“@firstName”错误 变量“@FirstName”已声明 现在,数据库本身是“SQL\u L

嘿,我有一个问题似乎与排序有关,但我不确定

我正在开发生产数据库的备份。 SQL Server 2005环境中唯一的区别(我现在知道)是我的本地主机使用“SQL拉丁1\u General\u CP1\u CS\u AS”(区分大小写)作为排序规则,而生产环境使用“SQL拉丁1\u General\u CP1\u CI\u AS”(不区分大小写)

当我在本地执行存储过程时,它会抛出 必须声明标量变量“@firstName”错误

变量“@FirstName”已声明

现在,数据库本身是“SQL\u Latin1\u General\u CP1\u CI\u AS”作为排序规则,那么为什么存储过程不在不区分大小写的上下文中运行呢

我在网上调查过这个问题,他们说基本上我必须重建我的SQLserver

数据库上下文不应该胜过服务器上下文进行排序吗


顺便说一句,master和tempdb都是“SQL\u Latin1\u General\u CP1\u CS\u AS”区分大小写的。

这是一种非常糟糕的情况。当您尝试执行任何涉及VARCHAR的操作时,任何不控制排序规则的操作(例如,选择到临时表中)都将中断。如果没有显式强制排序规则,那么服务器默认排序规则将胜过任何排序规则,即使不是所有现有存储过程代码,也是最重要的排序规则

此问题的正常解决方案是使用正确的排序规则重新安装SQL Server实例。是的,你确实需要这样做。我对这方面的了解是间接的,但我(从参与此问题的MS技术支持人员那里)了解到,在技术上可以更改SQL Server实例的默认排序规则,但该过程是技术性的,并且容易出错,犯错误会使服务器处于不可用状态。显然,Microsoft不支持此过程,建议重新安装SQL Server实例