2

嘿,我遇到了一个似乎与整理有关的问题,但我不确定。

我正在针对我的生产数据库的备份进行开发。SQL Server 2005 环境中的唯一区别(我现在知道)是我的本地主机具有“SQL_Latin1_General_CP1_CS_AS”(区分大小写)作为排序规则,而生产环境具有“SQL_Latin1_General_CP1_CI_AS”(不区分大小写)。

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

声明变量“@FirstName” 。

现在,数据库本身是“SQL_Latin1_General_CP1_CI_AS”作为排序规则,那么为什么存储过程不在不区分大小写的上下文中运行呢?

我已经在网上查看了这个,他们基本上说我必须重建我的 SQLserver。

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

顺便说一句,master 和 tempdb 都是“SQL_Latin1_General_CP1_CS_AS”区分大小写的。

4

1 回答 1

1

这是一个糟糕的情况。当您尝试执行任何涉及 varchars 的操作时,您无法控制排序规则的任何事情(例如 SELECT INTO 临时表)都会中断服务器默认排序规则将胜过您未明确强制排序规则的任何内容,这将是您现有存储过程代码的大部分(如果不是全部)。

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

于 2008-12-08T19:54:09.263 回答