我正在将数据库安装到客户端的服务器上。在服务器上设置的排序规则是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".
小写" d"在@dimension变量中,它被识别为一个完全不同的变量。
数据库中是否有可以更新的设置以忽略服务器的排序规则?
注意:我获得了在服务器级别更新排序规则的权限,因为它是测试服务器。但是,这是一个更复杂的过程。我正在寻找一种方法来解决这个问题,而无需执行此link中的步骤:
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName
/SQLSYSADMINACCOUNTS=accounts /[ SAPWD= StrongPassword ]
/SQLCOLLATION=CollationName
谢谢
答案 0 :(得分:5)
要解决此问题,请将数据库设置为Partially Contained。这将为您提供Contained Database Collation,其中提供:
由于包含数据库的设计目标是制作它们 自包含,对实例和tempdb排序的依赖 必须被切断。为此,包含的数据库引入了这个概念 目录整理。目录排序规则用于系统 元数据和瞬态对象。
在包含的数据库中,目录排序规则 Latin1_General_100_CI_AS_WS_KS_SC。这种整理对所有人来说都是一样的 包含所有SQL Server实例的数据库,但不能 改变。
答案 1 :(得分:1)
根据经验,更快的方法是备份所有数据库,然后使用正确的排序规则重新安装sql-server,然后恢复所有数据库。可能是权限的手动内容,但可以有其他选项。