Coba ini:
UPDATE dbo.Login
SET
Salt=CAST('bPftidzyAQik' AS VARBINARY),
Password=0x2B89C2954E18E15759545A421D243E251784FA009E46F7A163926247FDB945F85F095DBB1FFF5B2B43A6ADAE27B8C46E176902412C4F8943E39528FF94E0DD5B
WHERE LoginID=10947
(Anda tidak perlu memasukkan string yang menyimpan nilai hex ke dalam varbinary - itulah yang secara default, tanpa tanda kutip)
Pertanyaannya adalah, bagaimana Anda menghasilkan nilai hex kata sandi itu, dan apakah Anda menggunakan penyandian yang sama untuk menghasilkannya seperti Anda membacanya? Jika Anda berencana mengubah data itu kembali menjadi string, Anda memerlukan beberapa kode untuk melakukannya. Inilah fungsi yang saya tulis yang melakukan ini:
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
Saya tidak tahu seberapa membantu ini bagi Anda, karena sangat mungkin aplikasi apa pun yang menggunakan bidang ini menangani nilai secara berbeda dari yang diharapkan fungsi ini. Sebagai catatan, fungsi ini mengambil nilai varbinary yang awalnya adalah string utf-8, dan mengembalikan nilai varchar dari string tersebut. Semoga berhasil!