SQL Server - Distinguir mayusculas y minusculas con pwdcompare

 
Vista:

Distinguir mayusculas y minusculas con pwdcompare

Publicado por al058030 (3 intervenciones) el 25/01/2011 17:27:17
Necesito validar un usuario y su contraseña respetando las mayusculas y minusculas.

Para ello tengo esos datos guardados en una tabla en sql server como varbinary(255) porque he utilizado la función pwdencrypt para guardarlos. Para hacer la consulta utilizo pwdcompare, de forma que da igual si lo pongo con mayusculas o minusculas me lo da como bueno.

En resumen si yo tengo como password 'jXfnjS3dS'
y hago la consulta
select * from t_tabla where pwdcompare('JXFNJS3DS',password)=1
no me debería sacar ningun registro y si que los hace.

Alguien sabe que puedo hacer, Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Distinguir mayusculas y minusculas con pwdcompa

Publicado por Miguel (10 intervenciones) el 25/01/2011 17:55:55
Es por Intercalación del servidor, yo tengo Modern_Spanish_CI_AS y si me distingue mayúsculas de minúsculas.
Prueba a cambiarlo en la BBDD master dentro de Propiedades en Opciones.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Distinguir mayusculas y minusculas con pwdcompa

Publicado por al058030 (3 intervenciones) el 26/01/2011 12:01:10
Si cambio la BBDD master tengo miles de consultas que me pueden fallar y esto no es viable .

El problema es que tanto login como password no estan guardados como tipo varchar sino como varbinary porque al guardarlos con pwdencript te los encripta en varbinary y claro el tema de la intercalación solo funciona si son tipo char, porque ya lo he probado sin encriptar como varchar y así si que funciona. Cosa que tampoco entiendo ya que al transformarse en varbinary debería distinguir los caracteres, pero no es así.

Alguna otra idea?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Distinguir mayusculas y minusculas con pwdcompa

Publicado por al058030 (3 intervenciones) el 26/01/2011 17:03:25
Bueno he encontrado la solucion con estos ejemplos que he visto en otro foro, lo pongo por si a alguien le interesa:

SELECT PWDCOMPARE( CAST('PASSWORD' AS varbinary(100)) ,PWDENCRYPT( CAST('PaSSWORD' As VARBINARY(100) )))
Returns:0

SELECT PWDCOMPARE( CAST('PASSWORD' AS varbinary(100)) ,PWDENCRYPT( CAST('PASSWORD' As VARBINARY(100) )))
Returns:1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Distinguir mayusculas y minusculas con pwdcompa

Publicado por Carlos (1 intervención) el 25/10/2011 14:20:01
me puedes indicar como lo implementaste con tu tabla, tengo el mismo problema pero no me resulta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Distinguir mayusculas y minusculas con pwdcompa

Publicado por Diego Vera (1 intervención) el 02/02/2011 02:32:34
Depende del charset que uses. Cuando usas uth8_ci, el "ci" final significa "case ignore", es decir queignora la diferencia entre mayúsculas y minúsculas.
Lo que debes usar en "bin", es decir utf8_bin, o latin1_bin, ya que esos charsets hacen una diferenciación binaria (por código binario) de los caracteres, y en ese caso "a" y "A" son diferentes...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Distinguir mayusculas y minusculas con pwdcompa

Publicado por Jhon Pacheco (1 intervención) el 09/03/2021 17:49:50
1) Incluir la versión COLLATE "Case Sensitive" (CS) en la query si es para algo puntual.
Ej: where "nombre_columna" COLLATE Latin1_General_CS_AS = 'texto_a_comparar'

2) Si nos interesa hacer un cambio más definitivo lo deberíamos hacer en la tabla, actualizándola.
ALTER TABLE "nombre_tabla"
ALTER COLUMN "nombre_columna" VARCHAR(100) COLLATE Latin1_General_CS_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar