1

我已经安装了 SQL Server Express 2008 R2,并在安装中将排序规则设置为 Modern_Spanish_CS_AS。

在 SQL Server Management Studio 中,我可以看到服务器也有这个排序规则和我的数据库,但是,当我查询时,在我将字符串设置为条件的地方,当我使用大字符串或小字符串时,我会得到相同的结果。

这是一个新安装,但我记得在我上次安装时,它是有效的。

谢谢。

编辑:

这是创建表

CREATE TABLE [dbo].[Usuarios](
    [IDUsuario] [bigint] IDENTITY(1,1) NOT NULL,
    [NombreUsuario] [varchar](200) NULL,
    [Password] [varchar](200) NULL,
 CONSTRAINT [PK_Usuarios] PRIMARY KEY CLUSTERED 
(
    [IDUsuario] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY],
 CONSTRAINT [IX_NombreUsuario] UNIQUE NONCLUSTERED 
(
    [NombreUsuario] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

这是查询:

select * from Usuarios where NombreUsuario = 'USUARIO01';
select * from Usuarios where NombreUsuario = 'Usuario01';

两个查询都返回相同的寄存器。

编辑2:

我执行这个查询:

SELECT DATABASEPROPERTYEX(DB_NAME(), 'Collation') DBCollation,collation_name FROM sys.columns WHERE object_id=OBJECT_ID('[dbo].[Usuarios]') AND name = 'NombreUsuario'

结果是:

DB_COllation: Modern_Spanish_CS_AS
CollationName: Modern_Spanish_CI_AS
4

1 回答 1

1

更改服务器或数据库排序规则对任何现有对象都没有影响 - 它们保留指定的任何排序规则设置/在创建它们时是默认设置。

要更改现有列,您可以执行以下操作:

ALTER TABLE Usuarios
    ALTER COLUMN NombreUsuario
        [varchar](200) collate Modern_Spanish_CS_AS NULL

要查找您需要更改的所有列:

SELECT * FROM sys.columns where collation_name <> 'Modern_Spanish_CS_AS'
       and OBJECTPROPERTY(object_id,N'IsMSShipped')=0

(这很有帮助,不会返回非文本列,因为它们的排序规则是NULL

于 2013-05-17T06:27:18.420 回答