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

अनपेक्षित चर प्रकार प्राप्त-नौकरी द्वारा लौटाया गया

<ब्लॉकक्वॉट>
  1. क्या Receive-Job को कॉल करते समय सही/अपेक्षित चर प्रकार वापस करने का कोई तरीका है? ?

पृष्ठभूमि नौकरी का उपयोग करने के कारण, आप टाइप फ़िडेलिटी खो देते हैं :जिन वस्तुओं को आप वापस प्राप्त कर रहे हैं वे विधि-रहित हैं इम्यूलेशन मूल प्रकारों में से।

मूल प्रकारों को मैन्युअल रूप से फिर से बनाना प्रयास के लायक नहीं है और यह संभव भी नहीं हो सकता है - हालांकि शायद अनुकरण के साथ काम करना पर्याप्त है।

अपडेट करें :आपके अपने उत्तर के अनुसार, System.DataSet . के साथ काम करने से स्विच करना करने के लिए System.DataTable परिणामस्वरूप आपके लिए उपयोगी अनुकरण हुए।

अधिक जानकारी के लिए नीचे का भाग देखें।

<ब्लॉकक्वॉट>
  1. क्या Invoke-Sqlcmd कमांड का उपयोग करके किसी भिन्न AD खाते के अंतर्गत SQL क्वेरी चलाने का कोई बेहतर तरीका है?

आपको प्रक्रिया में . की आवश्यकता है प्रकार की निष्ठा बनाए रखने के लिए मंगलाचरण विधि , लेकिन मुझे नहीं लगता कि यदि आप किसी अन्य उपयोगकर्ता का प्रतिरूपण करना चाहते हैं तो यह मनमाने आदेशों के साथ संभव है। ।

उदाहरण के लिए, Start-Job . के विकल्प के रूप में इन-प्रोसेस (थ्रेड-आधारित) विकल्प - Start-ThreadJob - कोई -Credential नहीं है पैरामीटर।

इसलिए आपका सबसे अच्छा दांव Invoke-SqlCmd . बनाने का प्रयास करना है का -Credential पैरामीटर आपके लिए काम करता है या किसी दिए गए उपयोगकर्ता के क्रेडेंशियल के साथ अपने प्रश्नों को चलाने का एक अलग इन-प्रोसेस तरीका ढूंढता है।

बैकग्राउंड जॉब्स/रिमोटिंग/मिनी-शेल्स में ऑब्जेक्ट्स का सीरियलाइज़ेशन और डिसेरिएलाइज़ेशन:

जब भी PowerShell प्रक्रिया सीमाओं के पारऑब्जेक्ट को मार्शल करता है , यह XML-आधारित क्रमबद्धता . का उपयोग करता है स्रोत पर, और deserialization गंतव्य पर , CLI XML . नामक प्रारूप का उपयोग करके (कॉमन लैंग्वेज इंफ्रास्ट्रक्चर एक्सएमएल)।

यह पॉवरशेल रिमोटिंग . के संदर्भ में होता है (जैसे, Invoke-Command
-ComputerName . के साथ कॉल करता है पैरामीटर) और साथ ही पृष्ठभूमि नौकरियों . में (Start-Job ) और तथाकथित मिनी-शेल (जब आप पावरशेल सीएलआई को पावरशेल के अंदर से स्क्रिप्ट ब्लॉक के साथ . कॉल करते हैं, तो इसका स्पष्ट रूप से उपयोग किया जाता है; उदा., powershell.exe { Get-Item / } )।

यह डिसेरिएलाइज़ेशन टाइप फ़िडेलिटी को बनाए रखता है केवल ज्ञात प्रकारों के सीमित सेट . के लिए , जैसा कि MS-PSRP, पॉवरशेल रिमोटिंग प्रोटोकॉल विशिष्टता में निर्दिष्ट है। अर्थात्, केवल निश्चित प्रकार के उदाहरणों को उनके मूल प्रकार के रूप में . deserialized किया जाता है ।

अन्य सभी प्रकार के उदाहरण अनुकरणित हैं :सूची जैसे प्रकार [System.Collections.ArrayList] become बन जाते हैं उदाहरण के लिए, शब्दकोश प्रकार [hasthable] . बन जाते हैं उदाहरण, और अन्य प्रकार विधि-रहित (केवल गुण) कस्टम ऑब्जेक्ट बन जाते हैं ([pscustomobject] उदाहरण) , जिसका .pstypenames संपत्ति में मूल प्रकार का नाम होता है, जिसके पहले Deserialized. . होता है (उदा., Deserialized.System.Data.DataTable ), साथ ही साथ प्रकार के आधार . के समान रूप से उपसर्ग किए गए नाम प्रकार (विरासत पदानुक्रम)।

इसके अतिरिक्त, पुनरावर्ती गहराई गैर . के ऑब्जेक्ट ग्राफ़ के लिए -[pscustomobject] उदाहरण 1 . तक सीमित हैं स्तर - ध्यान दें कि इसमें PowerShell कस्टम कक्षाओं . का उदाहरण शामिल है , class . के साथ बनाया गया कीवर्ड:यानी, यदि किसी इनपुट ऑब्जेक्ट के गुण मान स्वयं प्रसिद्ध प्रकारों के उदाहरण नहीं हैं (बाद वाले में एकल-मान-केवल प्रकार शामिल हैं, जिसमें .NET आदिम प्रकार जैसे [int] शामिल हैं। , कई गुणों से बने प्रकारों के विपरीत), उन्हें उनके द्वारा प्रतिस्थापित किया जाता है .ToString() प्रतिनिधित्व (उदाहरण के लिए, System.IO.DirectoryInfo टाइप करें) एक .Parent . है संपत्ति जो एक और System.IO.DirectoryInfo . है उदाहरण, जिसका अर्थ है कि .Parent संपत्ति का मूल्य .ToString() उस उदाहरण का प्रतिनिधित्व, जो इसकी पूर्ण पथ स्ट्रिंग है); संक्षेप में:गैर-कस्टम (स्केलर) ऑब्जेक्ट इस तरह क्रमबद्ध होते हैं कि संपत्ति मान जो स्वयं प्रसिद्ध प्रकारों के उदाहरण नहीं हैं उनके .ToString() प्रतिनिधित्व ; एक ठोस उदाहरण के लिए यह उत्तर देखें।
इसके विपरीत, स्पष्ट Export-Clixml . के माध्यम से CLI XML क्रमांकन का उपयोग 2 . की गहराई तक डिफ़ॉल्ट (आप -Depth . के माध्यम से एक कस्टम गहराई निर्दिष्ट कर सकते हैं और आप इसी तरह गहराई को नियंत्रित कर सकते हैं यदि आप अंतर्निहित System.Management.Automation.PSSerializer का उपयोग करते हैं टाइप करें सीधे )।

मूल प्रकार के आधार पर, आप हो सकता है मैन्युअल रूप से . मूल प्रकार के उदाहरणों का पुनर्निर्माण करने में सक्षम हो , लेकिन इसकी गारंटी नहीं है। (आप .pstypenames[0] -replace '^Deserialized\.' पर कॉल करके मूल प्रकार का पूरा नाम प्राप्त कर सकते हैं। किसी दिए गए कस्टम ऑब्जेक्ट पर।)

हालांकि, आपकी प्रसंस्करण आवश्यकताओं के आधार पर, इम्यूलेशन मूल वस्तुएँ पर्याप्त हो सकती हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक्सेल डेटा से इंसर्ट स्टेटमेंट कैसे जेनरेट करें और SQL सर्वर टेबल में लोड करें - SQL सर्वर / TSQL ट्यूटोरियल पार्ट 103

  2. SQL सर्वर में (nolock) के साथ क्या है?

  3. SQL सर्वर समानार्थक शब्द के साथ पहले इकाई फ्रेमवर्क कोड

  4. SQL सर्वर में JSON

  5. SQL सर्वर डेटाबेस में प्राथमिक कुंजी बाधा क्या है - SQL सर्वर / T-SQL ट्यूटोरियल भाग 54