Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में Msg 8116 "तर्क डेटा प्रकार varchar session_context फ़ंक्शन के तर्क 1 के लिए अमान्य है" को ठीक करें

यदि आपको संदेश के साथ SQL सर्वर त्रुटि Msg 8116 मिल रही है तर्क डेटा प्रकार varchar session_context फ़ंक्शन के तर्क 1 के लिए अमान्य है , ऐसा इसलिए है क्योंकि आप किसी फ़ंक्शन में गलत डेटा प्रकार पास कर रहे हैं - इस मामले में SESSION_CONTEXT() समारोह।

यह तब हो सकता है जब आप SESSION_CONTEXT() . पर एक स्ट्रिंग अक्षरशः पास करते हैं इसे N . के साथ उपसर्ग किए बिना कार्य करें चरित्र।

वही त्रुटि (Msg 8116) अन्य संदर्भों में भी हो सकती है - यह SESSION_CONTEXT() तक सीमित नहीं है समारोह। उदाहरण के लिए, SUBSTRING() . का उपयोग करते समय आपको वही त्रुटि मिल सकती है समारोह।

त्रुटि का उदाहरण

यहां कोड का एक उदाहरण दिया गया है जो त्रुटि उत्पन्न करता है:

EXEC sp_set_session_context 
    @key = 'language', 
    @value = 'English'; 
SELECT SESSION_CONTEXT('language');

परिणाम:

Msg 8116, Level 16, State 1, Line 4
Argument data type varchar is invalid for argument 1 of session_context function.

यहां, मैंने SESSION_CONTEXT() . के पहले तर्क के रूप में एक स्ट्रिंग पास की है , लेकिन मैंने इसके पहले N . नहीं लगाया था ।

SESSION_CONTEXT() . को दिया गया तर्क मूल्य प्राप्त करने की कुंजी है। यह sysname . प्रकार का होना चाहिए . यह मूल रूप से nvarchar(128) NOT NULL . जैसा ही है , जिसका अर्थ है कि आपको स्ट्रिंग अक्षर को N . के साथ उपसर्ग करना होगा चरित्र।

वही त्रुटि (संदेश 8116) कई अन्य संदर्भों में हो सकती है - यह SESSION_CONTEXT() तक सीमित नहीं है समारोह।

किसी भी तरह से, इसका मतलब है कि आप गलत डेटा प्रकार को फ़ंक्शन में भेज रहे हैं।

समाधान

उपरोक्त समस्या को हल करने के लिए, हमें केवल N . के साथ कुंजी को उपसर्ग करना होगा चरित्र:

EXEC sp_set_session_context 
    @key = 'language', 
    @value = 'English'; 
SELECT SESSION_CONTEXT(N'language');

परिणाम:

English

समस्या सुलझ गयी। मैंने केवल 'language' में बदलाव के साथ किया करने के लिए N'language'

जैसा कि बताया गया है, त्रुटि 8116 SESSION_CONTEXT() . तक सीमित नहीं है समारोह। किसी भी तरह से, समाधान समान है - सुनिश्चित करें कि तर्क डेटा प्रकार का है जिसे फ़ंक्शन स्वीकार करता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सी # प्रोग्राम के भीतर संग्रहीत प्रक्रिया को कैसे निष्पादित करें

  2. दो तालिकाओं को मिलाएं जिनमें कोई सामान्य फ़ील्ड नहीं है

  3. SQL सर्वर में FORMAT () द्वारा समर्थित मानक दिनांक/समय प्रारूप स्ट्रिंग्स

  4. लॉग () SQL सर्वर में उदाहरण

  5. SQL सर्वर 2008 के लिए लिंक्ड सर्वर कैसे बनाएं जहां हमारे पास 2000 और 2005 से डेटाबेस है