9

असल में मैं उपयोगकर्ता को एक निश्चित पासवर्ड देने की कोशिश कर रहा हूं, इसलिए मैं सिस्टम पर कुछ कार्यक्षमता का परीक्षण कर सकता हूं, क्योंकि मेरे पास केवल हमारे व्यवस्थापक खाते हैं और मैं इसके साथ नहीं खेल सकता हूं, मैं सिर्फ एक यादृच्छिक खाता चुन रहा हूं, इसलिए मैं अपना कर सकता हूं परिक्षण।एक विशिष्ट मूल्य के साथ एक varbinary फ़ील्ड को अद्यतन करने के लिए कैसे?

UPDATE dbo.Login 
SET 
    Salt=CAST('bPftidzyAQik' AS VARBINARY), 
    Password=CAST('0x2B89C2954E18E15759545A421D243E251784FA009E46F7A163926247FDB945F85F095DBB1FFF5B2B43A6ADAE27B8C46E176902412C4F8943E39528FF94E0DD5B' AS VARBINARY) 
WHERE LoginID=10947 

यह ठीक तथापि डेटाबेस में कोड एक के लिए जापानी लग रहा है और अन्य के लिए वाक्य रचना ठीक लग रहा है लेकिन इसकी नहीं मूल्य मैं में डाल रहा हूं, मैं चाहता हूँ चलाता है: तो यहां एक अपडेट पर मेरे प्रयास है यह मेरे द्वारा लगाए गए सटीक मूल्य का उपयोग करने के लिए है, इसलिए मैं साइन इन कर सकता हूं। मैं यह कैसे कर सकता हूं? मैंने कई अलग-अलग कलाकारों की कोशिश की है और बिना किस्मत के समाधानों को परिवर्तित किया है।

+0

प्रतीक्षा - क्यों यह दोनों mysql और SQL सर्वर के साथ टैग कर रहा है? जो यह है? –

+0

क्षमाप्राज मैंने अब टैग को ठीक कर दिया है – shicky

उत्तर

25

इस प्रयास करें:

UPDATE dbo.Login 
SET 
    Salt=CAST('bPftidzyAQik' AS VARBINARY), 
    Password=0x2B89C2954E18E15759545A421D243E251784FA009E46F7A163926247FDB945F85F095DBB1FFF5B2B43A6ADAE27B8C46E176902412C4F8943E39528FF94E0DD5B 
WHERE LoginID=10947 

(आप varbinary में एक हेक्स मान भंडारण एक स्ट्रिंग कास्ट करने के लिए जरूरत नहीं है - उद्धरण चिह्नों के बिना, कि बस क्या यह डिफ़ॉल्ट रूप से है)

सवाल यह है कि , आप उस पासवर्ड हेक्स मान को कैसे बना रहे हैं, और क्या आप इसे पढ़ने के लिए उसी एन्कोडिंग का उपयोग कर रहे हैं? यदि आप उस डेटा को स्ट्रिंग में वापस बदलने की योजना बना रहे हैं, तो आपको ऐसा करने के लिए कुछ कोड चाहिए। यहाँ एक समारोह मैंने लिखा करता है कि है:

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 

मैं कितने उपयोगी इस, हालांकि आप के लिए किया जाएगा पता नहीं है, के बाद से यह बहुत संभव है कि जो कुछ भी एप्लिकेशन इन क्षेत्रों उपयोग कर रहा है इस समारोह की तुलना में अलग मूल्यों से निपटने है उम्मीद है। रिकॉर्ड के लिए, यह फ़ंक्शन एक varbinary मान लेता है जो मूल रूप से utf-8 स्ट्रिंग था, और उस स्ट्रिंग का वर्कर मान देता है। सौभाग्य!

+0

धन्यवाद जेक जो मेरा सिर कर रहा था! सभी को अभी हल किया गया है, सचमुच पासवर्ड पर उद्धरण हटाने के लिए जरूरी है :( – shicky

2

के बाद से 2008 का उपयोग कर रहे है, इस प्रयास करें:

UPDATE dbo.Login 
SET 
    Salt=CAST('bPftidzyAQik' AS VARBINARY), 
    Password=CONVERT(VARBINARY(MAX), '0x2B89C2954E18E15759545A421D243E251784FA009E46F7A163926247FDB945F85F095DBB1FFF5B2B43A6ADAE27B8C46E176902412C4F8943E39528FF94E0DD5B', 1) 
WHERE LoginID=10947 

(http://blogs.msdn.com/b/sqltips/archive/2008/07/02/converting-from-hex-string-to-varbinary-and-vice-versa.aspx)

+0

दुर्भाग्यवश अभी भी वही है, स्ट्रिंग बदल दी गई है इसलिए मुझे उस क्षेत्र में ज्ञात पासवर्ड नहीं मिल रहा है। – shicky