我已经安装了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
答案 0 :(得分: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
),因此不会返回非文本列