Probeer dit:
UPDATE dbo.Login
SET
Salt=CAST('bPftidzyAQik' AS VARBINARY),
Password=0x2B89C2954E18E15759545A421D243E251784FA009E46F7A163926247FDB945F85F095DBB1FFF5B2B43A6ADAE27B8C46E176902412C4F8943E39528FF94E0DD5B
WHERE LoginID=10947
(je hoeft geen string te casten die een hexadecimale waarde opslaat in varbinary - dat is precies wat het standaard is, zonder de aanhalingstekens)
De vraag is, hoe genereer je die wachtwoord hex-waarde, en gebruik je dezelfde codering om het te genereren als om het te lezen? Als je van plan bent om die gegevens weer om te zetten in een string, heb je wat code nodig om dit te doen. Hier is een functie die ik heb geschreven en die dit doet:
CREATE FUNCTION ConvertBinary
(
@value AS varbinary(max)
) RETURNS VARCHAR(MAX) AS BEGIN
DECLARE @result AS varbinary(max),
@result2 AS varchar(max),
@idx AS bigint;
IF @value IS null
return null;
SELECT @result = @value;
SELECT @result2 = '';
SELECT @idx = 1;
WHILE substring(@result, @idx, 1) != 0 AND @idx < len(@result)
BEGIN
SET @result2 = @result2 + cast(substring(@result,@idx,1) as char(1));
SET @idx = @idx + 1;
END
RETURN @result2;
END
Ik weet echter niet hoe nuttig dit voor u zal zijn, aangezien het heel goed mogelijk is dat welke app dan ook die deze velden gebruikt, de waarden anders verwerkt dan deze functie verwacht. Voor de goede orde, deze functie neemt een varbinary-waarde die oorspronkelijk utf-8-tekenreeks was, en retourneert de varchar-waarde van die tekenreeks. Veel succes!