我正在将数据库安装到客户的服务器上。服务器上设置的排序规则是 SQL_Latin1_General_CP1_CS_AS,因此区分大小写。

我正在安装的数据库使用排序规则级别 SQL_Latin1_General_CP1_CI_AS,因此不区分大小写。

我现在遇到的问题是存储过程中的所有变量都必须区分大小写,否则会抛出错误。

例子:

Declare @Dimension varchar(45) 
Set @dimension = 'Test' 

错误:

Must declare the scalar variable "@dimension". 

@dimension 变量中的小写“d”导致它被识别为一个完全不同的变量。

数据库中是否有我可以更新以忽略服务器排序规则的设置?

注意:我获得了在服务器级别更新排序规则的许可,因为它是测试服务器。然而,这是一个更复杂的过程。我正在寻找一种无需执行此 link 中的步骤即可解决此问题的方法:

  • 确保您拥有重新创建用户数据库及其中所有对象所需的所有信息或脚本。
  • 使用 bcp 实用程序等工具导出所有数据。有关详细信息,请参阅批量导入和导出数据 (SQL Server)。
  • 删除所有用户数据库。
  • 重建主数据库,在设置命令的 SQLCOLLATION 属性中指定新的排序规则。例如:
  • Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName<br/> /SQLSYSADMINACCOUNTS=accounts /[ SAPWD= StrongPassword ]<br/> /SQLCOLLATION=CollationName
  • 创建所有数据库和其中的所有对象。
  • 导入您的所有数据。

谢谢

请您参考如下方法:

要解决这个问题,请将您的数据库设置为 Partially Contained .这会给你 Contained Database Collation ,它提供:

Since a design objective of contained databases is to make them self-contained, the dependence on the instance and tempdb collations must be severed. To do this, contained databases introduce the concept of the catalog collation. The catalog collation is used for system metadata and transient objects.

In a contained database, the catalog collation Latin1_General_100_CI_AS_WS_KS_SC. This collation is the same for all contained databases on all instances of SQL Server and cannot be changed.


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!