आप उपयोगकर्ता के लिए जो डेटाबेस में लॉग इन किया है (जो एक Windows या SQL लॉगइन हो सकता है चाहते हैं), तो आप इस्तेमाल कर सकते हैं SUSER_NAME()
समारोह में बनाया बजाय
UPDATE tblName set colName = SUSER_NAME() WHERE id=1
आप वास्तव में एसक्यूएल सर्वर प्रक्रिया (जो कि तुम क्या whoami.exe
से प्राप्त होता है) चल रहा है कि सेवा खाते चाहते हैं, आप का उपयोग कर बंद बेहतर हो सकता है sys.dm_server_services
देखें, जिसेसक्षम करने की आवश्यकता नहीं होगी(कुछ सुरक्षा जोखिम पैदा कर सकते हैं जो अगर यह ठीक से लॉक नहीं है) (ध्यान दें: इस एसक्यूएल सर्वर की आवश्यकता है कम से कम 2008R2 SP1):)
UPDATE tblName
SET colName = (
SELECT TOP 1
service_account
FROM sys.dm_server_services
WHERE servicename LIKE 'SQL Server (%')
WHERE id=1
अन्यथा
DECLARE @output TABLE (v varchar(200))
INSERT @output (v) exec xp_cmdshell 'whoami.exe'
UPDATE tblName SET colName = (select top 1 * from @output) WHERE id=1
स्रोत
2016-01-19 15:24:54
SUSER_NAME (केवल वापस लाता सा सभी कॉलम के बजाय – pee2pee
यह आपको SQL सर्वर चला रहे सेवा खाते की बजाय वर्तमान उपयोगकर्ता देगा। अपडेट करने जा रहे हैं। –
@ pee2pee, मैंने आपको कुछ अन्य विकल्प देने के लिए थोड़ा सा जवाब दिया है। मैं व्यक्तिगत रूप से 'dm_server_services' दृश्य के लिए जाऊंगा क्योंकि मैं आमतौर पर xp_cmdshell को किसी भी चीज़ में शामिल होने की चिंता नहीं करना चाहता हूं। –